AutoLISP
aus Wikipedia, der freien Enzyklopädie
AutoLISP 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 |
[Bearbeiten] Hello World
(Defun c:HelloWorld() (princ "\nHello World") )
[Bearbeiten] 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) )
[Bearbeiten] Beispiel: Ermittlung eines Abstandes in Autolisp
(defun c:Distanz() (setq old_osmode (getvar "osmode")) (command "'_setvar" "osmode" "1" nil) (setq P01 (getpoint "\nErster Punkt:")) (setq Distanz (getdist P01 "\nZweiter Punkt:" )) (princ "\nDistanzwert: ") (princ Distanz) (princ "\n , zugreifen in AutoCAD mit !DISTANZ ") (command "'_setvar" "osmode" old_osmode nil) )
[Bearbeiten] 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)
[Bearbeiten] Beispiel: setzt Objekten auf aktuellen Layer in Autolisp
Setzt gew„hlte Objekte auf den aktuellen Layer (defun c:selayer() (setq ak_layer (getvar "clayer")) (princ "Objekte setzen auf: <") (princ ak_layer) (princ "> alle Eigenschaften des Layers werden bernommen.") (command "_select" "k" pause)
- Layer Linientyp Farbe LTfaktor
(command "_change" "_p" "" "EI" "LA" ak_layer "LTY" "vonlayer" "FA" "vonlayer" "LTF" "1" "") (command "_redraw")
)
[Bearbeiten] 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
- Tools für AutoCAD, Eigens erstellte Tools zum Download