AutoLISP

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

AutoLISP [ˈɑːtoʊˌlɪsp ] 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.

(defunc:HelloWorld()
(princ"\nHello World")
)

Beispiel: zum Zeichnen eines Rechtecks

[Bearbeiten | Quelltext bearbeiten ]
(defunc:recht2(/p1laengebreitewp2p3p4)
(setqp1(getpoint"\nEinfügepunkt: "))
(setqlaenge(getdistp1"\nLänge: "))
(setqbreite(getdistp1"\nBreite: "))
(setqw(getanglep1"\nEinfügewinkel: "))
(setqp2(polarp1wlaenge))
(setqp3(polarp2(+(/pi2)w)breite))
(setqp4(polarp3(+piw)laenge))
(command"linie"p1p2p3p4"s")
(princ)
)

Beispiel: Ermittlung eines Abstandes in Autolisp

[Bearbeiten | Quelltext bearbeiten ]
(defunc:Distanz()
(setqold_osmode(getvar"osmode"))
(setvar"osmode"1)
(setqP01(getpoint"\nErster Punkt:"))
(setqDistanz(getdistP01"\nZweiter Punkt:"))
(princ"\nDistanzwert: ")
(princDistanz)
(princ"\n , zugreifen in AutoCAD mit !DISTANZ ")
(setvar"osmode"old_osmode)
)

Beispiel: Drehen von Objekten in Autolisp

[Bearbeiten | Quelltext bearbeiten ]
(defunc:verdreh(/DrehpunktRadiusAuswahlErster_Punkt)
(setqDrehpunkt(getpoint"\nDrehen mit dem Kreis <Zentrum des Bezugskreis>: "))
(ifDrehpunkt
(progn
(setqRadius(abs(getdistDrehpunkt"\nRadius für den <Bezugskreis>:")))
(ifRadius
(command"Kreis"DrehpunktRadius)
);end if Radius
);end progn Drehpunkt
);end if Drehpunkt
(ifRadius
(setqAuswahl(ssget));Wählen der Elemente zum Drehen 
);end if Radius
(ifAuswahl
(progn
(setqErster_Punkt(getpointDrehpunkt"\nAusgangspunkt der Drehung [Schnittpunkt] mit dem <Bezugskreis>:"))
(ifErster_Punkt
(progn
(command"drehen"(ssget"V")""Drehpunkt"B"DrehpunktErster_Punktpausenil)
(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)

Beispiel: setzt Objekte auf den aktuellen Layer in AutoLisp

[Bearbeiten | Quelltext bearbeiten ]
; Setzt gewählte Objekte auf den aktuellen Layer
(defunc:selayer(/ak_layer)
(setqak_layer(getvar"clayer"))
(princ"\nObjekte setzen auf: <")
(princak_layer)
(princ"> alle Eigenschaften des Layers werden übernommen.")
(command"_change"(ssget)"""_p""_LA"ak_layer"_LT""_bylayer""_C""_bylayer""_S""1""")
)
Abgerufen von „https://de.wikipedia.org/w/index.php?title=AutoLISP&oldid=164588778"