Создание команд, использующих AutoLISP, является более совершенным способом использования функции адаптации.
Переменные AutoLISP и выражения можно использовать для создания макросов, выполняющих сложные задачи. Когда программа загружает файл CUI/CUIx, она также загружает файл MNL с тем же именем и в той же папке. Размещение кода AutoLISP в файле MNL является эффективным способом загрузки пользовательских команд, которые можно использовать в макросах.
В данном примере рассматриваются три макроса команд, используемые для вставки блока.
Макрос команды запрашивает ширину окна.
^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P
Макрос команды запрашивает толщину стены.
^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P
Макрос команды вставляет блок с именем "окно" и выдается запрос о точке вставки и угле поворота.
^C^C_INSERT window XScale !WINWID YScale !WALLTHK
Ось X блока — для текущей ширины окна, а ось Y — для текущей толщины стены.
В этом примере рассматриваются два макроса команд, которые увеличивают или уменьшают текущее значение системной переменной GRIPSIZE.
Макрос команды увеличивает значение системной переменной GRIPSIZE на 1.
^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)
Макрос команды уменьшает значение системной переменной GRIPSIZE на 1.
^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
Используя следующий синтаксис, можно программно выполнить макрос элемента раскрывающегося меню:
(menucmd "Gcustomizationgroup.element_ID=|")
Использование такого синтаксиса имеет эффект только в том случае, если макрос элемента является частью меню, находящегося в строке меню программы и готового к использованию.