Automatisierung im CAD

Was ist AutoLISP?

LISP-Dialekt für AutoCAD

AutoLISP ist ein in AutoCAD eingebauter Dialekt der Programmiersprache LISP, mit dem du eigene Befehle definierst und wiederkehrende Zeichenschritte automatisch ablaufen lässt, ohne die Zeichnung von Hand durchzuklicken.

Wenn dieselbe Folge aus Layer setzen, Objekt zeichnen und Beschriftung platzieren dreißigmal am Tag vorkommt, lohnt es sich, sie einmal aufzuschreiben statt sie zu klicken.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Gehört zu
AutoCAD und dessen Umfeld
Sprachfamilie
LISP, alles Listen und Klammern
Dateiendung
.lsp, geladen über die Startgruppe
Verwechselt mit
Skriptdatei, die nur Befehle abspielt

Wie eine LISP-Routine aufgebaut ist

AutoLISP schreibt alles in Klammern und stellt die Funktion an den Anfang: (+ 2 3) ergibt 5. Ein eigener Befehl entsteht mit defun und dem Präfix c:, also (defun c:meinbefehl () ...), danach steht er in der Befehlszeile bereit wie jeder eingebaute Befehl. Werte landen mit setq in Variablen, Nutzereingaben holst du über getpoint, getreal oder getstring, und mit der Funktion command rufst du normale AutoCAD-Befehle auf.

Interessant wird es beim Zugriff auf vorhandene Objekte. ssget bildet einen Auswahlsatz, entget liest die Eigenschaften eines Objekts als Liste aus, entmod schreibt sie zurück. Damit lassen sich Hunderte Objekte in einem Durchlauf ändern, für die du sonst einzeln klicken müsstest.

Fertige Dateien haben die Endung .lsp und werden über APPLOAD geladen. Damit eine Routine bei jeder Zeichnung automatisch bereitsteht, gehört sie in die acaddoc.lsp oder in eine Datei, die von dort aus geladen wird. Der Ordner muss im Suchpfad für Support-Dateien stehen, sonst findet AutoCAD sie nicht.

Wofür Zeichenbüros AutoLISP einsetzen

Der häufigste Fall sind Hausstandards: eine Routine legt die Layer der Firmennorm an, setzt Farben und Linientypen, füllt den Zeichnungskopf mit Projektnummer und Datum. Was sonst jede Person leicht anders macht, läuft danach überall gleich ab.

Der zweite große Block ist Massenarbeit an vorhandenen Zeichnungen. Alle Texte einer bestimmten Höhe auf einen anderen Stil umstellen, Blöcke mit falschem Layer einsammeln, Attributwerte aus zugelieferten Plänen in eine Textdatei schreiben. Solche Aufgaben dauern von Hand Stunden und als Routine Sekunden.

Auch die Verbindung zu Nachbarsystemen läuft oft über LISP, etwa wenn Stücklistendaten aus Blockattributen gezogen und in einem Format ausgegeben werden, das die Warenwirtschaft einlesen kann.

Fehler, die Anfängern immer wieder passieren

Variablen sind in AutoLISP global, wenn du sie nicht ausdrücklich in der Argumentliste hinter einem Schrägstrich deklarierst. Eine Routine, die eine Variable namens p1 benutzt, überschreibt damit still die p1 einer anderen Routine. Der Fehler zeigt sich erst Wochen später und ist dann schwer zu finden.

Der zweite Klassiker sind Systemvariablen, die eine Routine umstellt und nicht zurücksetzt. Wer OSMODE für einen sauberen Ablauf auf null setzt und das Zurückschreiben vergisst, nimmt allen danach den Objektfang weg. Es lohnt sich, den alten Wert am Anfang zu sichern und am Ende wiederherzustellen.

Und drittens: Eine Routine ohne eigene Rückgängig-Gruppe zerlegt sich beim Zurücknehmen in ihre Einzelschritte. Wer den Ablauf zwischen die Aufrufe (command "_undo" "_begin") und (command "_undo" "_end") setzt, macht die ganze Aktion mit einem Klick rückgängig.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Nicht verwechseln

AutoLISP und was oft damit gleichgesetzt wird

AutoLISP gegen Visual LISP

Visual LISP erweitert AutoLISP um Funktionen mit dem Präfix vl-, vla- und vlax-, über die sich das Objektmodell von AutoCAD direkt ansprechen lässt. Der Sprachkern bleibt derselbe. Die früher mitgelieferte Entwicklungsumgebung VLIDE hat Autodesk dagegen mit AutoCAD 2021 eingestellt; geschrieben und getestet wird heute in Visual Studio Code mit der AutoCAD-AutoLISP-Erweiterung.

AutoLISP gegen Skriptdatei (SCR)

Eine SCR-Datei ist nur eine Liste von Befehlen und Eingaben, die nacheinander abgespielt werden. Bedingungen, Schleifen und Variablen kennt eine solche Datei nicht, weshalb sie sich für stumpfe Stapelverarbeitung eignet, aber nicht für Logik.

AutoLISP gegen .NET und ObjectARX

Für umfangreiche Zusatzanwendungen mit eigener Oberfläche greifen Entwicklerinnen und Entwickler zu den kompilierten Schnittstellen. Die sind schneller und mächtiger, verlangen aber eine echte Entwicklungsumgebung, während eine LISP-Datei mit einem Texteditor auskommt.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
In der Praxis

Der Nutzen entsteht erst, wenn die Routine bei allen im Büro läuft

Eine Routine, die nur auf dem Rechner ihres Autors funktioniert, ist keine Automatisierung, sondern ein Hobby. Damit sie überall startet, muss die Datei in einem Suchpfad liegen, der automatisch geladen wird, und dieser Ordner muss zusätzlich als vertrauenswürdig eingetragen sein. Sonst fragt AutoCAD bei jedem Start nach oder führt die Datei gar nicht erst aus.

Der zweite Punkt ist das Aufräumen. Eine Routine stellt unterwegs Systemvariablen um, etwa den Objektfang oder den aktuellen Layer, und setzt sie am Ende zurück. Bricht jemand mittendrin mit Escape ab, bleibt dieser Zwischenzustand stehen, und die nächste Stunde zeichnet die Kollegin ohne Fang auf dem falschen Layer. Eine eigene Fehlerbehandlung, die den Ausgangszustand wiederherstellt, gehört deshalb in jede Routine, die länger als drei Zeilen ist.

Und wenn du den ganzen Ablauf in eine Rückgängig-Gruppe klammerst, reicht später ein einziger Schritt, um alles zurückzunehmen. Ohne das klickt sich jemand vierzigmal rückwärts durch deine Zwischenschritte.

AutoLISP lernen

Wie du von der ersten Klammer zur einsatzfähigen Bürobibliothek kommst, erarbeiten die AutoCAD-Trainings mit Programmieranteil an Zeichnungen aus dem Alltag.

Wer sich vorher einen Überblick verschaffen will, findet bei den Angeboten zu andere CAD-Programme die passende Einordnung.

Häufige Fragen

Muss ich programmieren können, um mit AutoLISP anzufangen?
Nein. Die Sprache hat wenige Regeln, und die ersten nützlichen Routinen bestehen aus einer Handvoll Zeilen, die vorhandene AutoCAD-Befehle in der richtigen Reihenfolge aufrufen. Wer die Befehle und ihre Abfragen im Kopf hat, bringt die wichtigere Hälfte des Wissens schon mit.
Wo lege ich meine LISP-Dateien ab, damit sie beim Start geladen werden?
In einem eigenen Ordner, der in den Optionen unter den Suchpfaden für Support-Dateien eingetragen ist. Den Aufruf selbst setzt du in die acaddoc.lsp, die AutoCAD bei jeder geöffneten Zeichnung ausführt. Ein Netzlaufwerk als Ablage sorgt dafür, dass alle im Büro dieselbe Fassung nutzen.
Laufen meine Routinen auch in anderen CAD-Programmen?
Teilweise. BricsCAD unterstützt LISP weitgehend, sodass viele Routinen ohne Änderung durchlaufen. Sobald eine Routine allerdings auf Autodesk-eigene Objekte oder ActiveX-Funktionen zugreift, sind Anpassungen nötig.
Persönlich für dich da

Deine Ansprechpartner

Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant Inhouse-Trainings, die an euren eigenen Daten und Abläufen ansetzen.

AutoLISP im Kurs statt im Lexikon

Nachschlagen bringt dich bis zum Verstehen. Anwenden lernst du an echten Aufgaben.