Использование AutoLISP в макросах
 
 
 

Создание команд, использующих AutoLISP, является более совершенным способом использования функции настройки AutoCAD.

Переменные AutoLISP и выражения можно использовать для создания макросов, выполняющих сложные задачи. Для эффективного использования AutoLISP в макросах следует поместить код AutoLISP в отдельный файл MNL. AutoCAD загружает файл MNL при загрузке файла НПИ с тем же именем из той же папки.

Можно указать дополнительные файлы AutoLISP для загрузки в редактор настройки пользовательского интерфейса. Создание команд, использующих AutoLISP, является более совершенным способом использования функции настройки AutoCAD. Рекомендуется внимательно изучить рассматриваемые ниже примеры, а также сведения, приведенные в справочнике по AutoLISP и в руководстве разработчика AutoLISP. Для доступа к дополнительным источникам справочной информации выберите пункт меню "Справка""Дополнительные ресурсы""Документация для разработчиков".MNL-файлы загружаются в память вместе с файлами меню, носящими то же имя.

Вызов макроса

Для программного выполнения макроса раскрывающегося меню используйте следующий синтаксис.

(menucmd "Gгруппа_меню.element_ID=|")

Использование такого синтаксиса имеет эффект только в том случае, если макрос меню является частью меню, находящегося в троке меню AutoCAD и готового к использованию. Дополнительную информацию о синтаксисе см. в документации Справка по AutoLISP

Установленные значения

Приложение, использующее заданные настройки для вставки блока, приводит следующие команды: [Set WINWID][Set WALLTHK][Insert Window]

^C^C^P(setq WINWID (getreal "Задайте ширину окна: ")) ^P
^C^C^P(setq WALLTHK (getreal "Задайте толщину стен: ")) ^P
^C^C_INSERT window XScale !WINWID YScale !WALLTHK

Здесь производится вставка блока “Window“, масштаб которого по оси X равен текущей ширине окна, а по оси Y - текущей толщине стены. В этом примере фактические значения извлекаются из заданных пользователем символов AutoLISP WINWID и WALLTHK. Поскольку возможность поворота зависит от пользователя, данное окно может быть повернуто на стене.

Изменение размера ручек

При использовании следующих команд регулировку размера ручек можно выполнять сразу.

^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)
^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)

Для добавления проверки корректности к этим командам значение системной переменной GRIPSIZE не может быть меньше 0 и больше 255.

Подсказка для пользовательского ввода

Следующий элемент запрашивает задание двух точек и рисует полилинию в виде прямоугольника, в углах которой находятся указанные точки.

^P(setq a (getpoint "Enter first corner: "));\+
(setq b (getpoint "Enter opposite corner: "));\+ 
pline !a (list (car a)(cadr b)) !b (list (car b)(cadr a)) c;^P