АвтоЛИСП
Семья | Лисп |
---|---|
Разработано | Дэвид Бетц |
Разработчики | Autodesk , базовое программное обеспечение |
Впервые появился | январь 1986 г |
Стабильная версия | 13 / февраль 1995 г |
Дисциплина набора текста | динамичный |
Объем | динамичный |
Платформа | ИА-32 |
ТЫ | Линукс |
Диалекты | |
Витальный-LISP, Visual LISP | |
Под влиянием | |
Лисп , XLISP |
AutoLISP — это диалект языка программирования Lisp, созданный специально для использования с полной версией AutoCAD и его производными, включая AutoCAD Civil 3D , AutoCAD Map 3D , AutoCAD Architecture и AutoCAD Mechanical . [1] Ни интерфейс прикладного программирования (API), ни интерпретатор для выполнения кода AutoLISP не включены в линейку продуктов AutoCAD LT (до версии 2023 AutoCAD LT 2024 включает AutoLISP). [2] Подмножество функций AutoLISP включено в веб-приложение AutoCAD на основе браузера.
Функции
[ редактировать ]AutoLISP — это небольшой диалект языка Лисп с динамической областью действия и динамической типизацией со сборкой мусора , неизменяемой структурой списка и настраиваемыми символами, в котором отсутствуют такие обычные функции Лиспа, как система макросов , средства определения записей, массивы, функции с переменным числом аргументов или привязки let. . Помимо основного языка, большинство примитивных функций предназначены для геометрии, доступа к внутренней базе данных DWG AutoCAD или манипулирования графическими объектами в AutoCAD. Свойства этих графических объектов отображаются в AutoLISP в виде списков связей , в которых значения сочетаются с групповыми кодами AutoCAD , обозначающими такие свойства, как точки определения, радиусы, цвета, слои, типы линий и т. д. AutoCAD загружает код AutoLISP из файлов .LSP. [3]
Код AutoLISP может взаимодействовать с пользователем через графический редактор AutoCAD, используя примитивные функции, которые позволяют пользователю указывать точки, выбирать объекты на экране, а также вводить числа и другие данные. AutoLisp также имеет встроенный ) графического пользовательского интерфейса (GUI мини- или предметно-ориентированный язык (DSL ), язык управления диалогами , для создания модальных диалоговых окон с автоматизированным макетом в AutoCAD. [3]
История
[ редактировать ]AutoLISP произошел от ранней версии XLISP , созданной Дэвидом Бетцем. [4] Язык был представлен в AutoCAD версии 2.18 в январе 1986 года и продолжал улучшаться в последующих выпусках вплоть до выпуска 13 в феврале 1995 года. После этого Autodesk пренебрегла его разработкой в пользу более модных сред разработки, таких как Visual Basic для приложений ( VBA), .NET Framework и ObjectARX . Тем не менее, он остается основным языком пользовательской настройки AutoCAD.
Vital-LISP , значительно расширенная версия AutoLISP, включающая интегрированную среду разработки (IDE), отладчик , компилятор и поддержку ActiveX , была разработана и продана сторонним разработчиком Basis Software. Vital LISP представлял собой надстройку существующего языка AutoLISP, в которую добавлялся VBA-подобный доступ к объектной модели AutoCAD, реакторам (обработке событий для объектов AutoCAD), общей поддержке ActiveX и некоторым другим общим функциям Lisp. Autodesk приобрела его, переименовала в Visual LISP и на короткое время продала как дополнение к AutoCAD версии 14, выпущенной в мае 1997 года. Он был включен в AutoCAD 2000, выпущенный в марте 1999 года, в качестве замены AutoLISP. С тех пор Autodesk прекратил серьезные улучшения Visual LISP и сосредоточил больше усилий на VBA, .NET и C++ . По состоянию на 31 января 2014 г. [update]Autodesk прекратила поддержку версий VBA до 7.1 в рамках долгосрочного процесса перехода с VBA на .NET для пользовательской настройки. [5] [6]
У AutoLISP настолько много поклонников, что другие поставщики приложений для автоматизированного проектирования (САПР) добавляют его в свои продукты. Bricscad , IntelliCAD , DraftSight и другие имеют функциональность AutoLISP, так что пользователи AutoLISP могут рассмотреть возможность использования их в качестве альтернативы AutoCAD. Большая часть разработок с использованием AutoLISP, начиная с AutoCAD 2000, выполняется в Visual LISP, поскольку исходный движок AutoLISP был заменен движком Visual LISP. Существуют тысячи утилит и приложений, разработанных с использованием AutoLISP или Visual LISP (распространяемых в виде файлов LSP, FAS и VLX). [7] [8]
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ЛИСП 1, 1.5, ЛИСП 2 (заброшенный) | |||||||||||||||
Маклисп | |||||||||||||||
Интерлисп | |||||||||||||||
леев | |||||||||||||||
Лисп-машина Лисп | |||||||||||||||
Схема | Р5РС | Р6РС | R7RS маленький | ||||||||||||
НОЛЬ | |||||||||||||||
ЗИЛ (язык реализации Zork) | |||||||||||||||
Франц Лисп | |||||||||||||||
Общий Лисп | стандарт ANSI | ||||||||||||||
Лисп | |||||||||||||||
Схема СО | |||||||||||||||
XLISP | |||||||||||||||
Т | |||||||||||||||
На схеме | |||||||||||||||
Эмакс Лисп | |||||||||||||||
АвтоЛИСП | |||||||||||||||
ПикоЛисп | |||||||||||||||
Гамбит | |||||||||||||||
EuLisp | |||||||||||||||
ИСЛИСП | |||||||||||||||
ОпенЛисп | |||||||||||||||
Схема PLT | Ракетка | ||||||||||||||
новыйЛИСП | |||||||||||||||
GNU Коварство | |||||||||||||||
Визуальный ЛИСП | |||||||||||||||
Кложур | |||||||||||||||
Дуга | |||||||||||||||
ЛФЭ | |||||||||||||||
Он | |||||||||||||||
Хиалисп |
Примеры
[ редактировать ]Простая программа Hello world в AutoLISP будет такой:
(defun hello ( ) (princ "\nHello World!") (princ))
Обратите внимание на последнюю строку внутри определения функции: при вычислении без аргументов princ
Функция возвращает нулевой символ, который не отображается в интерфейсе командной строки AutoCAD . Поскольку командная строка AutoCAD функционирует как цикл чтения-оценки-печати (REPL), обычно выводится «Hello World!» в командную строку, за которой сразу же следует возвращаемое значение вызова princ
. Поэтому без окончательного вызова princ
функция, результатом этого будет:
Hello World!"\nHello World!"
The prin1
Функция также может быть использована для достижения того же результата.
Более сложный пример:
(defun c:pointlabel ( / pnt ) (if (setq pnt (getpoint "\nSpecify point: ")) (progn (entmake (list '(0 . "POINT") (cons 10 (trans pnt 1 0)) ) ) (entmake (list '(0 . "TEXT") (cons 10 (trans (cons (+ (car pnt) 0.6) (cdr pnt)) 1 0)) (cons 40 (getvar 'textsize)) (cons 1 (strcat "X:" (rtos (car pnt)) " Y:" (rtos (cadr pnt)))) ) ) ) ) (princ))
Приведенный выше код определяет новую функцию , которая генерирует точечный объект AutoCAD в заданной точке, а рядом с ним отображается однострочный текстовый объект, отображающий координаты X и Y. Имя функции включает специальный префикс «c:», благодаря которому AutoCAD распознает функцию как обычную команду. Пользователю после ввода «метки точки» в командной строке AutoCAD будет предложено выбрать точку, либо введя координаты X и Y, либо щелкнув местоположение на чертеже. Затем функция поместит маркер в эту точку и создаст рядом с ним однострочный текстовый объект, содержащий координаты X и Y точки, выраженные относительно активной пользовательской системы координат (UCS). Функция не требует параметров и содержит одну локальную переменную («pnt»).
Приведенный выше пример также можно написать с использованием встроенных команд AutoCAD для достижения того же результата, однако этот подход подвержен изменениям в командных строках между выпусками AutoCAD.
Ссылки
[ редактировать ]- ^ «АвтоЛИСП» . Проверено 14 апреля 2014 г.
- ^ «AutoCAD LT против AutoCAD» . Архивировано из оригинала 15 апреля 2014 года . Проверено 14 апреля 2014 г.
- ^ Перейти обратно: а б «Руководство разработчика AutoLISP» (PDF) . Проверено 14 апреля 2014 г.
- ^ «История AutoLISP» .
- ^ «Часто задаваемые вопросы по модулю Microsoft Visual Basic для приложений» . Проверено 14 апреля 2014 г.
- ^ «Поддержка VBA в AutoCAD 2011» . Архивировано из оригинала 15 апреля 2014 года . Проверено 14 апреля 2014 г.
- ^ «Сравнение версий BricsCAD» . Архивировано из оригинала 15 марта 2014 г. Проверено 14 апреля 2014 г.
- ^ «Платформа IntelliCAD CAD – возможности и преимущества» . Проверено 14 апреля 2014 г.