明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 756|回复: 3

[提问] 替换某个图层中的文字代码,无法正常运行,请大神指教

[复制链接]
发表于 2023-6-26 11:31:26 | 显示全部楼层 |阅读模式
5明经币
我想只替换这个“S_TEXT_SLAB_RBAR (板钢筋文字)”图层里的文字内容,在前人的代码上修改了下,无法正常运行。想请各位大神帮忙看看需要怎么修改一下?
(defun subst3(en s1 s2 /)
  (setq b (entget en))
  (setq d (assoc '1 b))
  (setq str (cdr d)); 内容

  (setq str (vl-string-subst s1 s2 str))

  (setq d2 (cons '1 str))
  (setq en2 (subst d2 d b))
  (entmod en2)
)

(setq ss (ssget "x" '((0 . "TEXT"))))
(setq sl (sslength ss))

(setq index 0)
(repeat sl
  (setq en (ssname ss index))
  (setq layer (cdr (assoc 8 (entget en))))
  (if (equal layer "S_TEXT_SLAB_RBAR (板钢筋文字)")
    (progn
      (subst3 en "%%1328@200" "%%1326@200")
      (subst3 en "%%1328@200" "%%1326@190")
      (subst3 en "%%1328@200" "%%1326@180")
      (subst3 en "%%1328@200" "%%1326@170")
      (subst3 en "%%1328@200" "%%1326@160")
      (subst3 en "%%1328@200" "%%1326@150")
      (subst3 en "%%1328@200" "%%1326@140")
      (subst3 en "%%1328@200" "%%1326@130")
      (subst3 en "%%1328@200" "%%1326@120")
      (subst3 en "%%1328@190" "%%1326@110")
      (subst3 en "%%1328@170" "%%1326@100")
      (subst3 en "8@200" "6@200")
      (subst3 en "8@200" "6@190")
      (subst3 en "8@200" "6@180")
      (subst3 en "8@200" "6@170")
      (subst3 en "8@200" "6@160")
      (subst3 en "8@200" "6@150")
      (subst3 en "8@200" "6@140")
      (subst3 en "8@200" "6@130")
      (subst3 en "8@200" "6@120")
      (subst3 en "8@190" "6@110")
      (subst3 en "8@170" "6@100")
    )
  )
  (setq index (+ index 1))
)

发表于 2023-6-26 12:33:51 | 显示全部楼层
本帖最后由 yaojing38 于 2023-6-26 12:48 编辑

替换  函数有问题  换这个试试
  1. (defun subst3(en s1 s2 /)
  2.   (setq b (entget en))
  3.   (setq d (assoc 1 b))
  4.   (setq str (cdr d)); 内容

  5.   (setq str (vl-string-subst s1 s2 str))

  6.   (setq d2 (cons 1 str))
  7.   (setq en2 (subst d2 d b))
  8.   (entmod en2)
  9. )

回复

使用道具 举报

发表于 2023-6-26 12:47:34 | 显示全部楼层
没有图吗,你这样光程序没法弄啊
回复

使用道具 举报

发表于 2023-6-26 13:28:15 | 显示全部楼层
不明白楼主为什么要对一个text图元进行多次替换,无图无真相只能瞎搞
  1. (defun c:tt(/ s lst e str)
  2.   (if(setq lst'(("%%1328@200" "%%1326@200")
  3.                 ("%%1328@200" "%%1326@190")
  4.                 ("%%1328@200" "%%1326@180")
  5.                 ("%%1328@200" "%%1326@170")
  6.                 ("%%1328@200" "%%1326@160")
  7.                 ("%%1328@200" "%%1326@150")
  8.                 ("%%1328@200" "%%1326@140")
  9.                 ("%%1328@200" "%%1326@130")
  10.                 ("%%1328@200" "%%1326@120")
  11.                 ("%%1328@190" "%%1326@110")
  12.                 ("%%1328@170" "%%1326@100")
  13.                 ("8@200" "6@200")
  14.                 ("8@200" "6@190")
  15.                 ("8@200" "6@180")
  16.                 ("8@200" "6@170")
  17.                 ("8@200" "6@160")
  18.                 ("8@200" "6@150")
  19.                 ("8@200" "6@140")
  20.                 ("8@200" "6@130")
  21.                 ("8@200" "6@120")
  22.                 ("8@190" "6@110")
  23.                 ("8@170" "6@100"))
  24.            s(ssget "x" '((0 . "TEXT")(8 . "S_TEXT_SLAB_RBAR (板钢筋文字)"))))
  25.     (while(setq e(ssname s 0))
  26.       (ssdel e s)
  27.       (setq str(cdr(assoc '1 (entget e))))
  28.       (vl-some(function(lambda(x)(if(VL-STRING-SEARCH(cadr x)str)
  29.                                    (entmod(list(cons -1 e)(cons 1(vl-string-subst(car x)(cadr x)str)))))))lst)
  30.       )
  31.     )
  32.   )
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 22:52 , Processed in 0.163642 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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