AutoLISP

Van Wikipedia, de gratis encyclopedie

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]

 (defun c:HelloWorld()      (princ "\nHello World")  ) 

Beispiel: zum Zeichnen eines Rechtecks[Bearbeiten | Quelltext bearbeiten]

  (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[Bearbeiten | Quelltext bearbeiten]

 (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[Bearbeiten | Quelltext bearbeiten]

 (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[Bearbeiten | Quelltext bearbeiten]

 ; 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[Bearbeiten | Quelltext bearbeiten]