尘缘一生 发表于 2017-12-11 23:29:07

!替换改字加换色

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

貌似不好用,能否简单介绍一下

尘缘一生 发表于 2017-12-13 08:46:07

yangchao2005090 发表于 2017-12-12 10:13
貌似不好用,能否简单介绍一下

先选择字符实体,例如:123XYZ,接着输入旧字符,比如X,接着输入,替换X的新字符,比如,输入ab

那么第一次选择的实体就变成:123abyz ,并随机改变1-8号颜色!
页: [1]
查看完整版本: !替换改字加换色