Das Kefk Network Wiki befindet sich im Testbetrieb.


AutoLISP

Aus Kefk.

Wechseln zu: Navigation, Suche

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

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"))
 (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)
)

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 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") 

)

Weblinks

Persönliche Werkzeuge