小师傅 发表于 2014-9-28 11:15 
谢谢黄大师,我马上试试
看看是不是这个意思:
 - (defun c:ttrim (/ ss i l0 en ne eg ng e0 e1 j sr)
- (command ".color" (getvar "cecolor"))
- (if (not acet-tjust)
- (load "acetutil3")
- )
- (setq sr (getstring "\n输入分隔字符: "))
- (if (member sr '("*" "#" "@" "." "?" "~"))
- (setq sr1 (strcat "`" sr))
- (setq sr1 sr)
- )
- (princ "\n选择需要去分隔符的文本: ")
- (setq ss (ssget (list '(0 . "TEXT") (cons 1 (strcat "*" sr1 "*")))))
- (if ss
- (progn
- (setq l0 (sslength ss)
- i -1
- )
- (acet-tjust ss "R")
- )
- )
- (repeat l0
- (setq i (1+ i)
- en (ssname ss i)
- eg (entget en)
- e1 (cdr (assoc 1 eg))
- )
- (if (wcmatch e1 (strcat sr1 "*"))
- (progn
- (setq e1 (vl-string-left-trim sr e1)
- eg (subst (cons 1 e1) (assoc 1 eg) eg)
- )
- (entmod eg)
- )
- )
- (if (wcmatch e1 (strcat "*" sr1))
- (progn
- (acet-tjust (ssadd en) "S")
- (setq eg (entget en)
- e1 (cdr (assoc 1 eg))
- e1 (vl-string-right-trim sr e1)
- eg (subst (cons 1 e1) (assoc 1 eg) eg)
- )
- (entmod eg)
- )
- (acet-tjust (ssadd en) "S")
- )
- (while (wcmatch e1 (strcat "*" sr1 "*"))
- (setq eg (entget en)
- ng (entmake eg)
- ne (entlast)
- ng (entget ne)
- e0 (cdr (assoc 1 ng))
- e0 (substr e0 1 (setq j (vl-string-search sr e0)))
- ng (subst (cons 1 e0) (assoc 1 ng) ng)
- )
- (entmod ng)
- (acet-tjust (ssadd en) "R")
- (setq eg (entget en)
- e1 (cdr (assoc 1 eg))
- e1 (vl-string-left-trim sr (substr e1 (+ j 1)))
- eg (subst (cons 1 e1) (assoc 1 eg) eg)
- )
- (entmod eg)
- (setq eg (entget en)
- e1 (cdr (assoc 1 eg))
- )
- (acet-tjust (ssadd en) "S")
- )
- )
- (princ)
- )
这是以前一个小程序改的,需要ET支持。
原帖:http://bbs.mjtd.com/thread-99236-1-1.html |