Тема: Undo не работает?

После создания пользовательского объекта не работает комманда Undo, почему бы это? Может быть я не реализовал какие-то методы базового класса?

Re: Undo не работает?

А в переопределённых функциях ти вызываешь assertWriteEnabled()?

Re: Undo не работает?

Да окнечно вызываю!

Re: Undo не работает?

1) Undo не работает вообще, или только для пользовательского объекта?
2) Ты уверен, что во всех методах, которые модифицируют объект вызывается assertWriteEnabled() и/или соответствующий метод родительского класса?
3) Ты не забываешь закрывать объект, после его открытия?
4) Версия AutoCAD и ObjectARX?
P.S. Может выложишь куда-нибудь код для проверки?

Re: Undo не работает?

1)Undo на мои пользовательские объекты
2)Да проверил во всех методах, все впорядке
3) все в норме 4)Версии подходящие ObjectArx 2005 и Autocad 2005
Попробовал убрать реактор, без него все океюшки!
буду смотреть чего там не так!

Re: Undo не работает?

> Миша
Реактор случайно не AcEditorReactor::commandEnded, в котором ты пытаешься модифицировать свой примитив? Тогда все ясно...

Re: Undo не работает?

Да это он, точно...??? В чем может быть проблема с ним??

Re: Undo не работает?

> Миша
Уууу! Мрак...:( Могу кое-что посоветовать, но будет ли работать в твоем случае - не знаю:
1) Не использовать транзакции в этом реакторе.
2) Попробуй в этом методе реактора:

// Запрещаем запись Undo
ТвойОбъект->disableUndoRecording (true);
// Здесь модифицируем объект
ТвойОбъект->updateData();
ТвойОбъект->recordGraphicsModified();
// Восстанавливаем запись Undo
ТвойОбъект->disableUndoRecording (false);
ТвойОбъект->close();

Но это не все. Если в AcEditorReactor::commandWillStart - имя команды UNDO или U, то ты не должен производить обработку своего примитива в AcEditorReactor::commandEnded.
Теоретически должно помочь...