[已解决]请问通过subst修改多重引线文本出现了错位问题有办法解决吗。
本帖最后由 Leolaputa 于 2024-3-24 10:10 编辑经大佬提醒,增加了entupd后正常显示了。
---------------------------------------------------------------------------------------------------------------------------------
修改多重引线的文本后,会出现如图所示的问题。
一开始是想批量修改多重引线的文字,但是测试后会有这样的问题,要一个个双击进入编辑才会正常。
请问有办法对他们进去更新吗。
以下为测试命令。
(defun c:dcx()
(setq #str (getstring))
(SETQ #SS (ssget ":S" '((0 . "MULTILEADER"))))
(if #SS
(PROGN
(SETQ #SSNAME (ssname #ss 0))
(setq #MLdata (entget #SSNAME))
(setq #oldstr (assoc 304 #MLdata))
(setq #nwestr (cons 304 #str))
(setq #newmldata (subst #nwestr #oldstr #MLdata))
(entmod #newmldata)
(entupd #SSNAME);新增的刷新图元命令
)
)
)
ctrl+1,在特性对话框改文本内容呢? tigcat 发表于 2024-3-23 12:29
ctrl+1,在特性对话框改文本内容呢?
多重引线在默认框架下,好像除了用查找和替换是没有办法批量替换文本的,试过全选之后点特性面板,他只会打开一个又一个的文本框让你改。等于还是要一个一个改。 代码刷新一下就可以了 LPACMQ 发表于 2024-3-23 14:41
代码刷新一下就可以了
谢谢提醒,我在代码表找到了entupd,使用后确实正常刷新了图元。 谢谢分享谢谢分享谢谢分享 使用visual lisp相结合进行文本的修改不是更方便么~
代码如下:
(defun c:dcx (/ _str _ss _index _obj)
(setq_str (getstring "text? ")
_index 0
_ss (ssget ":S" '((0 . "MULTILEADER")))
)
(while (<= _index (sslength _ss))
(setq _obj (vlax-ename->vla-object (ssname _ss _index)))
(vla-put-textstring _obj _str)
(setq _index (1+ _index))
)
)
OooCcc 发表于 2024-3-26 09:45
使用visual lisp相结合进行文本的修改不是更方便么~
代码如下:
上班摸鱼党autolisp的内容看得都很吃力了,想构造Vlisp还是等以后吧。还是谢谢你了。 Leolaputa 发表于 2024-3-28 16:06
上班摸鱼党autolisp的内容看得都很吃力了,想构造Vlisp还是等以后吧。还是谢谢你了。
其实vlisp比autolisp简单很多,更容易理解哈~
页:
[1]