替换某个图层中的文字代码,无法正常运行,请大神指教
我想只替换这个“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: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)
)
没有图吗,你这样光程序没法弄啊 不明白楼主为什么要对一个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]