Тема: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

С помощью LISP-файла я создаю блок определенным именем, использую функция загрузки LISP’a (ads_queueexpr), после чего ищу программно этот блок и не нахожу. После выполнения моей команды блок создается.
Почему я не могу найти его и как с этим бороться?

Re: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

> Dima
Строка, переданная в ads_queueexpr(...) в действительности отрабатывается только после того, как завершилось выполнение arx-функции (или arx-команды). Т.е. выполнение асинхронное. Если хочешь добиться синхронного выполнения определи свою функцию в lisp'е через (vl-acad-defun 'моя_функция) и вызывай ее из arx при помощи acedInvoke(...)
Удачи!

Re: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

Большое спасибо, испробую

Re: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

А еще есть варианты или только через acedInvoke?
Я так понимаю, что acedInvoke будет работать тогда, когда уже загруженный LISP-файла или я ошибаюсь?

Re: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

Dima пишет:

Я так понимаю, что acedInvoke будет работать тогда, когда уже загруженный LISP-файла или я ошибаюсь?

Да. Именно так. Можно еще через ActiveX... но не люблю я его...

Re: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

Есть еще вариант недокументированной функции для AutoCAD 2005 и 2006 (в предыдущих версиях его нет):

int acedEvaluateLisp(char const *, struct resbuf * &);

А еще посмотри здесь: https://www.caduser.ru/forum/topic15242.html

Re: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

И эта недокументированная функция тоже будет работать тогда, когда уже загруженный LISP или нет?

Re: Загрузка lsp-файла и запуск lisp-функции из ObjectARX

> Dima
По логике ей можно передать строку:

"(load \"my_lisp_file.lsp\")"

и она должна загрузить lisp-файл. Извини, но в ближайшие дня три помочь не смогу (опаздываю на поезд). Копай сам. :)