В этом уроке мы познакомимся с интерфейсом редактора Visual LISP, который является основным средством для написания программ AutoLisp.
AutoLisp – язык программирования, при помощи которого вы можете создавать новые пользовательские программы для AutoCAD, повышая тем самым его производительность.
Структура программы на языке AutoLisp:
- Каждая программа содержит одну или несколько функций AutoLisp.
- Любая функция начинается с открывающейся скобки.
- После открывающейся скобки следует имя функции.
- Если у функции есть аргументы, они следуют после имя функции.
- Для разделения компонентов внутри скобок используют пробелы и кавычки.
- Заканчивается функция закрывающейся скобкой.
Пример арифметической функции на AutoLisp:
(+ 10 5) – читается: сложить десять с пятью.
+ — имя функции (следует сразу после открывающей скобки);
10 и 5 – аргументы (следуют после имя функции; после последнего аргумента стоит закрывающая скобка)
Основным средством для написания программ на AutoLisp служит редактор Visual Lisp, который в первые появился в Автокад 2000. В нем присутствует развитая среда программирования с инструментами поиска ошибок. Редактор Visual Lisp интегрирован в Автокад и запускается только из активного окна.
Запустить его можно набрав в командной строке «VLISP» («VLIDE») и нажав клавишу <Enter>. Или на ленте выбираем вкладку «Управление» и на панели «Приложение» щелкаем на пункте «Редактор Visual Lisp». См. Рис. 1.
Редактор Visual Lisp включает в себя четыре окна. См. Рис. 2:
- Окно текстового редактора. В этом окне мы будем набирать программу.
- Окно «Консоль Visual Lisp». В нем можно вводит имена переменных и проверять фрагменты кода.
- Окно «Трассировка». Используется для поиска ошибок.
- Окно «Сообщения сборки». Вывод результат проверки содержимого окна текстового редактора.
Текст написаный в текстовом редакторе показывается с использованием различных цветов. Цвета текста описаны в таблице №1.
Таблица №1
Коричневый на сером фоне | Комментарии, которые начинаются точкой с запятой (; комментарий) |
Цвет | Область применения |
Синий | Функции AutoLISP (DEFUN, setq) |
Пурпурный | Последовательность символов, находящихся в кавычках («_Line») |
Черный | Пользовательская информация. Имена переменных и пользовательских функций. |
Зелёный | Целые числа (10 5) |
Бирюзовый | Вещественные числа, которые имеют десятичную точку (27.7 15.9) |
Перед тем, как приступить к написанию программы, давайте изучим панели инструментов.
Обзор панелей инструментов Visual Lisp
В редактор Visual Lisp входят пять панелей инструментов:
- Стандартная
- Инструменты
- Поиск
- Отладка
- Вид
Панель инструментов «Стандартная»
Первые девять кнопок соответствуют аналогичным кнопкам других приложений Windows. См. Рис. 3. Кнопка «Дописать слово» дает возможность редактору Visual Lisp дописать начатое вами слова.
Откройте новый файл, наберите «de» и нажмите на кнопку «Дописать слово» (или нажмите на клавиатуре сочетание клавиш <Ctrl> + <Shift> + <Space>). Visual Lisp допишет слово до «defun». Далее наберите «get» и снова нажмите на кнопку «Дописать слово». Visual Lisp выдаст список возможных вариантов дописывания слова. В этот список входят имя, встроенных в Visual Lisp, стандартных функции. См. Рис. 4.
Панель инструментов «Инструменты»
На панели «Инструменты» расположены следующие кнопки см. Рис. 5:
- «Загрузить активное окно редактора» — загружает в AutoCAD каждую строчку окна редактора, если в ней нет ошибок.
- «Загрузка выделенного фрагмента» — загружает только выделенный текст.
- «Проверить содержимое окна редактора» — проверяет структуру всего содержимого окна. Результат проверки выводится в окне «Сообщения сборки».
- «Проверка выделенного фрагмента» — проверяет структуру выделенного текста.
- «Форматировать содержимое окна редактора» — форматирует весь текст в окне в соответствиями с правилами, которые вы можете менять. Форматирование меняет внешний вид программы, делает ее более читабельной, и не влияет на ее работу. На Рис. 6. показан не форматированный текст.
Щелкните мышкой внутри окна (сделайте текстовое окно активным) и нажмите кнопку «Форматировать содержимое окна редактора». Текст будет отформатирован см. Рис. 7.
- «Форматирование выделенного фрагмента» — форматирует только выделенный текст.
- «Закомментировать блок» — добавляет точку с запятой в начало выделенных строк. Visual Lisp воспринимает такие строки как комментарии и они не влияют на работу программы.
- «Раскомментировать блок» — отменяет предыдущую команду, т. е. убирает из начало строк точку с запятой. После этого Visual Lisp воспринимает эти строки, как часть программы.
- «Справка» — служит для получения справочной информации.
Панель инструментов «Поиск»
Эта панель предназначена для операций поиска и замены в текстовом редакторе Visual Lisp См. Рис. 8. На ней расположены следующие кнопки:
- «Найти» — открывает одноименное окно.
- «Заменить» — открывает одноименное окно.
- «Поиск строки на панели инструментов» — кнопка работает вместе с раскрывающимся списком, и выполняет поиск символа, имя которого выбрано в этом списке или введено в список с клавиатуры.
- «Закладка Вкл/Выкл» — дает возможность установить в тексте закладки. См. Рис. 9.
- «Следующая закладка» — переходит от одной закладки к другой в том порядке, в котором закладки были проставлены.
- «Предыдущая закладка» — переходит от одной закладки к другой в обратном порядке.
- «Удаление всех закладок» — убирает из окна все закладки.
Панель инструментов «Отладка»
Панель инструментов «Отладка» имеет следующие кнопки см. Рис. 10:
- «Точка останова Вкл/выкл» — Позволяет установить места, в которых при выполнении программы произойдет остановка. Используется для проверки программы на наличие ошибок. Места останова выделяются красным см Рис. 11.
Дойдя до точки останова, программа останавливается и ждет указания от пользователя о возможном варианте продолжения работы. Для продолжения используются кнопки:
- «Шаг с заходом».
- «Шаг с обходом».
- «Шаг с выходом».
- «Продолжить» — продолжает выполнение программы от текущей точки останова.
- «Выйти» — останавливает выполнение текущего цикла и подымается на один уровень выше.
- «Сброс» — останавливает выполнение программы.
- «Добавить контрольное значение» добавляет переменные в окно «Контрольное значения». В этом окне можно отслеживать текущее значение переменных см. Рис. 12.
- «Последний останов»
Панель инструментов «Вид»
Панель инструментов «Вид» имеет следующие кнопки см. Рис. 13:
- «Активизация AutoCAD» — делает активным окно AutoCAD.
- «Выбрать окно» — позволяет поменять активное окно, выбрав его из списка см. Рис.14.
- «Консоль Visual LISP» — делает активным окно Консоль Visual LISP.
- «Изучить» — открывает окно «Изучение». См. Рис. 15.
- «Трассировка» — — открывает окно «Стек Трассировки». См. Рис. 16.
- «Окно отладки символов» — открывает одноименное окно. См. Рис. 17.
- «Справочный список» — открывает окно «Справочный список найденных символов». См. Рис. 18.
- «Окно контрольных значений» — открывает одноименное окно. См. Рис. 12.
На этом наше знакомство интерфейсом редактора Visual LISP окончено. В дополнение к этому уроку смотрите видео: AutoLISP и Visual LISP
В следующем уроке мы рассмотрим пример простой программы на языке LISP. Подробно разберем ее программный код.
Пишите комментарии. Я с удовольствием отвечу на ваши вопросы.
Если вы хотите получать новости с моего сайта. Оформляйте подписку.
До новых встреч.
«Автор: Михаил Орлов»
Очень круто, жду следующее видео! Спасибо.
Постараюсь записать в ближайшее время.
Спасибо, все очень понятно)
Здравствуйте! У меня вопрос: возможно ли в Автокад Электрикал 2013 с помощью АвтоЛисп создать диалоговое окно, в котором будут выпадающие списки, каталожных данных компонентов цепи (например вертикальная цепь из: мотор-автомата, пускателя и двигателя) и после выбора каталожных данных мы нажимаем «Ок» и строится цепь с уже назначенными данными.
В Автокад Электрикал никогда не работал, не знаю. Просто в Автокаде можно создавать диалоговые окна. Смотрите статьи:
http://acad-prog.ru/dialogovoe_okno/
http://acad-prog.ru/dialogovoe-okno-avtokad/
Хотелось бы узнать о выходе следующих уроков:-)). Это возможно?
В данный момент нет свободного времени. Ближе к осени обязательно появится, что нибудь новое.
Добрый день, сможете сказать в чем может быть проблема?
Сделал из кода файла mp_kub команду квадрат назвал kv_rt и загрузил его в автокад но когда вызываю команду kv_rt автокад ее не распознает почему так?
(DEFUN c:kv_rt (/ p1 p2 p3 p4) ;
(setq p1 (getpoint «\nÓêàæèòå áàçîâóþ òî÷êó : «)) ;
(setq p2 (polar p1 0 200)) ;
(setq p3 (polar p2 (/ pi 2) 200)) ;
(setq p4 (polar p3 pi 4) 200)) ;
(setq osn (getvar «osmode»)) ;
(setvar «osmode» 0) ;
(command «_line» p1 p2 p3 p4 p1) ;
(setvar «osmode» osn) ;
) ;
Возможно, дело в кавычках. В программе везде должны стоять кавычки с английской раскладки клавиатуры «. Если проблема не в этом, пришлите мне Ваш LISP-файл на почту: acadprog@gmail.com. Я Вам отвечу точно.
Давно мучает один простой вопрос.Примеры из литературы( неисполнимы лично мною) на практике.Пример: программа выполняется если вводится в командной строке чертежа и не выполняется если вводить с консоли.Где искать причины.Спасибо за любой даже односложный ответ.
Пришлите пример мне на почту: acadprog@gmail.com
Спасибо за ваш ответ.
(defun c:label ( / xyz)
(setq xyz (getpoint «Pick point:»))
(command «_text» xyz 900 0 xyz)
)
Префикс С: перед названием создаваемой команды говорит о том, что это название будет использоваться для запуска команды из командной строки. Уберите префикс С: и тогда для запуска команды можно использовать и командную строку и консоль. Только название команды должно быть взято в скобки (label)