Тема: Создание документа в команде

Зарегистрировал команду с флажками:
ACRX_CMD_SESSION | ACRX_CMD_USEPICKSET | ACRX_CMD_REDRAW
Мне надо взять текущий selection set. Сделать новый документ и в новом документе для каждого старого объекта из selection set-а, создать новый.
Все получается проблема лишь в том, что когда я запускаю команду, открывается новый документ, в него засыпается все барахло что мне надо, я сразу закрываю документ не возвращаясь к тому, в котором запустил команду. Команда остается незавершенной и Автокад подвисает ожидая завершение команды при этом что-либо ввести нельзя. Закрыть акад можно только по диспетчеру задач. Если я не закрываю новый документ и переключаюсь на предыдущий, то там команда быстренько завершается и все OK.
Как это победить?

Re: Создание документа в команде

> KonstantinM
Так почему бы тебе в программе после работы с новым документом не вернуться сразу к старому?

Re: Создание документа в команде

P.S.: Да вообще по тму, что ты написал не понятно зачем создавать новый документ если достаточно создать AcDbDatabase и в него скопировать все что нужно.

Re: Создание документа в команде

:)
Мне не достаточно скопировать все что нужно.
1) Я выделяю набор объектов на текущем чертеже.
2) Создаю новый документ.
3) Строю аксонометрию для выбранных объектов. ( Типа круг переходит в элипс и т.п.). Т.е. мне надо по старым объектам создать новые в новом документе и открыть этот документ чтоб пользователь радостно зрел это безобразие.
Если я буду включать старый документ, то пользователь (с неокрепшим мозгом) не поймет ЩО ЦЕ ЭТО БЫЛО т.к. не поймет что резалт операции лежит в другом документе под текущим и надо лезть в окошки и переключать их.

Re: Создание документа в команде

> KonstantinM
Как вариант создать аксонометрию в этом же чертеже на свободном месте (или в другом Layout'е), а после того как пользователь посмотрел - стереть.

Re: Создание документа в команде

Раньше у меня было так:
Запускал команду и просил выделить объекты для аксонометрички, потом шел весь процессинг. Все работало. Но выделяемые объекты были "без ручек".
Теперь мне надо чтоб пользователь в результате третих операций выбрал объекты и дальше запускал команду на создание аксонометрии. У него больше ничего не спрашивается, а берется уже выделенный selection set. При таком подходе и получается "упс", когда команда не завершается если пользователь посмотрит аксонометрию и закроет ее если она не понравилась без переключения на оригинал...

Re: Создание документа в команде

Мне надо по любому в новый документ...

Re: Создание документа в команде

Ладно. Тогда создай реактор на закрытие документа и в нем активизируй страый документ.

Re: Создание документа в команде

А такой вариант.
1) Сначала зарегистрить команду как
MODAL, в ней получить selection set и запомнить его.
2) Сразу из первой посылать другую команду session, которая в selection set уже лезть не будет, а тупо построит что надо в новом документе...
Только я забыл как из команды послать на выполнение другую, которая начнет выполняться сразу по завершению первой.

Re: Создание документа в команде

Помогло :)
Сделал команду:
ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET | ACRX_CMD_REDRAW
в ней получил selection set, запомнил массив объектов и позвал.
acDocManager->sendStringToExecute(acDocManager->curDocument(), _AUSC("MAKE_ACSO_SS\n"));
А команда MAKE_ACSO_SS сделана как:
ACRX_CMD_SESSION
В этой команде и делаю весь остальной процессинг...

Re: Создание документа в команде

Как выяснилось в дальнейшем - эта была "наведенная" ошибка. Т.е. следствие другой менее явной.
Короче, если все правильно написано, то USEPICKSET и SESSION вместе работают и в условиях создания нового документа в рамках одной команды. :)