Sorry, you have been blocked
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
What can I do to resolve this?
You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
Cloudflare Ray ID: 7c81bba0db59c25b • Your IP: Click to reveal 138.199.34.31 • Performance & security by Cloudflare
Урок 2. Пример простой программы на LISP.
LISP или AutoLISP это традиционный язык программирования для AutoCAD. С его помощью можно создавать свои программы в любой области проектирования. Создание таких программ избавляет пользователя от типовых, рутинных операций и существенно повышают производительность работы в AutoCAD.
В этом уроке мы рассмотрим пример простой программы на языке LISP. Подробно разберем ее программный код. В следующих уроках, двигаясь от простого к сложному, мы будем ее постепенно усложнять и модифицировать. Я надеюсь, что в результате, вы получите знания, которые сделают вашу работу в Автокад более эффективной.
Приставленные примеры предполагают, что у читателя уже есть начальные знания работы в AutoCAD.
Для выполнения примера нам понадобиться только программа AutoCAD. Специальная инсталляция AutoLISP не требуется. Он поставляется с каждой копией AutoCADа.
И первое с чего мы должны начать – это поставить перед собой задачу. И в качестве примера я предлагаю написать программу, которая попросит нас указать базовую точку р1. и после указания, построит куб со сторонами 200.

Программный код мы будем писать в редакторе «Visual Lisp». Чтобы его открыть, в начале нужно запустить AutoCAD.
Далее на ленте выбираем вкладку «Управление» и на панели «Приложение» щелкаем на пункте «Редактор Visual Lisp»
Создаем новый файл: щелкаем на кнопку обведенную красным .
И в открывшимся окне, набираем текст нашей программы или копируем его с сайта
Программный код на языке LISP:
Скачать программу Mp_kub.lsp (Размер файла: 449 bytes)
В программном коде после «;» можно оставлять свои комментарии, которые в дальнейшем никак не влияют на выполнение команды.
Давая имя командам и файлам, стараемся присвоить им уникальные имена. Чтобы в дальнейшем избежать пересечения со стандартными командами или с командами созданными другими пользователями. Я назову наш файл и команду «mp_kub» (подразумевая my program Kub)
В конце сохраняем нашу программу в удобном для вас месте. Я сохраняю ее в папке «D:/MyLisp» под именем «mp_kub».

Теперь, чтобы использовать нашу программу в AutoCADе, ее предварительно нужно загрузить. Щелкаем по кнопке выделенной зеленым .
Если программа набрана без ошибок. Ниже в окне «Консоль Visual LISP» появиться надпись о том, что наша программа загружена.

Переходим в AutoCAD, вводим «mp_kub» в командную строку и нажимаем Enter.

Появится подсказка: «Укажите базовую точку :» Щелкните в любой точки рабочего окна AutoCAD и он нарисует куб.

ДОПОЛНИТЕЛЬНЫЕ ПОЯСНЕНИЯ .
Давайте более подробно разберем функции языка LISP, которые мы использовали в программном коде.
Создание функции пользователя с именем «mp_kub».
Префикс «с:» означает, что эту функцию можно будет использовать как стандартную команду AutoCAD. Достаточно ввести имя в командную строку AutoCADа.
( / p1 p2 p3 p4 p5 p6 p7 p8 ) – временные переменные, которые используются в выражениях.
Функция getpoint – даёт возможность пользователю указать точку при помощи мыши.
Результатом функции будут координаты точки указанные пользователем.
«\nУкажите базовую точку : » — текст приглашения.
Префикс «\n» означает переход на новую командную строку.
Функция присвоения (setq p1 <значение>) позволяет сохранить <значение> в переменной p1.

Функция ( polar p1 0 200 ) вычисляет координаты точки отстоящей от точки р1 на расстояние 200 в направлении луча образующим с ось Х угол 0 радиан.
( setq p2 <значение> ) — Затем эти координаты присваиваются р2 .
Функция command выполняет стандартные функции AutoCADа. В нашем случаи проводит отрезки по точкам с координатами р1, р2, р3, р4, р1 .
«_line» — имя стандартной функции AutoCAD.
Таким образом в этой статье мы узнали:
Как запускать редактор Visual Lisp.
Как создавать программу на языке Lisp.
Как загружать программу и как запускать ее на выполнение.
Чтобы лучше, понять, как работают функции, поэкспериментируйте с ними, поменяйте какие либо значения, посмотрите, как это повлияет на результат.
В дополнение к этому уроку смотрите видео: Пример простой программы на LISP.
В следующем уроке мы будем учится создавать кнопку для запуска своих программ.
Пишите в комментариях: все ли у вас получилось?; трудно ли было выполнить этот урок?; где у вас возникли трудности? Я с удовольствием отвечу на все ваши комментарии.
Программирование в среде Visual LISP
Цель лекции: приобрести навыки работы с интегрированной средой разработки и составить простые процедуры.
Запуск среды Visual LISP
Файл с текстовым кодом AutoLISP можно создавать в блокноте. Однако пользователям предлагается специальный удобный интерфейс — IDE (Integrated Development Environment ) . Интегрированная среда разработки предназначена для создания кода, отладки его и тестирования программы AutoLISP . Запуск среды производится по команде Tools — AutoLISP — Visual LISP Editor . Можно также набрать в командной строке команду Vlide . Окно Visual LISP показано на рис. 2.1.

В строке заголовка приведен адрес открытого файла в окне AutoCAD . Ниже строки меню расположены панели инструментов:
- Standard ;
- Search ;
- Debug ;
- View ;
- Tools .
В рабочей области размещены три окна:
- файл AutoLisp с расширением .LSP , открытый по команде File — Open File ;
- консоль Visual LISP Console ;
- отладчик Trace .
В среде заголовка файла AutoLISP отображается пиктограмма в виде чистого листа бумаги. Если в файл внесены изменения, то к пиктограмме добавляется изображение карандаша.
Создание процедуры
Выполните команду File — New File . В окне введите текст процедуры, который приведен ниже:
Хотя текст здесь разбит на строки, это сделано только для наглядности. Все тело процедуры и каждый оператор в отдельности заключены в круглые скобки. Количество открывающих и закрывающих скобок должно быть одинаковым. Позиция закрывающей скобки несущественна. Если имеются встроенные скобки, то интерпретатор обрабатывает в первую очередь выражение во внутренних скобках. Результат этой обработки используется далее для обработки выражения во внешних скобках.
Любой текст после точки с запятой считается комментарием. Слова «Creates a line of length 10 relative X» интерпретатором не обрабатываются. Эти слова пишут, чтобы облегчить понимание процедуры читающими их людьми.
Первая строка начинается со слова defun (DEfine FUNction) — определение функции. Далее идет имя функции с:line10 . Можно было бы написать просто line10 . Но тогда для запуска процедуры в AutoCAD нужно набирать в командной строке ( line10 ), т.е. это имя в скобках. Задание имени процедуры с префиксом с: позволяет вызывать ее как простую команду путем набора имени line10 .
Последним элементом в первой строке является выражение (/pt). pt — это переменная (от слова point ). Так как перед именем переменной стоит слеш (прямая косая черта), то это локальная переменная. Она хранит какое-то значение , которое используется только в данной процедуре. Чтобы эта переменная была доступной и в других процедурах, надо сделать ее глобальной. Для этого нужно записать ее определение без слеша — (pt) . При задании нескольких переменных они перечисляются через пробел . Если переменные не задаются, то круглые скобки оставляют пустыми.
Вторая строка выводит в командной строке текст Please click a point: (Пожалуйста, укажите точку: . В командную строку выводится текст в кавычках, стоящий после оператора princ .
В третьей строке вначале выполняется команда getpoint , заключенная во внутренних скобках. Можно перевести это как «получить координаты точки, заданной пользователем«. При этом пользователь вправе воспользоваться любым методом задания координат: набрать числа в командной строке, щелкнуть в нужном месте экрана или использовать объектную привязку. В любом случае программа считывает заданные координаты . Говорят, что функция getpoint «возвращает свое значение «.
Следующей выполняется команда в наружной паре скобок: setq pt (getpoint) . Оператор setq присваивает переменной pt значение , возвращаемое функцией getpoint . Например, мы щелкнули в точке с координатами 5,10. Тогда переменная pt примет значение 5,10.
В четвертой строке процедуры стоит выражение command «_line» pt «@10,0» «» . Функция command просто отправляет на выполнение любую следующую команду AutoCAD , заключенную в кавычки. В данном случае это команда построения отрезка line . Напоминаем, что нижнее подчеркивание вводится для команд на английском языке только в локализованных (русских) версиях.
При выполнении этой команды вначале запрашиваются координаты первой точки. Затем запрашиваются координаты второй точки. В соответствии с этими запросами после имени команды записаны параметры команды. На запрос Specify first point: берется значение переменной pt . На запрос Specify next point or [Undo]: берется значение @10,0 . Напомним, что знак @ означает задание относительных координат.
Четвертая строка заканчивается пустыми кавычками. Это эквивалентно нажатию клавиши ENTER , т.е. приводит к окончанию операции .
Таким образом, программирование в среде AutoLISP сводится к заданию всех параметров команды в том порядке, какой наблюдается при черчении в пространстве модели . AutoCAD делает запрос о выборе параметра команды или о значении параметра. Ответ он находит в процедуре AutoLISP .
Редактирование и запуск процедуры
Редактор Visual LISP автоматически раскрашивает набранный текст в зависимости от элемента синтаксиса:
- Голубой — встроенные функции и защищенные символы;
- Пурпурный — текстовые строки;
- Зеленый — целые числа;
- цвет морской волны — действительные числа;
- пурпурный на сером фоне — комментарии;
- красный — скобки;
- черный — нераспознанные элементы.
Для форматирования кода процедуры можно нажать кнопку Format Edit Window панели инструментов Tools или запустить команду Tools — Format Code in Editor . Если вы хотите форматировать только выделенный фрагмент процедуры, то нужно щелкнуть по кнопке Format Selection .
Типичные ошибки в синтаксисе (несоответствие скобок, неверное употребление функций и пр.) можно обнаружить, щелкнув по кнопке Check Edit Window (Check Selection) . Результаты проверки отобразятся в окне Build Output .
При необходимости можно преобразовать выделенный операторный блок программы в комментарий нажатием кнопки Comment Block . Такая операция часто применяется при настройке программы.
Для выполнения процедуры в AutoCAD выполните следующие действия:
- загрузите код программы в активное окно AutoCAD щелчком по кнопке Load active edit window ;
- в окне Console введите выражения ( c:line10 ↵) — откроется окно AutoCAD с приглашением: Command: ‘VLIDE Please click a point: ;
- укажите точку любым способом — щелкните мышью по экрану или наберите координаты в командной строке. В пространстве модели будет построен отрезок. Затем снова откроется окно Visual LISP ;
- щелкните в окне текстового редактора и сохраните файл в папке \AutoCAD 2007\Support как Line10.lsp .
Зумировать чертеж, растянув отрезок на весь экран
В .окне Visual LISP добавьте к файлу Line10.lsp команду (command «_zoom» «e» «»)
Далее выполните следующие действия:
- загрузите процедуру щелчком по кнопке » Load edit active window «;
- перейдите в окно AutoCAD щелчком по кнопке » Activate AutoCAD «;
- наберите в командной строке Line10 ↵;
- вернитесь в окно Visual LISP и сохраните файл;
- закройте окно Visual LISP .
Загрузка файла AutoLISP
Чтобы использовать в данном чертеже AutoCAD процедуру AutoLISP , необходимо ее в этот чертеж загрузить. Это можно сделать либо в среде AutoLISP , либо непосредственно в пространстве AutoCAD .
В среде AutoLISP нужно открыть файл по команде File — Open File . Для его загрузки, как описано выше, нужно выполнить команду Tools — Load Text in Editor .
В среде AutoCAD загрузить процедуру AutoLISP можно двумя способами. По первому способу для загрузки процедуры Line10.lsp нужно в командной строке набрать ( load «line10» )↵. Имя без расширения заключается в кавычки. Круглые скобки показывают интерпретатору командной строки , что это выражение AutoLISP . В ответ будет выдано имя функции . Протокол командной строки будет выглядеть следующим образом:
Чтобы запустить загруженную процедуру, наберите в командной строке имя функции как простую команду: line10 . В ответ на приглашение укажите точку. В протоколе операции будут отображены таким образом:
После запуска команды ( load «line10» ) программа ищет файл Line10.lsp во всех каталогах (папках) поддержки. Маршруты поиска файлов поддержки можно просмотреть в диалоговом окне, открываемом по команде Tools — Options — Files (рис.2.2):

Маршруты поиска файлов поддержки можно редактировать: удалять, добавлять, изменять порядок списка. Рекомендуется создать отдельную папку LISP для файлов .lsp и ввести ее адрес в список маршрутов.
Для совместного использования функций в нескольких открытых чертежах вместо команды ( load «ИМЯ ФАЙЛА» ) нужно применить команду ( vl-load-all «ИМЯ ФАЙЛА» ). Это эквивалентно помещению процедуры AutoLISP в файл acaddoc.lsp .
Второй способ загрузки процедуры AutoLISP состоит в использовании команды Tools -Load Application . Можно просто набрать в командной строке AppLoad . После запуска команды активизируется диалоговое окно Load/Unload Application (рис. 2.3). Для облегчения поиска нужно указать тип файлов lsp .

Загрузка файла процедуры в чертеж
Откройте Блокнот и наберите в нем следующий текст:
Закрасьте контур прямоугольника красным цветом по команде ChProp . Сравните свой текст процедуры с таким вариантом:
Процедуры для трехмерного пространства
Откройте новый чертеж. В среде Visual LISP создайте две процедуры для построения трехмерных объектов. В конце команды ставится «» (Enter) .
Проанализируйте эти процедуры. Запустите в модели AutoCAD команды chprop, view, union, zoom . Рассмотрите параметры этих команд. Установите рабочее пространство 3DModeling . Запустите процедуры. В процедуре Gantel фигура закрашивается красным. Исправьте процедуру так, чтобы закрашивался весь объект . Измените число изолиний на нуль по команде isolines . В процедуре с:box1 введите визуальный стиль Realistic . Закрасьте box цветом cyan .
Попробуйте построить box и gantel вручную, набирая команды в командной строке. Предварительно для каждой фигуры создайте новый слой. Обратите особое внимание на параметры команд, которые предлагаются для выбора.
Язык программирования Lisp: функции, синтаксис, среда разработки
Более сорока лет назад разработан и внедрен в использование для выполнения целей искусственного интеллекта язык программирования LISP (ЛИСП), позднее ставший популярным среди пользователей ПО AutoCAD. Он создан для символьных вычислений. С течением времени был преобразован, чтобы соответствовать новым потребностям ИИ.
Начинающим пользователям, изучающим его архитектуру, рекомендуется рассматривать его в качестве формальной знаковой системы.
Это imperative language (императивный), действия которого описывают выполнение алгоритма, отличается от других, декларативных, предполагающих определение ограничений и соотношений в предметной сфере поставленной цели. По сравнению с другими подобными разработками С++ и FORTRAN, ЛИСП наделен большей функциональностью. Его популярность обусловлена большими возможностями для программирования в сочетании с мощным набором:
- фреймов;
- сетей;
- предикатов;
- объектов.
Это средства построения данных структур обозначения высокого уровня.
Конструкция
LISP синтаксис и семантика, разработанные программистами, обусловлены теорией рекурсивных функций. Символьные, s-выражения, являются элементами предложений, сочетаний. В них представлены софты и файлы. Они могут отображаться в виде списка (list) или атомов (atom).
Во втором варианте включены числовые комбинации, цифры, буквы латинского алфавита и знаки: *, -, +, /,@, %, , &, _,<, >,

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

Составляющими одних перечислений могут служить другие, более мелкие, подпункты. Символьные структуры разной формы и уровня сложности можно создавать благодаря произвольной углубленности и вложенности. Существует пустая строка, она обозначается – () и называется «nill». При возведении информационной структуры, а также при способе управления ею, она играет особенную роль, представляясь одновременно и атомом, и списком.
Язык LISP относится к языкам программирования, которые используются для создания дополнительных загрузок к ПО по проектированию и моделированию. Для их использования необязательно хорошо разбираться в компьютере на уровне профессионала.
После изучения основных принципов работы в таких пакетах, как AutoCAD или ZWCAD Professional, который является аналогом ACAD, появляется необходимость упростить выполнение длительных рутинных операций или полностью избавиться от них. Для этого дополнения и нужны. Если они написаны на ЛИСПе, скрипты называются LISP-приложения. Каждое из них представляет собой текстовый файл с определенным встроенным кодом для выполнения команды и подсказками от производителя. Определитесь с нужными для работы свойствами, выбирайте надстройку, скачивайте ее и загружайте в ZWCAD или другую платформу. Начиная с версии ZWCAD 2020, в платформу встроен Отладчик Lisp приложений, разработанный на базе Visual Studio Code от Microsoft.
Рассмотрим возможности одного такого модуля на образце скрипта «Выравнивание текстов».