AutoLISP
AutoLISP är en Lisp-dialekt byggd specifikt för AutoCAD och dess branschspecifika versioner. AutoLISP stöds inte i AutoCAD LT annat än med speciellt tredjepartsprogram.
Funktioner
[redigera | redigera wikitext]Förutom grundläggande Lisp-funktionalitet finns stöd för geometriska funktioner och funktioner för att manipulera objekt i AutoCAD. AutoLISP har stöd för funktioner som gör det möjligt för användaren att ge input i form av bl.a. text, siffror, koordinater, val av objekt via selection sets. DCL (Dialog Control Language) är ett språk som gör det möjligt att skapa interaktiva formulär i AutoCAD
; exempel på funktion kallad(hello_world) som visar texten "Hello World!" på kommandoraden
(defun hello_world ()
(princ "Hello World!"))
; exempel på hur kommandot "hello_world" skapas genom prefixet c:
(defun c:hello_world ()
(alert "Hello World!")
(princ))
; exempel på LISP:s flexibilitet
(setq a '(1 2 3))
(defun b (x)
(+ x 5))
(cond
((= a b) (princ "\n(a) and (b) are equal"))
((and (= (type a) 'INT) (= (type b) 'INT))
(princ (strcat "\n(a)+(b)=" (itoa (+ a b)))))
((and (= (type a) 'STR) (= (type b) 'STR))
(princ (strcat "\n(a)+(b)=" a b)))
((and (listp a) (= (type b) 'USUBR))
(mapcar '(lambda (x) (princ (b x))) a)))
med följande resultat på kommandoraden: 678 (6 7 8)
Förklaring av sista exemplet:
- setq sätter variablen a till en lista av tre tal (1 2 3).
- defun definierar en funktion b för att addera inargumentet med 5.
- cond testar a och b och utför olika saker beroende på vad de innehåller. I vårt fall är a en lista och b en användardefinierad funktion (USUBR), varför mapcar anropas.
- mapcar behandlar element för element i listan a, här genom att köra dem i funktionen b och skriva ut beräkningarna. Funktionen princ skriver därför ut talen 6, 7 och 8 utan mellanslag. Slutligen returneras mapcar:s hela beräkningsresultat som är listan (6 7 8).
Historik
[redigera | redigera wikitext]AutoLISP bygger på en mycket tidig version av XLISP skapad av David Betz. Språket introducerades av Autodesk i AutoCAD Version 2.18 i januari 1986.
Visual LISP, en förbättrad version av AutoLISP, inkluderar en integrerad utvecklingsmiljö (IDE) och kompilator ursprungligen utvecklad och såld som Vital LISP av en tredjepartsutvecklare, Basis Software. Vital LISP var en delmängd av AutoLISP men med bl.a. VBA-liknande tillgång till AutoCAD:s objektmodell, reaktorer (hantering av objekthändelser) och ActiveX-stöd. Den döptes om till Visual LISP vid Autodesks köp och såldes som tillägg till AutoCAD Version 14. I AutoCAD 2000 ingick Visual LISP som ersättning för ursprungliga AutoLISP. Visual LISP inkluderade dock AutoLISP-funktionaliteten.