- AutoLisp
-
AutoLISP [ˈɑːtoʊˌlɪsp] ist ein Dialekt der Programmiersprache LISP als 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. Mit Hilfe von AutoLISP lassen sich komplexe Umgebungen zur Handhabung von AutoCAD, beispielsweise hinsichtlich der Anwendung von Normteilen, erstellen.
Inhaltsverzeichnis
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" "") )
Weblinks
- LISP für ACAD Codeschnippsel und Downloads
- http://autocad.cad.de (dt.) Inoffizielle AutoCAD Hilfeseite auf cad.de
- Codebeispiel Bogenbemaßung
- Tutorial AutoLisp Einsteiger
- Tutorial AutoLisp Expert
Wikimedia Foundation.