 - ;;X,+,nt,ml文本交换
- ;;by edata @mjtd 2015-7-22
- (defun c:tt(/ elist en new_str ss str)
- (princ "\n选择包含X,+,nt,ml的文本")
- (if(setq ss(ssget '((0 . "text")(1 . "*+*,*X*,*NT*,*ML*"))))
- (while (setq en (ssname ss 0))
- (setq elist(entget en))
- (setq str(cdr(assoc 1 elist)))
- (setq new_str (sk_change_str str))
- (entmod(subst(cons 1 new_str)(assoc 1 elist)elist))
- (setq ss(ssdel en ss))
- )
- )
- (princ)
- )
- ;;X,+,nt,ml字符交换
- (defun sk_change_str (str / i lst s str1 a lst+ lstnt lstx str+ strx)
- (setq lst (sk_brstr str " ") str1 "")
- (while(setq a(car lst))
- (cond
- ((wcmatch a "*X*")
- (setq lstx(sk_brstr a "X"))
- (setq strx(strcat (cadr lstx) "X" (car lstx)))
- (setq str1(strcat str1 " " strx))
- )
- ((wcmatch a "*+*")
- (setq lst+(sk_brstr a "+"))
- (setq str+(strcat (cadr lst+) "+" (car lst+)))
- (setq str1(strcat str1 " " str+))
- )
- ((wcmatch a "*NT*")
- (setq lstnt(vl-string-subst "ML" "NT" a ))
- (setq str1(strcat str1 " " lstnt))
- )
- ((wcmatch a "*ML*")
- (setq lstnt(vl-string-subst "NT" "ML" a ))
- (setq str1(strcat str1 " " lstnt))
- )
- (t (setq str1(strcat str1 (if (/= str1 "") " " "") a)))
- )
- (setq lst(cdr lst))
- )
- (if (/= str1 "") str1 nil)
- )
- ;;字符串分割by edata
- (defun sk_brstr (str br / I LST S STR1)
- (setq i 0
- lst '()
- str1 ""
- )
- (while (and (setq s (substr str (setq i (1+ i)) 1)) (/= s ""))
- (if (/= s br)
- (setq str1 (strcat str1 s))
- (if (/= str1 "")
- (setq lst (cons str1 lst)
- str1 ""
- )
- )
- )
- )
- (if (/= str1 "")
- (setq lst (cons str1 lst)
- str1 ""
- )
- )
- (setq lst (reverse lst))
- )
- (vl-load-com)
- (princ)
|