При использовании 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
, сохранить состояние ломаной линии, если он открыт на запись и сравнить его с состоянием найденного в методе Close
. Затем вы можете изменить XData в обработчике событий CommandEnded
, чтобы быть в безопасности.
Вы также можете использовать события DBObject.OpenedForModify
и DBObject.ObjectClosed
.
Фактически, есть много способов сделать это, но ObjectOverrule
представляется лучшим вариантом, так как вы можете установить фильтр на XData. И когда вы переопределяете метод Close
, у вас есть прямой доступ к объекту и его состоянию, тогда как в событии DBObject.ObjectClosed
у вас есть только Id.