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

时间:2016-06-27 10:21:43

标签: .net autocad polyline

我正在尝试修改任何折线XData 当且仅当 其位置,面积或形状(顶点的变化)发生变化时。

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

提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

当您使用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方法,保存折线的状态(如果为Write打开)并将其与找到的状态进行比较在Close方法中。然后,您可以在CommandEnded事件处理程序中更改XData,以确保安全。

您还可以使用DBObject.OpenedForModifyDBObject.ObjectClosed个活动。

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

答案 1 :(得分:1)

基恩有一系列的帖子。他正在处理OnCommandEnded事件,以查看一系列圈子是否有更改位置/大小。

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