Тема: Как передать параметр в SendStringToExecute?

Уважаемые помогите,
ситуация: команда у меня заргистрирована как ACRX_CMD_TRANSPARENT | ACRX_CMD_SESSION для работы с разными документами. Когда я делаю текущим какой-либо документ с помощью acDocManager->setCurDocument(m_pDocTemplate) ф-ии acedSSGet работают как надо, но почеиу-то не хочет работать acedCommand. Есть вариант замены вызова этой ф-ии вызовом sendStringToExecute, в которой указывается в каком документе происходит обработка вызова. Но мне надо выполнить специфичную команду разорвать (_BREAK) для объекта(полилиния, дуга и т. д), а АвтоКад требует выбора сущности типа (Select object:), так вот как мне передать в вызов sendStringToExecute эту самую сущность??? Примерно так acDocManager->sendStringToExecute(curDoc(),"_Break + сущность\n", RTNONE);
Спасибо

Re: Как передать параметр в SendStringToExecute?

Функция acDocManager->sendStringToExecute(...) насколько я помню (хотя могу и ошибаться, давно дело было), должна использоваться в контексте приложения.
Чтобы оказаться в контексте приложения нужно либо создать команду, изначально отмеченную как запускающуюся из контекста приложения, либо использовать функцию

AcApDocManager::executeInApplicationContext(
    void (*procAddr)(void *)pFunc,
    void *pData ) const = 0;
pFunc    Input function pointer
pData    Input any data that should be used for the function call

Allows a void function to be called from the application context.
В любом случае, воспользуйся функцией

virtual bool AcApDocManager::isApplicationContext() const = 0;

для определения контекста

Re: Как передать параметр в SendStringToExecute?

Функцию  sendStringToExecute(...) можно вызывать  из документного  и из программного контекстов.
А вот, насколько я помню,  функция acedCommand не должна запускаться из программного контекста. Может быть,  она не работает по этой причине,  а может  из-за превышения уровня повторного вызова, на что, кстати, влияет режим ACRX_CMD_TRANSPARENT. Попробуй при создании команды использовать другой флажок.

Re: Как передать параметр в SendStringToExecute?

Если сущность представляет собой имя примитива, то его из ARX можно передать команде Автокада следующим образом :
i)  средствами ARX найти string representation of a handle (т.е. постоянную метку)  объекта и необходимые координаты точек;
ii)программно сформировать и передать в командную строку Автокада с помощью функции sendStringToExecute строку, представляющую собой функцию лиспа (command "BREAK" (handent "17f") '(10.1 20.2 0.0)?. )
Но лучше,  наверное,  реализовать свою функцию, которая бы работала аналогично функции Автокада BREAK.

Re: Как передать параметр в SendStringToExecute?

Спасибо Уважаемый VVV