Leolaputa 发表于 2024-3-23 12:10:40

[已解决]请问通过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);新增的刷新图元命令


                         )
      )
)



tigcat 发表于 2024-3-23 12:29:36

ctrl+1,在特性对话框改文本内容呢?

Leolaputa 发表于 2024-3-23 14:10:49

tigcat 发表于 2024-3-23 12:29
ctrl+1,在特性对话框改文本内容呢?

多重引线在默认框架下,好像除了用查找和替换是没有办法批量替换文本的,试过全选之后点特性面板,他只会打开一个又一个的文本框让你改。等于还是要一个一个改。

LPACMQ 发表于 2024-3-23 14:41:21

代码刷新一下就可以了

Leolaputa 发表于 2024-3-24 10:08:24

LPACMQ 发表于 2024-3-23 14:41
代码刷新一下就可以了

谢谢提醒,我在代码表找到了entupd,使用后确实正常刷新了图元。

yefei812678 发表于 2024-3-24 14:47:18

谢谢分享谢谢分享谢谢分享

OooCcc 发表于 2024-3-26 09:45:29

使用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))
)
)

Leolaputa 发表于 2024-3-28 16:06:27

OooCcc 发表于 2024-3-26 09:45
使用visual lisp相结合进行文本的修改不是更方便么~
代码如下:

上班摸鱼党autolisp的内容看得都很吃力了,想构造Vlisp还是等以后吧。还是谢谢你了。

OooCcc 发表于 2024-3-29 11:12:58

Leolaputa 发表于 2024-3-28 16:06
上班摸鱼党autolisp的内容看得都很吃力了,想构造Vlisp还是等以后吧。还是谢谢你了。

其实vlisp比autolisp简单很多,更容易理解哈~
页: [1]
查看完整版本: [已解决]请问通过subst修改多重引线文本出现了错位问题有办法解决吗。