AutoLISP — AutoLISP

AutoLISP
Rodzina Seplenienie
Zaprojektowany przez Dawid Betz
Deweloperzy Autodesk , oprogramowanie podstawowe
Po raz pierwszy pojawiły się styczeń 1986 ; 35 lat temu ( 1986-01 )
Wersja stabilna
13/luty 1995 ; 26 lat temu ( 1995-02 )
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).

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 princfunkcja 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 princfunkcji wynik byłby następujący:

Hello World!"\nHello World!"

prin1Funkcja 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.

Bibliografia

Linki zewnętrzne