AutoLISP - AutoLISP
Семья | Лисп |
---|---|
Разработано | Дэвид Бец |
Разработчики | Autodesk, Базовое программное обеспечение |
Впервые появился | Январь 1986 |
Стабильный выпуск | 13 февраля 1995 г. |
Платформа | IA-32 |
Операционные системы | Linux |
Диалекты | |
Vital-LISP, Визуальный LISP | |
Под влиянием | |
Лисп, XLISP |
AutoLISP это диалект языка программирования Лисп построен специально для использования с полной версией AutoCAD и его производные, в том числе AutoCAD Map 3D, AutoCAD Архитектура и AutoCAD Mechanical.[1] Ни интерфейс прикладного программирования (API), ни переводчик для выполнения кода AutoLISP включены в линейку продуктов AutoCAD LT.[2]
особенности
AutoLISP - это небольшой, динамично ограниченный, динамически типизированный диалект языка Lisp с вывоз мусора, неизменяемая структура списка и устанавливаемые символы, отсутствующие в таких обычных функциях Lisp, как макрос system, средства определения записей, массивы, функции с переменным числом аргументов или let-привязки. Помимо основного языка, большинство примитивных функций предназначены для работы с геометрией, обращаясь к внутренним функциям AutoCAD. DWG база данных или манипулирование графическими объектами в 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 support, был разработан и продан сторонним разработчиком Basis Software. Жизненно важный LISP был надмножеством существующего языка AutoLISP, который добавил VBA-подобный доступ к объектной модели AutoCAD, реакторы (обработка событий для объектов AutoCAD), общую поддержку ActiveX и некоторые другие общие функции Lisp. Autodesk купил это, переименовал Визуальный LISP, и на короткое время продавался как дополнение к AutoCAD версии 14, выпущенной в мае 1997 года. Он был включен в AutoCAD 2000, выпущенный в марте 1999 года, в качестве замены AutoLISP. С того времени, Autodesk прекратил значительные улучшения Visual LISP и сосредоточил больше усилий на VBA и .NET, а также C ++. По состоянию на 31 января 2014 г.[Обновить], Autodesk больше не поддерживает версии VBA старше 7.1. Это часть длительного процесса перехода с VBA на .NET для пользовательской настройки.[5][6]
У AutoLISP так много последователей, что и у других системы автоматизированного проектирования Поставщики приложений (CAD) добавляют его в свои продукты. Bricscad, IntelliCAD, DraftSight и другие имеют функции AutoLISP, поэтому пользователи AutoLISP могут рассмотреть возможность их использования в качестве альтернативы AutoCAD. Большая часть разработки с использованием AutoLISP, начиная с AutoCAD 2000, выполняется в Visual LISP, поскольку исходный механизм AutoLISP был заменен механизмом Visual LISP. Существуют тысячи утилит и приложений, которые были разработаны с использованием AutoLISP или Visual LISP (распространяются как файлы LSP, FAS и VLX).[7][8]
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2(заброшен) | ||||||||||||||
Маклисп | ||||||||||||||
Интерлисп | ||||||||||||||
Лисп-машина Лисп | ||||||||||||||
Схема | R5RS | R6RS | R7RS маленький | |||||||||||
Ноль | ||||||||||||||
Ференц Лисп | ||||||||||||||
Common Lisp | ||||||||||||||
Le Lisp | ||||||||||||||
Т | ||||||||||||||
Chez Scheme | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
ПикоЛисп | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
Схема PLT | Ракетка | |||||||||||||
GNU Guile | ||||||||||||||
Визуальный LISP | ||||||||||||||
Clojure | ||||||||||||||
Дуга | ||||||||||||||
LFE | ||||||||||||||
Hy |
Примеры
Просто Привет, мир программа в AutoLISP будет:
1 (defun Здравствуйте ( )2 (принц " nПривет, мир!")3 (принц)4 )
Обратите внимание на последнюю строку внутри определения функции: при оценке без аргументов принц
функция возвращает нулевой символ, который не отображается в AutoCAD. Интерфейс командной строки. Поскольку командная строка AutoCAD работает как цикл чтения – оценки – печати (REPL) обычно выводится "Hello World!" в командную строку, за которой сразу следует возвращаемое значение вызова принц
. Поэтому без окончательного вызова принц
функция, результатом этого будет:
Hello World! " NHello World!"
В prin1
функция также может использоваться для достижения того же результата.
Более сложным примером может быть:
1 (defun c: pointlabel ( / pnt ) 2 (если (setq pnt (Getpoint " nУкажите точку:")) 3 (прогноз 4 (вовлекать 5 (список 6 '(0 . "ТОЧКА") 7 (минусы 10 (транс pnt 1 0)) 8 ) 9 )10 (вовлекать11 (список12 '(0 . "ТЕКСТ")13 (минусы 10 (транс (минусы (+ (машина pnt) 0.6) (CDR pnt)) 1 0))14 (минусы 40 (Getvar 'размер текста))15 (минусы 1 (strcat "ИКС:" (rtos (машина pnt)) "Y:" (rtos (кадр pnt))))16 )17 )18 )19 )20 (принц)21 )
Приведенный выше код определяет новый функция который создает точечный объект AutoCAD в заданной точке с однострочным текстовым объектом, рядом с которым отображаются координаты X и Y. Имя функции включает специальный префикс «c:», который заставляет AutoCAD распознавать функцию как обычную команду. При вводе метки точки в командной строке AutoCAD пользователю будет предложено выбрать точку, введя координаты X и Y или щелкнув место на чертеже. Затем функция поместит маркер в эту точку и создаст рядом с ним однострочный текстовый объект, содержащий координаты X и Y точки, выраженные относительно активной пользовательской системы координат (ПСК). Функция не требует параметры, и содержит один локальная переменная ('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 Сравнить версии». Архивировано из оригинал на 2014-03-15. Получено 14 апреля 2014.
- ^ «Платформа IntelliCAD CAD - особенности и преимущества». Получено 14 апреля 2014.