Семья | Лисп |
---|---|
Разработано | Дэвид Бец |
Разработчики | Autodesk , базовое программное обеспечение |
Впервые появился | Январь 1986 г . |
Стабильный выпуск | 13 февраля 1995 г . |
Платформа | IA-32 |
Операционные системы | Linux |
Диалекты | |
Vital-LISP, Визуальный LISP | |
Под влиянием | |
Лисп , XLISP |
AutoLISP - это диалект языка программирования Lisp, созданный специально для использования с полной версией AutoCAD и ее производными, включая AutoCAD Map 3D , AutoCAD Architecture и AutoCAD Mechanical . [1] Ни интерфейс прикладного программирования (API), ни интерпретатор для выполнения кода AutoLISP не включены в линейку продуктов AutoCAD LT. [2]
Особенности [ править ]
AutoLISP - это небольшой диалект языка Lisp с динамической областью видимости , динамически типизированный диалект языка Lisp со сборкой мусора , неизменяемой структурой списка и настраиваемыми символами, которому не хватает таких обычных функций Lisp, как система макросов , средства определения записей, массивы, функции с переменным числом аргументов или привязками let. . Помимо основного языка, большинство примитивных функций предназначены для работы с геометрией, доступа к внутренней базе данных DWG AutoCAD или управления графическими объектами в AutoCAD. Свойства этих графических объектов отображаются в AutoLISP в виде ассоциативных списков, в которых значения сопоставляются с кодами групп AutoCAD.которые указывают такие свойства, как определяющие точки, радиусы, цвета, слои, типы линий и т. д. AutoCAD загружает код AutoLISP из файлов .LSP. [3]
Код AutoLISP может взаимодействовать с пользователем через графический редактор AutoCAD, используя примитивные функции, которые позволяют пользователю указывать точки, выбирать объекты на экране и вводить числа и другие данные. AutoLisp также имеет встроенный мини- или предметно-ориентированный язык (DSL) графического пользовательского интерфейса (GUI), язык управления диалоговыми окнами, для создания модальных диалоговых окон с автоматической компоновкой в 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. Жизненно важный 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 [Обновить]г. 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]
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 |
Примеры [ править ]
Простая программа Hello world в AutoLISP будет выглядеть так:
( defun привет ( ) ( принц «\ nПривет, мир!» ) ( принц ))
Обратите внимание на последнюю строку внутри определения функции: при оценке без аргументов princ
функция возвращает нулевой символ, который не отображается в интерфейсе командной строки AutoCAD . Поскольку командная строка AutoCAD функционирует как цикл чтения-оценки-печати (REPL), обычно выводится «Hello World!». в командную строку, за которой сразу следует возвращаемое значение вызова princ
. Следовательно, без последнего вызова princ
функции результатом этого будет:
Hello World!"\nHello World!"
prin1
Функция также может быть использована для достижения такого же результата.
Более сложным примером может быть:
( DEFUN C: pointlabel ( / ПНТ ) ( если ( setq pnt ( getpoint "\ nУкажите точку:" )) ( прогноз ( приготовить ( список ' ( 0 . "POINT" ) ( Против 10 ( транс - ПНТ 1 0 )) ) ) ( приготовить ( список ' ( 0 . "TEXT" ) ( cons 10 ( trans ( cons ( + ( car pnt ) 0.6 ) ( cdr pnt )) 1 0 )) ( минусы 40 ( getvar 'TextSize )) ( Против 1 ( strcat "X:" ( RTOS ( автомобиль ПНТ )) "Y:" ( RTOS ( CADR ПНТ )))) ) ) ) ) ( принц ))
Приведенный выше код определяет новую функцию, которая создает объект точки AutoCAD в заданной точке с однострочным текстовым объектом, отображающим координаты X и Y рядом с ним. Имя функции включает специальный префикс «c:», который заставляет AutoCAD распознавать функцию как обычную команду. При вводе метки точки в командной строке AutoCAD пользователю будет предложено выбрать точку, введя координаты X и Y или щелкнув место на чертеже. Затем функция поместит маркер в эту точку и создаст рядом с ним однострочный текстовый объект, содержащий координаты X и Y точки, выраженные относительно активной пользовательской системы координат (ПСК). Функция не требует параметров и содержит одну локальную переменную ('pnt' ).
Приведенный выше пример также может быть написан с использованием встроенных команд AutoCAD для достижения того же результата, однако этот подход чувствителен к изменениям в командной строке между выпусками AutoCAD.
Ссылки [ править ]
- ^ "AutoLISP" . Проверено 14 апреля 2014 года .
- ^ «AutoCAD LT против AutoCAD» . Архивировано из оригинального 15 апреля 2014 года . Проверено 14 апреля 2014 года .
- ^ a b «Руководство разработчика 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 года .
Внешние ссылки [ править ]
- AutoLISP: часто задаваемые вопросы