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
(defun c:HelloWorld()
(princ "\nHello World")
)
Beispiel: zum Zeichnen eines Rechtecks
(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)
)
Beispiel: Ermittlung eines Abstandes in Autolisp
(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)
)
Beispiel: Drehen von Objekten in Autolisp
(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)
Beispiel: setzt Objekte auf den aktuellen Layer in AutoLisp
; 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" "")
)