Создание команд, использующих 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"Enter window width: ")) ^P
^C^C^P(setq WALLTHK (getreal"Enter wall thickness: ")) ^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
Ваш комментарий об этой странице |