(изменено: Александр Иванов, 24 июля 2018г. 20:33:33)

Тема: При копировании получение доступа к вставляемому объекту до его вставки, для стирания его из истории команды отмены.

Добрый день!

При копировании объектов стандартными командами автокада я хотел бы получить доступ к вставляемому объекту до его вставки,  для стирания его из истории отмены (undo). Стирание истории отмены для всего чертежа мне не подойдет, так как нужны только определенные объекты. В событии ObjectAppended я получаю доступ к вставляемому объекту уже после его вставки, а я хотел бы получить доступ до вставки и вызвать для него:

e.DBObject.DisableUndoRecording (true);

Был бы признателен за любую подсказку, в каком направлении стоит искать.

Re: При копировании получение доступа к вставляемому объекту до его вставки, для стирания его из истории команды отмены.

DisableUndoRecording не поможет. Лучше объясните зачем это нужно. Возможно есть другой способ.

(изменено: Александр Иванов, 25 июля 2018г. 16:37:48)

Re: При копировании получение доступа к вставляемому объекту до его вставки, для стирания его из истории команды отмены.

Здравствуйте, Александр)

Не поможет, или нельзя получить доступ к вставляемому объекту до вставки?

Суть проблемы:

Я пишу приложение которое позволяет чертить линии связи (ЛС), составленные из отдельных соединенных на концах отрезков. Данные храню во внешней БД, так как работаю с несколькими чертежами.
При черчении кабеля, при создании Т образного ответвления, происходит разбиение отрезка на два отрезка в точке отведения, для удобства последующего редактирования.

Если удалить отрезок ЛС посередине, то она разобьется на две разные ЛС.

Так вот, при отмене (Undo), в месте создание Т образного ответвления, удаляется два отрезка и на их место возвращается один. Из за этого ЛС разбивается на две, чего быть не должно. Корректно обработать этот случай оказалось затруднительным.

До отмены:
http://prntscr.com/kau1ms
После отмены:
http://prntscr.com/kau1db

Я решил попробовать реализовать свой стек операции отмены, выполняющийся параллельно со стеком отмены автокада, работающий для определенных объектов программы и удаляющий их через команду Erase.

Решение работает, но проблема в том, что при копировании объектов программы и сторонних объектов получается затирать только историю отмены для всего чертежа, а хотелось бы только для объектов созданных в программе.

P.s.
Есть две копии внешней БД:
1) Соответствующий текущему чертежу.
2) Соответствующий bak файлу чертежа.

Удаленные с чертежа объекты удаляются полностью и из внешней БД, нигде далее не хранятся, в том числе и этот отрезок. Можно было бы их все хранить, помечая как удаленные... В любом случае корректно обработать удаление двух отрезков и возврат одного без разбиения ЛС мне не удалось.

Re: При копировании получение доступа к вставляемому объекту до его вставки, для стирания его из истории команды отмены.

Александр Иванов пишет:

Не поможет, или нельзя получить доступ к вставляемому объекту до вставки?

И то и другое.

Александр Иванов пишет:

Я решил попробовать реализовать свой стек операции отмены, выполняющийся параллельно со стеком отмены автокада, работающий для определенных объектов программы и удаляющий их через команду Erase.

Извините, но это бред. Всё что вы хотите сделать - делается при помощи ObjectARX (созданием custom entity). Средствами .NET это не делается.

Re: При копировании получение доступа к вставляемому объекту до его вставки, для стирания его из истории команды отмены.

Согласен что решение чересчур сложное. Спасибо за информацию)