文本之间的链接
当编辑第二个更改的文本时,lisp是否可以在两个文本之间创建链接我用field做,但需要很长时间。 也许是使用对象反应器? 我不明白。
解释plz 好的,您提供了一个带有VLA对象(所有者)列表的对象反应器,当列表中的任何对象被修改时(取决于回调数据),反应器将启动。
因此,您可能可以将文本对象的句柄存储在其扩展数据中,以便在触发对象反应器时,程序知道链接了哪些对象。
李 还要注意,为了使反应器正常工作,必须在图形中加载LISP例程。 这不是Lisp程序的答案,但:
链接两个对象(如文本)的简单方法是将文本制作成块。
然后,您可以将该块复制到任何位置,并根据需要制作尽可能多的副本。因此,当您编辑一个块时,所有其他块都会更新。
要编辑文本块,双击它,将出现“块信息”对话框,然后单击“确定”,将出现“参照编辑”工具栏框。现在双击要编辑的文本,完成后单击“参照编辑”工具栏上的最后一个按钮,以更新图形中的所有相同块。
我在画作中经常使用这种技巧来完成笔记。
注意:如果单击“参照编辑”工具栏上的红色X关闭按钮,它将消失,并且屏幕仍处于参照编辑模式。如果发生这种情况,只需键入refedit,工具栏就会重新出现。
对于lisp解决方案,您需要使用一个使用vlr修改的对象反应器,
vlr openedForModify事件和vlr复制的事件。
所以基本上
程序将要求用户选择文本(如果嵌入lisp,则将emane传递给程序)。
然后程序将反应堆连接到该对象。
vlr复制事件将用于将反应堆连接到文本的新副本
vlr openedForModify首先获取原始文本(DXF代码1),并将其保存到变量中
vlr modified事件将使用ssget,使用来自vlr openedForModify的变量来获取所有类似的文本对象,然后更改它们的文本。
我看到的问题是,如果您有50个类似的文本对象,则会为每个对象触发vlr修改事件,即使由于ssget将它们剔除,它不会更改其他文本。这将是大量的程序执行,毫无意义。我不认为这会因为文本对象的数量而变得糟糕,只是可能需要更多的时间来完成大量的对象。
有人对此有想法吗 我只是想链接特定的文本对象,通过将它们的句柄存储在对象的扩展数据中,然后反应器很快知道要查找哪些对象。
如本例所示:
http://www.cadtutor.net/forum/showpost.php?p=251211&postcount=12 正如OP所说的“在两个文本之间”,所以李提到的选项也是我的方法。
我怀疑这两个文本对象可能不完全相同,但共享一些需要更新的数据。 谢谢Alan
Asos,这将帮助您编写对象扩展数据的句柄,只需创建一个有效的应用程序字符串(用于“app”参数)来标识数据。
(defun putxdat (Obj App Data / ent type1 valeur)
(setq xtype
(vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbInteger '(0 . 1)) '(1001 1000))))
(setq xval
(vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbVariant '(0 . 1)) (list App Data))))
(vla-setXData Obj xtype xval))
我认为需要更多信息
问题:
会有两个以上的文本对象吗?
两个文本对象中的数据是否总是相同的,或者只是部分文本将被更改?
这是多行文字还是单行文字?
页:
[1]
2