Лисп автокад что это
Как использовать лисп, опубликованный на форуме
Примечание: AutoLISP программы могут быть запущены только на полной версии Автокада, они не работают под AutoCAD LT. (исключая случаи загрузки дополнительных приложений типа LT Extender и ему подобных, которые специально разработаны для запуска lisp и (или) arx приложений в среде AutoCAD LT.)
Сохранение программного кода на своем компьютере
С помощью курсора выделяем этот код и копируем его в буфер обмена, нажав правую кнопку мыши и выбрав пункт Копировать (или Ctrl+C).
Запускаем «Блокнот» и вставляем наш код с помощью меню Правка >> Вставить (или Ctrl+V):
После того как вставили код в блокнот, мы должны иметь что-то наподобие этого:
Теперь мы должны сохранить файл. Файл можно назвать, как вам нравится, но расширение у него должно быть .LSP. Правильнее (но не обязательно) будет назвать файл так же, как названа команда в найденном Вами коде. Команде всегда предшествует префикс C: после слова defun. В примере выше видно, что команду назвали OFF2, соответственно файл называем off2.lsp. Таким образом, мы можем избежать беспорядка, т.к. будем знать, что в файле off2.lsp находится команда OFF2.
Иногда в коде представлено несколько функций. Необходимо найти «главную». Такая функция либо имеет префикс С:, либо сам автор кода уточняет, что «использовать как «. В случае нескольких «главных» именование файла не может иметь никаких рекомендаций.
Загрузка lisp файла
Далее, запускаем Автокад и выбираем Сервис >> Автолисп >> Загрузить (Tools >> AutoLISP >> Load) или набираем в командной строке _appload.
Мы должны увидеть диалоговое окно как представлено ниже:
Используйте следующую последовательность, чтобы загрузить off2.lsp:
Для начала необходимо определиться, что у нас: команда или функция?
Немного теории.
В описании практически любого кода есть такая строка, как
и потом после нее чего-то там написано. Так вот то, что там написано и есть имя функции.
Если первыми символами являются C:, то функция готова к вызову из командной строки. Если такого нет, то вызывать функцию надо, заключая ее имя в круглые скобки.
Например, есть функция
Ее вызывать (при условии, что она подгружена) с командной строки можно напрямую:
И будут выполнены действия
А вот такую:
Можно будет вызывать только так:
Запуск lisp программы
Как только lisp файл загружен, Вы можете вызвать команду из командной строки. Команда вызывается по ее имени. В нашем примере необходимо набрать в командной строке OFF2.
Запомните, имя команды содержит префикс C: после слова defun. Если Вы видите в коде:
то в командной строке необходимо набрать без префикса C:.
Tips: Вы можете также загрузить lisp файл путем перетаскивания (drag-and-drop) иконки файла в графическое окно открытого документа Автокада.
AutoCAD ; error: no function definition:
Если Ваша функция или команда не работает или завершает работу с сообщением как в примере ниже, то Вам может помочь простой способ.
Команда: (vlax-get-acad-object) ; error: no function definition: VLAX-GET-ACAD-OBJECT |
Наберите в командной строке (vl-load-com) или (предпочтительнее) добавьте ее в начало lisp файла.
Теперь ваш lisp должен работать без ошибок.
Данная функция загружает большое количество функций, входящих в расширение AutoLisp, позволяющее работать с объектами, свойствами, методами и событиями ActiveX. Признаком необходимости загрузки расширения AutoLisp является наличие в тексте Вашей программы функций, начинающихся с префиксов vla- (например vla-get-activedocument), vlax- (например vlax-get-acad-object), vl- (например vl-catch-all-apply) и vlr- (например vlr-pers).
В любом случае никогда не помешает добавить (vl-load-com) в начало файла, чтобы избежать подобных ошибок.
Организация библиотеки лисп файлов.
Что делать, если набралось достаточное количество файлов? Каждый раз набирать _appload для загрузки того или иного приложения? Наиболее эффективным будет организация своей библиотеки. Для начала условимся, что все наши файлы будем складывать в одну папку. Например, D:\MyLisp. Пропишем эту папку в путях доступа Автокада. Для этого выбираем Сервис >> Настройка (Tools >> Options) или набираем в командной строке _options. Переходим на закладку Файлы (Files) и раскрываем список Путь доступа к вспомогательным файлам (Support File Search Path).
Мы должны увидеть диалоговое окно, как представлено ниже:
Используйте следующую последовательность, чтобы прописать папку в путях доступа:
Вместо текста мы должны будем подставлять имя нужной нам команды, а вместо текста имя того файла, в котором эта команда сохранена. Напоминаю, что файл должен иметь расширение .lsp. Более подробно по организации меню можно почитать еще здесь http://www.kulichki.com/cadhlp/pdmnu.htm
Автозагрузка файлов.
Если есть необходимость загружать свои lsp файлы при открытии чертежа, то нужно добавить необходимые файлы в список автозаргузки.
Запускаем Автокад и выбираем Сервис >> Автолисп >> Загрузить (Tools >> AutoLISP >> Load) или набираем в командной строке _appload.
В открывшемся диалоговом окне жмем на кнопку Приложения рядом с изображение портфеля
В следующем диалоговом окне жмем на кнопку Добавить и указываем на необходимые файлы.
Они должны появиться в списке приложений.
Теперь перечисленные файлы будут загружаться каждый раз при открытии рисунка.
Важно понимать, что (по крайней мере в полной версии AutoCAD) загрузка приложений, помещенных в Автозагрузку (Startup Suite), как правило, выполняется во все профили и сессии AutoCAD’a.
Кроме того, есть еще один момент. Если существует 2 или более файлов, в которых описаны функции с одинаковыми именами, выполняться будет та, которая загрузилась последней. Поскольку предсказать, в какой последовательности будет выполняться загрузка приложений, невозможно, подобных ситуаций следует избегать.
Автор статьи: Владимир Азарко aka VVA
Как подгрузить Лисп в Автокад
Мы рассматривали LISP-приложения для AutoCAD. Теперь давайте разберёмся, как внедрить LISP в работу.
Как установить файл *.lsp в Автокад?
1. Перейдите во вкладку «Управление». На панели «Приложения» выберите команду «Загрузить приложение». Воспользуйтесь командной строй в Автокаде и введите «_appload».
2. Откроется диалоговое окно «Загрузка/выгрузка приложений». Найдите подходящий файл с расширением *.lsp или др.
3. После проделанных действий нажмите кнопку «Загрузить».
4. Когда внизу этого диалогового окна появится сообщение об успешной загрузке, можно тестировать установленное приложение. Нажмите кнопку «Закрыть».
Как запустить команду приложения lisp?
В AutoCAD lisp-команды посмотреть нельзя. Следует отталкиваться от исходного файла, который был загружен в программу.
Файл скрипта можно открыть через обычный «Блокнот». В верхней части этого текстового документа разработчики оставляют необходимую информацию для работы. В том числе название команды, которая будет запускать ЛИСП. В данном примере это «z-text-align», поэтому в командную строку нужно вводить именно такой запрос для вызова инструмента.
Далее следуйте указаниям командной строки и пошагово выполняйте запросы установленного скрипта.
Как подгрузить lisp в Автокад LT?
К сожалению, приложения, написанные на AutoLISP, работают только на полной версии программы AutoCAD. Поэтому такие скрипты нельзя внедрить в AutoCAD LT или др. версии.
Исключением могут являться специализированные приложения типа LT Extender и подобные ему, которые были разработаны с целью запуска файлов *.lsp или *.arx непосредственно в среде Автокад LT.
Что такое ЛИСП для Автокада?
После освоения основных принципов работы в AutoCAD необходимо избавиться от рутинных операций. Для этого существуют дополнительные приложения, написанные на языке программирования LISP. Отсюда и происходит название скриптов: лисп-приложения.
Все основные LISP-приложения уже давно разработаны для Автокада. Важно определиться, какие команды или функции будут полезны, после чего скачать само приложение и загрузить его в AutoCAD.
Программы Lisp для Автокада
LISP-приложение – это текстовый файл, который содержит подсказки от разработчиков и определенный код для выполнения команды. Файл имеет расширение *.lsp. Открыть его можно стандартным способом, кликнув дважды ЛКП по нему. Откроется «Блокнот».
Давайте рассмотрим конкретный пример. Возьмем LISP, который позволяет выравнивать текст в Автокаде по вертикали или горизонтали относительно указанной точки. Далее скачиваем скрипт: Выравнивание текстов.lsp
Команда весьма полезная, однако по умолчанию такой инструмент не предусмотрен. Для выравнивания 5-10 текстовых строк в чертеже уйдет определенное время. Поскольку вы будете повторять одни и те же действия несколько раз. Поэтому для упрощения эти действия можно выполнить одной командой (в данном случае Z-TEXT-ALIGN).
ЛИСП-программы для Автокада могут быть полезны на различных этапах выполнения проекта. Также следует учитывать специфику выполняемых работ. Так существуют лиспы для Автокада для геодезистов или проектировщиков, использование которых характерно для конкретной области.
Язык программирования 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.
Рассмотрим возможности одного такого модуля на образце скрипта «Выравнивание текстов».
Примеры программ на ЛИСПе (lisp)
Приложение форматирует страницу горизонтально и вертикально по заданной точке. Это полезная возможность, непредусмотренная в основном ПО. Файл с расширением *.lsp открывается двумя кликами левой кнопки мыши. В окне появится «блокнот».
Чтобы сгладить и уподобить несколько напечатанных строк в готовом чертеже, обычно приходится выполнять однообразные действия много раз. Со скачанным скриптом это выполняется одной командой (в примере указана Z-TEXT-ALIGN).
Подобные дополнения полезны на любом этапе проектирования. Их существует очень много, но совсем необязательно устанавливать все. Перед скачиванием, посмотрите, подходит ли скрипт для выполнения нужных конкретных задач. Для каждой области написаны подходящие:
Как загрузить вспомогательную часть в ПО
После выбора нужного вложения возникает надобность его внедрения. Если речь идет об ACAD, для него доступны файлы с такими расширениями:
Помимо файлов lisp также поддерживается загрузка форматов:
На примере того же модуля для выравнивания текста рассмотрим, как подгрузить в основную программу его файл.
Обратите внимание: при скачивании архивированного лисп-приложения, распакуйте его, чтобы на ПК фрагмент сохранился перед загрузкой.
Этапы установки LISP (их можно отследить по истории):
Важно: при каждом запуске базовой утилиты нажмите кнопку «Добавить» в разделе «Добавить в автозагрузку». Если этого не сделать, то будет выполнен единоразовый вход в модуль, который не сохраняется с закрытием софта.
Команды LISP-программы для Автокада (Autocad)
В главном ПО их посмотреть невозможно, поэтому нужно обратиться к исходному файлу дополнения. Он открывается в «Блокноте», вверху которого находится название команды для запуска лиспа и вся необходимая информация для работы от его создателей. В примере указано z-text-align, что и нужно ввести в командную строку, чтобы вызвать нужный инструмент.
После этого, следите за указаниями вложения. Обычно такие скрипты интуитивно понятны и не требуют дополнительных разъяснений относительно дальнейших действий пользователя.
Обратите внимание: в случае отсутствия подобной подсказки, ищите ее в коде – в строке «defun c: z-text-align».
Вложения, написанные на диалекте, разработаны только для внедрения в полную версию ACAD и в схожие программы, например, ZWCAD 2018 Professional, NanoCAD, они не подгружаются. Для них существуют другие приложения.
Список функций лисп (LISP) – языка программирования для Autocad
С оператора defun начинается определение задач. С его помощью создают опции с переменными. Зависимо от назначения, каждая из них будет действовать по-разному.
Варианты, производимые этим оператором:
В каждом модуле, написанном этим диалектом, есть встроенный интерпретатор. Он выполняет вычисление введенных данных и возвращает их в программную среду для дальнейшей обработки. Готовые наработки передаются на высший уровень системы или сохраняются в переменной. Это значит, что скрипт получает информацию, когда ее вводит пользователь, или при самостоятельном выборе из существующей. Он сохраняет ее в переменную, и производит вычисления, включающие неизвестное значение и функцию.
Есть участок кода: (setq gh (+ 4 5)), где setq – одна из прописанных единиц. Она объявляет вариацию gh. В скобках знак + тоже опция, числа 4 и 5 – данные, которые были введены в систему. Значение выражения в gh сохранится, то есть 4+5 =9, gh=9. При заданном условии (setqhj (* gh 2), в результат hj сохраняется 18 – gh = 9, 9 умножить на 2 равно 18.
Синтаксис отличен от привычной большинству математики. Его порядок представлен сначала задачей, а потом переменными. В школьном счете это выглядит, как (3+2), а здесь (+ 3 2), однако, смысл одинаковый.
Список функций lisp, работа которых является основой дополнительных приложений:
При помощи этого программного диалекта создают новые уравнения 3-х классов:
Язык, который не позволяет этого – бесполезен. Часто используется LISP в геодезии, инженерии и строительстве, применяя надстройку «Автокада».
С помощью ЛИСП изучают рекурсивную функцию, используя такую возможность, как «трассировка». Это основной и весьма эффективный способ организации вычислений, повторяющихся несколько раз.
На входе в эту ячейку печатают значения входящих параметров, а на выходе появляются результаты, полученные в ходе операции. Для этого есть специальная опция класса FSURB, называемая TRACE. При ее успешном завершении, возвращается наименование задачи. При неудачном – возврат «NIil».
Пример включения рассматриваемой возможности SUMLIST и произведения математических манипуляций, суммирования элементов списка (1 2 3 4 5):
Обратите внимание на то, что ответ на поставленную задачку ведется в ином порядке – от последнего к первому.
Используемые только для AutoCAD (Автокад) LISP программы, устанавливаются исключительно на полноценную версию и не подходят по списку функций и команд для работы в пакетах типа Autodesk LT, Electrical, Mechanical. Исключений немного, ими выступают специальные разработки типа LT Extender, с типом расширения *.arx, *.lsp.
AutoCAD
AutoLISP основан на языке программирования LISP, который является простым и в то же время достаточно мощным. Интерпретатор LISP, встроенный в AutoCAD, позволяет вводить код AutoLISP в командной строке и загружать код AutoLISP из внешних файлов. Интегрированная среда разработки Visual LISP (VLISP) предназначена для ускорения процесса создания программ на AutoLISP.
AutoLISP представляет собой интерфейс приложения AutoCAD для автоматизации задач проектирования. После загрузки приложения или процедуры AutoLISP они функционируют в собственных пространствах имен для каждого открытого чертежа. Пространство имен каждого чертежа является изолированным, что позволяет избегать конфликтов имен переменных и процедур AutoLISP в одновременно открытых чертежах. Например, следующее выражение по-разному устанавливает значение переменной а для различных документов.
В Visual LISP имеется механизм загрузки обозначений и переменных из одного пространства имен в другое.
Приложения и процедуры AutoLISP могут взаимодействовать с AutoCAD различными способами. Они могут запрашивать необходимую информацию у пользователя, непосредственно обращаться к встроенным командам AutoCAD, создавать и изменять объекты в базе данных чертежа. В AutoCAD с помощью процедур AutoLISP можно создавать новые команды для решения конкретных задач. Некоторые из стандартных команд AutoCAD написаны на языке AutoLISP.
AutoLISP предоставляет три формата файлов для приложений:
Хотя Visual LISP представляет собой интегрированную среду разработки, AutoCAD может читать код AutoLISP непосредственно, и его компиляция не требуется. Можно использовать командную строку, вводя в ней выражения, чтобы сразу же видеть результаты их выполнения. Это делает AutoLISP удобным языком для экспериментирования как для новичков, так и для опытных программистов.
Пользователи, не имеющие намерений писать собственные приложения на AutoLISP, тем не менее, могут найти много полезных процедур, входящих в комплект поставки AutoCAD. Имеется также большое число условно-бесплатных процедур и приложений, поставляемых сторонними разработчиками. Умение загружать и использовать такие приложения позволяет значительно повысить производительность работы.
Работа с приложениями AutoLISP
AutoLISP-приложения хранятся в текстовых ASCII-файлах с расширением lsp. В таких файлах обычно имеется раздел заголовка, в котором описана программа, ее назначение и даются конкретные инструкции. Данный заголовок также может включать комментарии, в которых указан автор и правовая информация, касающаяся использования программы. Строки комментариев начинаются с символа точки с запятой (;). Для просмотра и редактирования таких файлов можно использовать любой текстовый редактор или текстовый процессор, который сохраняет тексты в формате ASCII.
Перед использованием AutoLISP-приложения его необходимо загрузить в память. Для этого можно использовать команду ЗАГПРИЛ или функцию load языка AutoLISP. При загрузке приложения AutoLISP выполняется загрузка AutoLISP-кода из LSP-файла в память системы.
Загрузка приложения с помощью функции load требует ввода выражения AutoLISP в командной строке. В случае успешного выполнения функции load в командной строке отображается значение последнего выражения в файле. Обычно в этом качестве выступает либо имя самой последней определенной в файле функции, либо подсказка по использованию функции. Если функция load завершается неудачно, AutoLISP выдает сообщение об ошибке. Сбой функции load может быть вызван ошибками кода в файле или неверным именем файла, введенным в командной строке. Формат использования функции load имеет следующий вид:
Команда: (load «newfile»)
Для загрузки AutoLISP файла, находящегося не по библиотечному пути, аргумент имя_файла должен включать в себя также полный путь к файлу.
Команда: (load «d:/files/morelisp/newfile»)