我正在尝试修改任何折线XData 当且仅当 其位置,面积或形状(顶点的变化)发生变化时。
在AutoCAD中执行此操作的可能方法有哪些?
提前感谢您的帮助
答案 0 :(得分:1)
当您使用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
方法,保存折线的状态(如果为Write打开)并将其与找到的状态进行比较在Close
方法中。然后,您可以在CommandEnded
事件处理程序中更改XData,以确保安全。
您还可以使用DBObject.OpenedForModify
和DBObject.ObjectClosed
个活动。
事实上,有很多方法可以做到,但ObjectOverrule
似乎是最好的选择,因为您可以在XData上设置过滤器。当您覆盖Close
方法时,您可以直接访问对象及其状态,而在DBObject.ObjectClosed
事件中,您只有Id。
答案 1 :(得分:1)
基恩有一系列的帖子。他正在处理OnCommandEnded事件,以查看一系列圈子是否有更改位置/大小。
看看这里:http://through-the-interface.typepad.com/through_the_interface/2006/11/linking_circles.html