【发布时间】:2016-06-28 19:21:44
【问题描述】:
我正在尝试修改任何折线 XData当且仅当其位置、面积或形状(顶点更改)发生更改。
在 AutoCAD 中有哪些可能的方法?
提前感谢您的帮助
【问题讨论】:
我正在尝试修改任何折线 XData当且仅当其位置、面积或形状(顶点更改)发生更改。
在 AutoCAD 中有哪些可能的方法?
提前感谢您的帮助
【问题讨论】:
当您使用 XData 时,一些DXF codes are transformed with their owner。您可以使用代码:ExtendedDataWorldXCoordinate (1011)、ExtendedDataWorldXDisp (1012)、ExtendedDataWorldXDir (1013)、ExtendedDataDist (1041) 和 ExtendedDataScale (1042)。
但是,在您的情况下,我将使用 Database.ObjectModified 或 DBObject.Modified 事件。您可以使用this approach 查找已修改的属性。
为了获得良好的性能,您应该使用 ObjectOverrule 覆盖 Open 方法,如果多段线为写入打开,则保存多段线的状态,并将其与在 @987654332 中找到的状态进行比较@ 方法。然后,您可以在 CommandEnded 事件处理程序中更改您的 XData,以确保安全。
您还可以使用DBObject.OpenedForModify 和DBObject.ObjectClosed 事件。
事实上,有很多方法可以做到这一点,但ObjectOverrule 似乎是最好的选择,因为您可以在 XData 上设置过滤器。当您覆盖 Close 方法时,您可以直接访问对象及其状态,而在 DBObject.ObjectClosed 事件中,您只有 Id。
【讨论】:
Kean 对此有一系列帖子。他正在处理 OnCommandEnded 事件以查看一系列圆圈的位置/大小是否发生变化。
看这里:http://through-the-interface.typepad.com/through_the_interface/2006/11/linking_circles.html
【讨论】: