检测折线区域、位置或形状的变化

Detecting changes on Polyline area, position or shape

我正在尝试修改任何折线 XData 当且仅当它的位置、面积或形状(顶点的变化)是变了。

在 AutoCAD 中执行此操作的可能方法有哪些?

在此先感谢您的帮助

当您使用 XData 时,一些 DXF codes are transformed with their owner。您可以使用代码:ExtendedDataWorldXCoordinate (1011)、ExtendedDataWorldXDisp (1012)、ExtendedDataWorldXDir (1013)、ExtendedDataDist (1041) 和 ExtendedDataScale (1042) .

但是,对于您的情况,我将使用 Database.ObjectModifiedDBObject.Modified 事件。您可以使用 this approach 查找哪些属性已被修改。

为了获得良好的性能,您应该使用 ObjectOverrule,您将覆盖 Open 方法,保存多段线的状态(如果它是为写入打开的)并将其与在 Close 方法中找到的状态。然后,为了安全起见,您可以在 CommandEnded 事件处理程序中更改 XData。

您还可以使用 DBObject.OpenedForModifyDBObject.ObjectClosed 事件。

事实上,有很多方法可以做到这一点,但ObjectOverrule似乎是最好的选择,因为你可以在XData上设置一个过滤器。当您覆盖 Close 方法时,您可以直接访问对象及其状态,而在 DBObject.ObjectClosed 事件中,您只有 Id。

Kean 有一系列关于此的帖子。他正在处理 OnCommandEnded 事件以查看一系列圆圈是否有变化 position/size.

看这里:http://through-the-interface.typepad.com/through_the_interface/2006/11/linking_circles.html