Тема: Ожидание окончания выполнения LISP-команды.
Доброго времени суток, уважаемые!
Пролистав посты на форуме
https://www.caduser.ru/forum/topic23530.html
https://www.caduser.ru/forum/topic31519.html
https://www.caduser.ru/forum/topic15242.html
и попробовав некоторые примеры, так и не смог решить мою задачу, поэтому обращаюсь к ВАМ дорогие знатоки.
Суть в следующем:
У меня работает внешнее приложение (модальное), которое через определенный интервал времени проверяет есть ли в папке "Х" файлы с расширением "*.ххх". Как только такие файлы программа находит, она, с помощью Sendcommand("(myfunc)\n") выполняет LISP-функцию "myfunc" в AutoCADе, закрывает созданный чертеж, открывает новый и удаляет прочитаный файл, причем ARX-код дожидается выполнения LISP-команды и при этом блокируются даже кнопки внешнего приложения до окончания выполнения функции. Видимо проблема потоков и т.д., я до такого еще не дорос. :)
И так процесс повторяется пока не обработаются все файлы в папке "Х".
Вот сама функция:
void CCADBATDlg::SendCommand(CString send_str) { AutoCAD::IAcadApplicationPtr pAcadApp; // AutoCAD-Application pAcadApp.GetActiveObject(clsid); // Active AutoCAd-Application AutoCAD::IAcadDocumentsPtr pDocs = NULL;// Documents AutoCAD::IAcadDocumentPtr pDoc = NULL; // Document if (pAcadApp != NULL) { pAcadApp->get_Documents(&pDocs); pAcadApp->get_ActiveDocument(&pDoc); if(pDoc != NULL) { _bstr_t str; str = send_str; // Здесь рааботает LISP-функция, ARX ожидает окончания работы LISP. pDoc->SendCommand(str); // ARX закрывает документ и открывает новый. CloseDoc(""); OpenDoc(""); } } }
Теперь я решил написать внутреннее приложение для AutoCADа(НЕмодальное) и для вызова той же LISP-функции "myfunc" использую
acDocManager->sendStringToExecute(acDocManager->curDocument(), _T("(myfunc) "));
И вот здесь как раз и начались проблемы.
ARX-код выполняется дальше и в какой-то момент, с задержкой, вдруг выполняется LISP-функция.
Мой вопрос: Как дождаться выполнения LISP-функции, а потом продолжить выполнение ARX-кода дальше?
И еще один вопрос, как правильно, после создания чертежа, закрыть его и открыть новый?
Заранее спасибо за помощь!