Тема: Как поймать окончание команды?

Необходимо отловить окончание команды. Т.е. команда еще не закончена, но сейчас будет закончена.
Есть ли что-то подходящее для этого в API... Посмотрел реакторы - пок аничего похожего не нашел... только commandEnded()...

Re: Как поймать окончание команды?

> KonstantinM
А кроме comandEnded() больше ничего и нет. Тут видимо нужно разбираться, что ты собираешься делать перед самим завершением команды, чтобы понять каким путем двигаться...

Re: Как поймать окончание команды?

> Александр Ривилис
Короче у меня такой трабл.
Я по ходу команды в стек событий - записываю всякие события. Когда команда завершается, то дергается beginQuistentState - и я по этому событию все команды разбадяживаю...
Но есть такой глючок - если при обработке событий вне команды я модифицирую объекты в базе, то вроде все ок. Но!
1) выделил объкт, потащил за grip поинты
2) Объект тащится.
3) Отпускаю. Команда заканчивается.
4) Обрабатывается эвенты. Пусть потащили так что в базе произвелись модификации в частности над объектом который тащили.
5) Беру тот же объект опять за grip точку и пытаюсь тащить - но опаньки... хоть сдвиг и показывается, но moveGripPoints не вызывается. Т.е. копии таскаемой по экрану нет.
6) Как только любая команда проходит (можно ткнуть ESC) сразу все становится OK.
Делаю вывод что при модификации базы вне команды (базу лочу и все такое) - происходит какое-то изменение состояния. Чтоб вернуться в валидное надо ткнуть какую-нибудь команду или просто ESC или просто веести что-нибудь с консоли и ткнуть ентер.
Т.е. есть какой-то нюанс - типа подергать graphicsModified или базе ткнуть какой метод - чтоб что-то шевельнулось...
Жду совета и Ваших мыслей.

Re: Как поймать окончание команды?

> KonstantinM
А разве нельзя добавить реактор на те entity, модификации которых нужно отлавливать?

Re: Как поймать окончание команды?

> KonstantinM
1) Можно попробовать вместо обычной модификации примитивов вне команды использовать транзакции.
2) Можно по завершении своих операций вне команды послать в AutoCAD команду ESC, или определить свою команду, которая ничего не делает и посылать ее.
И еще посмотри пример в Help'е по поводу работы с примитивами в методе AcEditorReactor::commandEnded
А вообще что-то конкретное сказать сложно. Запусти ARXDBG, включи слежение за реакторами и посмотри, что происходит и как все по твоему должно происходить. Может это натолкнет тебя на правильные мысли.

Re: Как поймать окончание команды?

И еще вспомнил. Не забудь вызывать:

actrTransactionManager->queueForGraphicsFlush();
actrTransactionManager->flushGraphics();

Re: Как поймать окончание команды?

> Александр Ривилис

> Александр Ривилис
Попробывал flushGraphics - не помогло.
Относительно того - слать свою команду - :) ну примерно в этом русле мысли и шли, но этож банальная залепуха... которая может и решит как-то проблему, но не убьет корень зла :)
А выяснил я такое обстоятельство. Опосля того как я меняю объект вне команды - его состояние меняется, однако графика (почему-то частично) не обновляется. Т.е. попробую щас звать при закрытие объекта, когда в нем что-то поменял - recordGraphicsModified, может поможет...

Re: Как поймать окончание команды?

1) Вставил recordGraphicsModified на закрытие всех моих объектов, которые модифицирую. Не помогло.
2) Пока смотрел на то что же происходит по beginQustientState - нашел баг почему графика рефрешилась частично... поправил... Е-МОЕ! баг с тасканием объектов пропал... каким боком его зацепило там не знаю. В результате изменений - чуток по другому пошел порядок обработки моих событий, а следовательно лазание в базу... и каким-то боком это "шевельнуло" в нужную сторону систему и она перестала глючить...

Re: Как поймать окончание команды?

> KonstantinM
А! Сам виноват! smile