我只是盲目地修改了代码,并没有改变您编写代码的方式,以便您能够在以后需要时修改它,所以只需测试以下mod并让我知道;
- (defun c:cleanup (/ col count ent ent_data ent_lay ent_name hgt1 len new_lay new_tstyle obj_lay ssetmtxt)
- (if (setq ssetmtxt (ssget "_X" '((0 . "*TEXT"))))
- (progn
- (setq len (sslength ssetmtxt)
- count 0)
- (while (< count len)
- (setq ent (ssname ssetmtxt count)
- ent_data (entget ent)
- ent_name (cdr (assoc 7 ent_data))
- ent_lay (cdr (assoc 8 ent_data))
- hgt1 (cdr (assoc 40 ent_data))
- )
- (cond
- ((wcmatch ent_name "ROMANS")
- (setq new_tstyle
- (cond ((vl-position hgt1 '(1.3 2.6 6.5 13.0 26.0 32.5 65.0 130.0)) "13-TEXT")
- ((vl-position hgt1 '(1.8 3.6 9.0 18.0 36.0 45.0 90.0 180.0)) "18-TEXT")
- ((vl-position hgt1 '(2.5 12.5 62.5 250.0)) "25-TEXT")
- ((vl-position hgt1 '(3.5 7.0 17.5 35.0 70.0 87.5 175.0 350.0)) "35-TEXT")
- ((vl-position hgt1 '(5.0 10.0 25.0 50.0 100.0 125.0 500.0)) "5-TEXT")
- (t "7-TEXT")
- )
- ))
- ((wcmatch ent_name "TXT-#,TXT-##")
- (setq new_tstyle
- (cons 7
- (strcat (substr ent_name 5) "-TEXT")))
- (setq obj_lay (strcat "TEXT-" (substr ent_name 5)))
- (setq new_lay
- (cons 8 (strcat "TEXT-" (substr ent_name 5))))
- (cond
- ((= obj_lay "TEXT-13") (setq col 1))
- ((= obj_lay "TEXT-18") (setq col 7))
- ((= obj_lay "TEXT-25") (setq col 7))
- ((= obj_lay "TEXT-35") (setq col 2))
- ((= obj_lay "TEXT-5") (setq col 5))
- ((= obj_lay "TEXT-7") (setq col 6))
- )
- (or (tblsearch "LAYER" obj_lay)
- (command "-Layer" "m" obj_lay "C" col "" "")
- )
- (vla-put-layer (vlax-ename->vla-object ent) obj_lay)
- )
- )
- (entmod
- (subst (cons 7 new_tstyle) (assoc 7 ent_data) ent_data))
- (setq count (1+ count))
- )
- )
- )
- (princ)
- )
- (vl-load-com)
|