Запуск функции, когда подпрограмма загружается через приложение (autoLISP) - PullRequest
0 голосов
/ 02 августа 2020

То, что я пытаюсь сделать, довольно просто, у меня есть процедура, и я хочу, чтобы, когда кто-то загружает ее в autocad, на экране появляется всплывающее окно с небольшим объяснением того, что он делает. Я знаю, как сделать всплывающее окно, но понятия не имею, как заставить его запускаться именно при загрузке подпрограммы, есть ли предложения?

1 Ответ

1 голос
/ 02 августа 2020

На самом деле это очень легко достигается: короче говоря, вы просто включаете выражение alert вне любого выражения defun в файле AutoLISP, так что выражение alert вычисляется немедленно, когда содержимое AutoLISP файл оценивается при загрузке.

Например:

(defun c:test ( )
    (princ "\nThis is the main function.")
    (princ)
)

(alert "Type \"test\" to run the main function.") ;; This will be displayed on load
(princ)

При загрузке указанного выше файла AutoLISP интерпретатор прочитает содержимое файла AutoLISP и немедленно оценит все содержащиеся в нем выражения AutoLISP. в нем.

В результате выражение defun будет вычислено первым и определит функцию c:test, которая затем может быть выполнена в командной строке AutoCAD в результате префикса c:.

Выражение alert затем будет вычислено и при желании отобразит окно сообщения для пользователя.

Наконец, будет вычислено закрывающее выражение (princ) и вернет нулевой символ в командную строку, чтобы получить «чистую загрузку» . Если бы последнее выражение (princ) было опущено, выражение alert вернуло бы значение nil в командную строку.

...