AutoLISP
aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von AutoLisp)
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.
Hello World
[Bearbeiten | Quelltext bearbeiten ](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""") )