Notice: Unexpected clearActionName after getActionName already called in /var/www/html/includes/context/RequestContext.php on line 338
AutoLISP – Wikipedia (Deutsch) – Lokale Kopie Zum Inhalt springen

AutoLISP

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von AutoLisp)

AutoLISP [<templatestyles src="IPA/styles.css" />{{#if:|[}}ˈɑːtoʊˌlɪsp{{#if:

    | ] <phonos file="{{{Tondatei}}}"></phonos>
  }}{{#invoke:TemplatePar|check

|all= 1= |opt= 2= Tondatei= |template=Vorlage:IPA |errNS= 0 |cat=Wikipedia:Vorlagenfehler/Vorlage:IPA |format=@@@ }}] 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

<syntaxhighlight lang="lisp" highlight="2">

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

</syntaxhighlight>

Beispiel: zum Zeichnen eines Rechtecks

<syntaxhighlight lang="lisp">

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

</syntaxhighlight>

Beispiel: Ermittlung eines Abstandes in Autolisp

<syntaxhighlight lang="lisp" >

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

</syntaxhighlight>

Beispiel: Drehen von Objekten in Autolisp

<syntaxhighlight lang="lisp" >

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

</syntaxhighlight>

Beispiel: setzt Objekte auf den aktuellen Layer in AutoLisp

<syntaxhighlight lang="lisp" >

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

</syntaxhighlight>

Weblinks