AutoLISP - AutoLISP

AutoLISP
СемьяЛисп
РазработаноДэвид Бец
РазработчикиAutodesk, Базовое программное обеспечение
Впервые появилсяЯнварь 1986; 34 года назад (1986-01)
Стабильный выпуск
13 февраля 1995 г.; 25 лет назад (1995-02)
Платформа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]

Примеры

Просто Привет, мир программа в 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.

использованная литература

  1. ^ "АвтоЛИСП". Получено 14 апреля 2014.
  2. ^ «AutoCAD LT против AutoCAD». Архивировано из оригинал 15 апреля 2014 г.. Получено 14 апреля 2014.
  3. ^ а б «Руководство разработчика AutoLISP» (PDF). Получено 14 апреля 2014.
  4. ^ "История AutoLISP".
  5. ^ "Часто задаваемые вопросы о модуле Microsoft Visual Basic для приложений". Получено 14 апреля 2014.
  6. ^ «Поддержка VBA в AutoCAD 2011». Архивировано из оригинал 15 апреля 2014 г.. Получено 14 апреля 2014.
  7. ^ «BricsCAD Сравнить версии». Архивировано из оригинал на 2014-03-15. Получено 14 апреля 2014.
  8. ^ «Платформа IntelliCAD CAD - особенности и преимущества». Получено 14 апреля 2014.

внешние ссылки