苏清寒 发表于 2023-6-26 11:31:26

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

我想只替换这个“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))
)

yaojing38 发表于 2023-6-26 12:33:51

本帖最后由 yaojing38 于 2023-6-26 12:48 编辑

替换函数有问题换这个试试(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)
)

cchessbd 发表于 2023-6-26 12:47:34

没有图吗,你这样光程序没法弄啊

llsheng_73 发表于 2023-6-26 13:28:15

不明白楼主为什么要对一个text图元进行多次替换,无图无真相只能瞎搞
(defun c:tt(/ s lst e str)
(if(setq lst'(("%%1328@200" "%%1326@200")
                ("%%1328@200" "%%1326@190")
                ("%%1328@200" "%%1326@180")
                ("%%1328@200" "%%1326@170")
                ("%%1328@200" "%%1326@160")
                ("%%1328@200" "%%1326@150")
                ("%%1328@200" "%%1326@140")
                ("%%1328@200" "%%1326@130")
                ("%%1328@200" "%%1326@120")
                ("%%1328@190" "%%1326@110")
                ("%%1328@170" "%%1326@100")
                ("8@200" "6@200")
                ("8@200" "6@190")
                ("8@200" "6@180")
                ("8@200" "6@170")
                ("8@200" "6@160")
                ("8@200" "6@150")
                ("8@200" "6@140")
                ("8@200" "6@130")
                ("8@200" "6@120")
                ("8@190" "6@110")
                ("8@170" "6@100"))
         s(ssget "x" '((0 . "TEXT")(8 . "S_TEXT_SLAB_RBAR (板钢筋文字)"))))
    (while(setq e(ssname s 0))
      (ssdel e s)
      (setq str(cdr(assoc '1 (entget e))))
      (vl-some(function(lambda(x)(if(VL-STRING-SEARCH(cadr x)str)
                                 (entmod(list(cons -1 e)(cons 1(vl-string-subst(car x)(cadr x)str)))))))lst)
      )
    )
)
页: [1]
查看完整版本: 替换某个图层中的文字代码,无法正常运行,请大神指教