;全角字符和半角字符的问题 - (defun c:zbth (/)
- (setq os (getvar "osmode"))
- (setvar "osmode" 0)
- (setvar "cmdecho" 0)
- (princ "\n请选择要替换的文字对象:")
- (setq obj (ssget '((0 . "*TEXT"))))
- (repeat (setq m (sslength obj))
- (setq name (ssname obj (setq m (1- m))))
- (setq objdata (entget name))
- (setq class (cdr (assoc 0 objdata)))
- (setq old (assoc 1 objdata))
- (setq old_text (cdr old))
- (setq num (strlen old_text))
- (setq n 1 new_text "")
- (while (<= n num)
- (if (> (ascii(setq text (substr old_text n 1))) 127) (progn
- (setq text (substr old_text n 2))
- (if (and (wcmatch text "主,备") (= (substr old_text (+ 2 n) 2) "用")) (progn
- (setq text (if (= text "主") "备用" "主用"))
- (setq n (+ n 4))
- )
- (setq n (+ n 2))
- )
- )
- (setq n (1+ n))
- )
- (setq new_text (strcat new_text text))
- )
- (entmod (subst (cons 1 new_text) old objdata))
- )
- (setvar "osmode" os)
- (prin1)
- )
|