AutoLISP
AutoLISP [<templatestyles src="IPA/styles.css" />
| ] <phonos file="{{{Tondatei}}}"></phonos>
}}{{#invoke:TemplatePar|check
|all= 1= |opt= 2= Tondatei= |template=Vorlage:IPA |errNS= 0 |cat=Wikipedia:Vorlagenfehler/Vorlage:IPA |format=@@@ }}] ist ein Dialekt der Programmiersprache LISP und Bestandteil des verbreiteten CAD-Programmes AutoCAD.
Mit Hilfe von AutoLisp können Funktionen in einem AutoCAD-System hinzugefügt, gelöscht und geändert werden. Um dies zu gewährleisten, gibt es spezielle AutoLisp-Routinen, die direkt auf die AutoCAD-Datenbasis zugreifen können. Das sind im Wesentlichen Funktionen zur Behandlung von Koordinateneingaben, deren zeichnerische Umsetzung in CAD-Elemente, wie Linie, Kreis usw. möglich ist. Mit Hilfe von AutoLISP lassen sich komplexe Umgebungen zur Handhabung von AutoCAD, beispielsweise hinsichtlich der Anwendung von Normteilen, erstellen.
Hello World
<syntaxhighlight lang="lisp" highlight="2">
(defun c:HelloWorld()
(princ "\nHello World")
)
</syntaxhighlight>
Beispiel: zum Zeichnen eines Rechtecks
<syntaxhighlight lang="lisp">
(defun c:recht2 ( / p1 laenge breite w p2 p3 p4) (setq p1 (getpoint "\nEinfügepunkt: ")) (setq laenge (getdist p1 "\nLänge: ")) (setq breite (getdist p1 "\nBreite: ")) (setq w (getangle p1 "\nEinfügewinkel: ")) (setq p2 (polar p1 w laenge)) (setq p3 (polar p2 (+(/ pi 2)w) breite)) (setq p4 (polar p3 (+ pi w) laenge)) (command "linie" p1 p2 p3 p4 "s") (princ) )
</syntaxhighlight>
Beispiel: Ermittlung eines Abstandes in Autolisp
<syntaxhighlight lang="lisp" >
(defun c:Distanz() (setq old_osmode (getvar "osmode")) (setvar "osmode" 1) (setq P01 (getpoint "\nErster Punkt:")) (setq Distanz (getdist P01 "\nZweiter Punkt:" )) (princ "\nDistanzwert: ") (princ Distanz) (princ "\n , zugreifen in AutoCAD mit !DISTANZ ") (setvar "osmode" old_osmode) )
</syntaxhighlight>
Beispiel: Drehen von Objekten in Autolisp
<syntaxhighlight lang="lisp" >
(defun c:verdreh (/ Drehpunkt Radius Auswahl Erster_Punkt)
(setq Drehpunkt (getpoint "\nDrehen mit dem Kreis <Zentrum des Bezugskreis>: "))
(if Drehpunkt
(progn
(setq Radius (abs (getdist Drehpunkt "\nRadius für den <Bezugskreis>:")))
(if Radius
(command "Kreis" Drehpunkt Radius )
);end if Radius
);end progn Drehpunkt
);end if Drehpunkt
(if Radius
(setq Auswahl (ssget ) ) ;Wählen der Elemente zum Drehen
);end if Radius
(if Auswahl
(progn
(setq Erster_Punkt (getpoint Drehpunkt "\nAusgangspunkt der Drehung [Schnittpunkt] mit dem <Bezugskreis>:"))
(if Erster_Punkt
(progn
(command "drehen" (ssget "V") "" Drehpunkt "B" Drehpunkt Erster_Punkt pause nil)
(command "Löschen" "L" "" )
);end progn Erster_Punkt
);end if Erster_Punkt
);end progn Auswahl
); end if Auswahl
); Ende der Funktion verdreh
(princ "\nVERDREH.LSP wurde geladen.." )
(princ "\nStarten mit verdreh \n")
(princ)
</syntaxhighlight>
Beispiel: setzt Objekte auf den aktuellen Layer in AutoLisp
<syntaxhighlight lang="lisp" >
; Setzt gewählte Objekte auf den aktuellen Layer (defun c:selayer(/ ak_layer) (setq ak_layer (getvar "clayer")) (princ "\nObjekte setzen auf: <") (princ ak_layer) (princ "> alle Eigenschaften des Layers werden übernommen.") (command "_change" (ssget) "" "_p" "_LA" ak_layer "_LT" "_bylayer" "_C" "_bylayer" "_S" "1" "") )
</syntaxhighlight>