• Home
  • Wann Sie heute LISP verwenden sollten, Teil 1
Wann Sie heute LISP verwenden sollten

LISP: Was alt ist, ist immer noch sehr neu

Willkommen zu Teil 1 meines ersten Posts im Bricsys Blog! Ich werde über die Programmierung von LISP und die Übertragung Ihres bestehenden Codes in die BricsCAD-Umgebung schreiben. Ich werde die Implementierung, Unterschiede anderer Umgebungen, Tipps & Tricks und andere Themen behandeln, die von unseren Lesern angefragt werden. Vielleicht kann ich Ihnen aber auch, wenn Sie sich LISP noch nicht angesehen haben, etwas ermutigen und Sie wissen lassen, dass LISP lebt und auch genutzt wird. Es ist eine Sprache, die für die Anpassung von BricsCAD definitiv eine Überlegung wert ist.
 
Zunächst einmal möchte ich Ihnen mitteilen, dass ich in den letzten Jahrzehnten mehrere tausend Zeilen in LISP geschrieben habe. Ich würde mich jedoch keineswegs als Experte bezeichnen. Ich kenne nicht alle vl-Befehle und auch einige der eher „fortschrittlichen“ Funktionen kenne ich bisweilen noch nicht. Bitte verzeihen Sie mir, wenn ich Ihnen eine Methode vorstelle, die vielleicht nicht die effizienteste ist, oder wenn ich Ihnen einen ganzen Absatz eines Codes vorschlage, der durch eine einzelne Funktion ersetzt werden könnte. Die Chancen stehen gut, dass ich nicht die geringste Ahnung hatte, dass eine „bessere“Funktion existiert! Ich stolpere noch immer regelmäßig über (für mich) neue Befehle. Und wenn das passiert, frage ich mich jedes Mal, wie viel Zeit mir diese neu entdeckte Funktion gespart hätte.
 
Vor einiger Zeit wurde ich von einem Kunden bezüglich meiner kontinuierlichen Kodierung in LISP gefragt. Ich dachte tatsächlich, dass es vielleicht eine mittlerweile veraltete Fertigkeit wäre. Denken Sie nur an (manuelle) Zeichenkünste und die Beherrschung von Vemco Drafting Machine – mittlerweile völlig überflüssig! Aber als ich die wahren Bedürfnisse meines Kunden betrachtete, fand ich mehr und mehr Gründe dafür, LISP-Funktionen zu aktualisieren oder neue zu entwickeln. Ich glaube, dass es Spaß machen wird, einige dieser Konzepte mit Ihnen zu teilen und Ihnen beim Start zu helfen.
 

Ist LISP das Rosetta Stone der CAD-Anpassung?

 Der Name „LISP“ stammt von den Wörtern „Listenverarbeitung“ [engl. List Processing]. Daten werden in .dwg-Dateien als Listen gespeichert und LISP liest, schreibt, ändert und speichert diese Daten. Das Beste daran ist jedoch, dass dieser Code plattformunabhängig ist. Er ist effizient, klein und flexibel. Ich persönlich bevorzuge die Einfachheit eines Entwicklungscodes gegenüber einer nicht kompilierten Sprache. Obwohl der LISP-Code nicht kompiliert werden muss, können Sie Ihre Programme verschlüsseln, um Ihren Quellcode zu schützen. Viele Programme, die ich vor 20 Jahren in „Vintage-“ Hardware/Software/Betriebssystemen geschrieben habe, arbeiten bis heute in aktuellen Versionen von BricsCAD mit geringfügigen oder keinen Änderungen.
 
Kürzlich wurde ich gebeten, ein Migrationsproblem für einen Kunden zu lösen, der von AutoCAD™ 2014 auf die Version 2016 wechselte. Das Standard-CAD-Setup dieses Unternehmens umfasste über 400 Programmdateien mit 123.000 Zeilen LISP-Code, mit etwa 4000 definierten Funktionen. Nach kurzer Suche stellte ich fest, dass das Hauptproblem in Zusammenhang mit einer Reihe an (kompilierten) ARX-Applikationen stand, die mit AutoCAD™ 2016 nicht kompatibel waren. Ihr LISP-Code, wovon der Großteil in den späten neunziger Jahren geschrieben wurde, lief perfekt.
 
Wenn ich um Beratung zur CAD-Standardmigration gebeten werde, ermittle ich als erstes, wie viel des Workflows eines Unternehmens von Drittanbieter-Tools abhängig ist. Dann prüfe ich, ob die Tools bestimmte Softwareversionen oder Plattformen benötigen. Häufig liegen die Probleme in hart-kodierten Ordnerpfaden, die aktualisiert werden müssen.
 
Warum sollte man LISP für kundenspezifische CAD-Programme verwenden?
 
Nun, was sind also die Gründe, kundenspezifische Programme in Ihrer CAD-Umgebung zu erstellen? Üblicherweise schreibe ich einen Code, um eine Prozess- oder Workflow-Automation zu verbessern, die in Zusammenhang mit spezifischen CAD-Entitäten oder CAD-Standards steht. Routinen können so einfach sein wie wenige Zeilen eines Codes. Diese Funktionen können Schichtmanipulationen durchführen, Entitätseigenschaften ändern, Zeichnungs-und XREF- Beziehungen automatisieren oder die Standardisierung von Plotting- und Publishing-Workflows unterstützen.
 
Diese Routinen können aber auch so komplex wie ein parametergesteuerter Gestaltungsprozess oder eine Applikation zur Automatisierung des Datenbankzugriffs sein. Wie bereits erwähnt, ist einer der wesentlichen Vorteile der Verwendung von LISP die geringe Größe und die herausragende Effizienz der Sprache in einer CAD-Umgebung. Im Beispiel, das wir in Teil 2 dieses Posts untersuchen werden, kann der LISP-Code zur Ausführung einer einfachen geometrischen Manipulation (bewegen und drehen) ein Bruchteil dessen sein, was in einer kompilierten Sprache (.NET, C, C++, u. a.) möglicherweise hätte geschrieben werden müssen.
 
Aus Platzgründen setze ich hier kein .NET- Beispiel ein. Wenn Sie aber wirklich sehen möchten, worüber ich spreche, googeln Sie einfach: „Einen Befehl zum Bewegen mit NET API erstellen“ und Sie werden einige Beispiele erhalten. Diese kompilierten Sprachen erfordern oft Hunderttausende von Codezeilen, um die grafischen Verhaltensweisen und intuitiven Schnittstellen zu erstellen, die Anwender in einer alltäglichen CAD-Umgebung erwarten.
 
(Dieser Post wird in Teil 2 fortgesetzt).
 
Sie können BricsCAD personalisieren, indem sie spezifische Programme hinzufügen, die in einer beliebigen der verschiedenen Programmiersprachen geschrieben wurden, die in BricsCAD funktionieren. Lesen Sie hier nach, welche APIs verfügbar sind.
 
Anpassung LISP-Programmierung Tutorial Vince Aman
 

(Dieser Beitrag wurde im Original von Vince Aman im Bricsys Blog veröffentlicht.)

Vince Aman
 Vince hat über 30 Jahre Erfahrung in Architektur, Produktion, Entwicklung und der .dwg-basierten CAD-/Softwareindustrie. Er hat kundenspezifische LISP-Anwendungen für die Prozessautomation, Daten-/Dateiübertragungen und Programmplattformkonvertierungen erstellt. Sie erreichen Vince unter www.vea-consulting.com.