AutoLISP — AutoLISP
Rodzina | Seplenienie |
---|---|
Zaprojektowany przez | Dawid Betz |
Deweloperzy | Autodesk , oprogramowanie podstawowe |
Po raz pierwszy pojawiły się | styczeń 1986 |
Wersja stabilna | 13/luty 1995
|
Dyscyplina pisania | dynamiczny |
Zakres | dynamiczny |
Platforma | IA-32 |
OS | Linux |
Dialekty | |
Vital-LISP, wizualny LISP | |
Wpływem | |
Lisp , XLISP |
AutoLISP to dialekt języka programowania Lisp stworzony specjalnie do użytku z pełną wersją programu AutoCAD i jego pochodnymi, w tym AutoCAD Map 3D , AutoCAD Architecture i AutoCAD Mechanical . Ani interfejs programowania aplikacji (API), ani tłumacza na wykonanie kodu AutoLISP są wliczone w linii produktów AutoCAD LT.
funkcje
AutoLISP jest małe, dynamicznie scoped dynamicznie wpisany Lisp język dialekt ze zbierania śmieci , niezmiennej listy struktury i symboli nastawianych, brakuje takiego regularnego Lisp wyposażony w makro systemu, rejestruje zaplecze rozdzielczości, tablic, funkcji ze zmienną liczbą argumentów lub niech wiązania . Oprócz podstawowego języka, większość prymitywnych funkcji dotyczy geometrii, dostępu do wewnętrznej bazy danych DWG AutoCAD lub manipulacji elementami graficznymi w AutoCAD. Właściwości tych elementów graficznych są przedstawiane AutoLISP jako listy skojarzeń, w których wartości są sparowane z kodami grup AutoCAD , które wskazują właściwości, takie jak punkty definicyjne, promienie, kolory, warstwy, rodzaje linii itp. AutoCAD ładuje kod AutoLISP z plików .LSP.
Kod AutoLISP może wchodzić w interakcję z użytkownikiem za pośrednictwem graficznego edytora AutoCAD za pomocą prymitywnych funkcji, które pozwalają użytkownikowi na wybieranie punktów, wybieranie obiektów na ekranie oraz wprowadzanie liczb i innych danych. AutoLisp ma również wbudowany graficzny interfejs użytkownika (GUI) mini- lub język specyficzny dla domeny (DSL), Dialog Control Language , do tworzenia modalnych okien dialogowych ze zautomatyzowanym układem w programie AutoCAD.
Historia
AutoLISP wywodzi się z wczesnej wersji XLISP , stworzonej przez Davida Betza. Język został wprowadzony w programie AutoCAD w wersji 2.18 w styczniu 1986 r. i był nadal ulepszany w kolejnych wydaniach, aż do wydania 13 w lutym 1995 r. Następnie jego rozwój został zaniedbany przez firmę Autodesk na rzecz bardziej modnych środowisk programistycznych, takich jak Visual Basic for Applications ( VBA), .NET Framework i ObjectARX . Pozostał jednak głównym językiem dostosowywania użytkownika AutoCAD.
Vital-LISP , znacznie ulepszona wersja AutoLISP zawierająca zintegrowane środowisko programistyczne (IDE), debugger , kompilator i obsługę ActiveX , została opracowana i sprzedana przez firmę Basis Software , będącą stroną trzecią. Vital LISP był nadzbiorem istniejącego języka AutoLISP, który dodał podobny do VBA dostęp do modelu obiektowego AutoCAD, reaktory (obsługa zdarzeń dla obiektów AutoCAD), ogólną obsługę ActiveX i kilka innych ogólnych funkcji Lisp. Autodesk kupił to, zmienił nazwę na Visual LISP i krótko sprzedał jako dodatek do wersji AutoCAD 14 wydanej w maju 1997. Został on włączony do AutoCAD 2000 wydanego w marcu 1999 jako zamiennik dla AutoLISP. Od tego czasu Autodesk zaprzestał znaczących ulepszeń Visual LISP i skupił więcej wysiłku na VBA i .NET oraz C++ . Od 31 stycznia 2014 r. firma Autodesk nie obsługuje już wersji VBA starszych niż 7.1. Jest to część długoterminowego procesu zmiany z VBA na .NET w celu dostosowania przez użytkownika.
AutoLISP cieszy się tak dużą popularnością, że inni dostawcy aplikacji do projektowania wspomaganego komputerowo (CAD) dodają go do swoich produktów. Bricscad , IntelliCAD , DraftSight i inne posiadają funkcjonalność AutoLISP, dzięki czemu użytkownicy AutoLISP mogą rozważyć użycie ich jako alternatywy dla AutoCAD. Większość prac związanych z AutoLISP od czasu AutoCAD 2000 jest wykonywana w Visual LISP, ponieważ oryginalny silnik AutoLISP został zastąpiony przez Visual LISP. Istnieją tysiące narzędzi i aplikacji opracowanych przy użyciu AutoLISP lub Visual LISP (dystrybuowanych jako pliki LSP, FAS i VLX).
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2 (opuszczony) | ||||||||||||||
Maclisp | ||||||||||||||
Interlisp | ||||||||||||||
Lisp Maszyna Lisp | ||||||||||||||
Schemat | R5RS | R6RS | R7RS mały | |||||||||||
ZERO | ||||||||||||||
Franz Lisp | ||||||||||||||
Wspólne seplenienie | ||||||||||||||
Le Lisp | ||||||||||||||
T | ||||||||||||||
Schemat Cheza | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
PicoLisp | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
Schemat PLT | Rakieta | |||||||||||||
GNU Guile | ||||||||||||||
Wizualny LISP | ||||||||||||||
Clojure | ||||||||||||||
Łuk | ||||||||||||||
LFE | ||||||||||||||
Hy |
Przykłady
Prosty program Hello world w AutoLISP to:
(defun hello ( )
(princ "\nHello World!")
(princ)
)
Zwróć uwagę na ostatni wiersz wewnątrz definicji funkcji: po obliczeniu bez argumentów princ
funkcja zwraca symbol zerowy, który nie jest wyświetlany w interfejsie wiersza poleceń programu AutoCAD . Ponieważ wiersz poleceń programu AutoCAD działa jako pętla odczytu, oceny i drukowania (REPL), normalnie wyświetla komunikat „Hello World!” do wiersza poleceń, po którym następuje natychmiast wartość zwracana przez wywołanie princ
. Dlatego bez końcowego wywołania princ
funkcji wynik byłby następujący:
Hello World!"\nHello World!"
prin1
Funkcja ta może być również stosowane w celu osiągnięcia tego samego wyniku.
Bardziej złożonym przykładem może być:
(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)
)
Powyższy kod definiuje nową funkcję, która generuje punkt programu AutoCAD w danym punkcie, z jednowierszowym obiektem tekstowym wyświetlającym obok niego współrzędne X i Y. Nazwa funkcji zawiera specjalny przedrostek „c:”, który powoduje, że AutoCAD rozpozna funkcję jako zwykłe polecenie. Użytkownik, po wpisaniu „etykiety punktu” w wierszu poleceń programu AutoCAD, zostanie poproszony o wybranie punktu przez wpisanie współrzędnych X i Y lub kliknięcie lokalizacji na rysunku. Następnie funkcja umieści znacznik w tym punkcie i utworzy obok niego jednowierszowy obiekt tekstowy zawierający współrzędne X i Y punktu wyrażone względem aktywnego układu współrzędnych użytkownika (LUW). Funkcja nie wymaga parametrów i zawiera jedną zmienną lokalną ('pnt').
Powyższy przykład można również napisać za pomocą wbudowanych poleceń programu AutoCAD, aby osiągnąć ten sam wynik, jednak takie podejście jest podatne na zmiany w wierszach poleceń między wydaniami programu AutoCAD.