明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 989|回复: 2

[经验] !替换改字加换色

[复制链接]
发表于 2017-12-11 23:29 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2017-12-11 23:30 编辑

闲来无事,修改了经典"文字替换修改"程序,加了换色代码,发来大家讨论。
  1. ;;-------------替换改字并换色-------------------------------------------------------
  2. (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)
  3.   (setq olderr  *error*
  4.     *error* chgterr
  5.     chm     0)
  6.   (command)      
  7.   (setq p (ssget))
  8.   (setq oldlup (getvar "LUPREC"))
  9.   (setvar "LUPREC" 0);;;;精度到各位,以便后续取得标准颜色号
  10.   (if p (progn
  11.           (while (= 0 (setq osl (strlen (setq os (getstring t "\nOld string:\n ")))))
  12.             (princ "Null input invalid")
  13.           )
  14.           (setq nsl (strlen (setq ns (getstring t "\nNew string:\n "))))
  15.           (setq l 0 n (sslength p))
  16.           (while (< l n)
  17.             (if (= "TEXT"(cdr (assoc 0 (setq e (entget (setq nam(ssname p l)))))))
  18.               (progn
  19.                 (setq chf nil si 1)
  20.                 (setq s (cdr (setq as (assoc 1 e))))
  21.                 (setq cd (strlen s))
  22.                 (setq pt1 (cdr (setq pt11 (assoc 10 e))))
  23.                 (setq pt2 (cdr (setq pt22 (assoc 11 e))))
  24.                 (setq ang (angle pt1 pt2))
  25.                 (while (= osl (setq sl (strlen(setq st (substr s si osl)))))
  26.                   (if (= st os)
  27.                     (progn
  28.                       (if (= ns nil)
  29.                         (setq s (strcat (substr s 1 (1- si)) (substr s (+ si osl))))
  30.                       )
  31.                       (setq s (strcat (substr s 1 (1- si)) ns (substr s (+ si osl))))
  32.                       (setq chf t)
  33.                       (setq si (+ si nsl))
  34.                     )
  35.                     (setq si (1+ si))
  36.                   )
  37.                 )
  38.                 (if chf (progn
  39.                           (if (/= cd (setq ll (strlen s)))
  40.                             (progn
  41.                               (if (> ll cd)
  42.                                 (progn
  43.                                   (setq pt1 (polar pt1 (+ ang pi) (- ll cd)))
  44.                                   (setq pt2 (polar pt2 ang (- ll cd)))
  45.                                 )
  46.                                 (progn
  47.                                   (setq pt1 (polar pt1 ang (- cd ll)))
  48.                                   (setq pt2 (polar pt2 (+ ang pi) (- cd ll)))
  49.                                 )
  50.                               )
  51.                               (setq e (subst (list 10 (nth 0 pt1) (nth 1 pt1) 0) pt11 e))
  52.                               (setq e (subst (list 11 (nth 0 pt2) (nth 1 pt2) 0) pt22 e))
  53.                               (setq e (subst (cons 1 s) as e))
  54.                               (entmod e)
  55.                               (setq chm (1+ chm))
  56.                             )
  57.                             (progn
  58.                               (setq e (subst (cons 1 s) as e))
  59.                               (entmod e)
  60.                               (setq chm (1+ chm))
  61.                             )
  62.                           )
  63.                         )
  64.                 )
  65.               )
  66.             )
  67.             (command "CHANGE" nam "" "P" "C" (rtos (1+ (rem (getvar "CPUTICKS") 8))) "")
  68.             (setq l (1+ l))
  69.           )
  70.         )
  71.   )
  72.   (princ "Changed ")
  73.   (princ chm)
  74.   (princ " text lines.")
  75.   (terpri)
  76.   (setq *error* olderr)
  77.   (setvar "LUPREC" oldlup)  ;;;;恢复数值小数位数
  78.   (princ)
  79. )

  80. ;;------------------------------------------





"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2017-12-12 10:13 | 显示全部楼层
貌似不好用,能否简单介绍一下
 楼主| 发表于 2017-12-13 08:46 | 显示全部楼层
yangchao2005090 发表于 2017-12-12 10:13
貌似不好用,能否简单介绍一下

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

那么第一次选择的实体就变成:123abyz ,并随机改变1-8号颜色!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 06:01 , Processed in 0.335410 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表