!替换改字加换色
本帖最后由 尘缘一生 于 2017-12-11 23:30 编辑闲来无事,修改了经典"文字替换修改"程序,加了换色代码,发来大家讨论。;;-------------替换改字并换色-------------------------------------------------------
(defun C:CHGTEXT (/ nam cd ang p l n e os as ns st s nsl osl sl si chf chm olderr pt1 pt2 pt11 pt22)
(setq olderr*error*
*error* chgterr
chm 0)
(command)
(setq p (ssget))
(setq oldlup (getvar "LUPREC"))
(setvar "LUPREC" 0);;;;精度到各位,以便后续取得标准颜色号
(if p (progn
(while (= 0 (setq osl (strlen (setq os (getstring t "\nOld string:\n ")))))
(princ "Null input invalid")
)
(setq nsl (strlen (setq ns (getstring t "\nNew string:\n "))))
(setq l 0 n (sslength p))
(while (< l n)
(if (= "TEXT"(cdr (assoc 0 (setq e (entget (setq nam(ssname p l)))))))
(progn
(setq chf nil si 1)
(setq s (cdr (setq as (assoc 1 e))))
(setq cd (strlen s))
(setq pt1 (cdr (setq pt11 (assoc 10 e))))
(setq pt2 (cdr (setq pt22 (assoc 11 e))))
(setq ang (angle pt1 pt2))
(while (= osl (setq sl (strlen(setq st (substr s si osl)))))
(if (= st os)
(progn
(if (= ns nil)
(setq s (strcat (substr s 1 (1- si)) (substr s (+ si osl))))
)
(setq s (strcat (substr s 1 (1- si)) ns (substr s (+ si osl))))
(setq chf t)
(setq si (+ si nsl))
)
(setq si (1+ si))
)
)
(if chf (progn
(if (/= cd (setq ll (strlen s)))
(progn
(if (> ll cd)
(progn
(setq pt1 (polar pt1 (+ ang pi) (- ll cd)))
(setq pt2 (polar pt2 ang (- ll cd)))
)
(progn
(setq pt1 (polar pt1 ang (- cd ll)))
(setq pt2 (polar pt2 (+ ang pi) (- cd ll)))
)
)
(setq e (subst (list 10 (nth 0 pt1) (nth 1 pt1) 0) pt11 e))
(setq e (subst (list 11 (nth 0 pt2) (nth 1 pt2) 0) pt22 e))
(setq e (subst (cons 1 s) as e))
(entmod e)
(setq chm (1+ chm))
)
(progn
(setq e (subst (cons 1 s) as e))
(entmod e)
(setq chm (1+ chm))
)
)
)
)
)
)
(command "CHANGE" nam "" "P" "C" (rtos (1+ (rem (getvar "CPUTICKS") 8))) "")
(setq l (1+ l))
)
)
)
(princ "Changed ")
(princ chm)
(princ " text lines.")
(terpri)
(setq *error* olderr)
(setvar "LUPREC" oldlup);;;;恢复数值小数位数
(princ)
)
;;------------------------------------------
貌似不好用,能否简单介绍一下 yangchao2005090 发表于 2017-12-12 10:13
貌似不好用,能否简单介绍一下
先选择字符实体,例如:123XYZ,接着输入旧字符,比如X,接着输入,替换X的新字符,比如,输入ab
那么第一次选择的实体就变成:123abyz ,并随机改变1-8号颜色!
页:
[1]