本帖最后由 尘缘一生 于 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)
- )
- ;;------------------------------------------
|