Lisp – AutoLISP-Standardbibliotheken
Allgemeingültige AutoLISP-Routinen für AutoCAD, destilliert aus den historischen ACADSST-Makros (Schönenberger Systeme GmbH). Die drei ssg_-Bibliotheken sind projektunabhängig einsetzbar.
Ladereihenfolge
(load "pfad/ssg_load.lsp") ; lädt core → dialog → layer
Oder einzeln (Abhängigkeit beachten: ssg_dialog und ssg_layer setzen ssg_core voraus):
(load "pfad/ssg_core.lsp")
(load "pfad/ssg_dialog.lsp")
(load "pfad/ssg_layer.lsp")
Dateien
ssg_core.lsp – Kernbibliothek
Grundfunktionen für Umgebungssicherung, Benutzerinteraktion, Layer, Blöcke und Attribute.
| Funktion | Beschreibung |
|---|---|
ssg-start titel vars |
Systemvariablen sichern, CMDECHO aus, Undo-Gruppe öffnen |
ssg-end |
Systemvariablen wiederherstellen, Undo-Gruppe schließen |
ssg-errhan em |
Fehlerhandler – räumt auf und ruft ssg-end auf |
ssg-ques text defa |
Ja/Nein-Abfrage; defa=T → Default Ja, nil → Default Nein |
ssg-emsg text |
Fehlermeldung mit optionalem Signalton (ssg-bell) |
ssg-get-layer text |
Layer eines angeklickten Objektes ermitteln |
ssg-layer-ss name typ |
Auswahlsatz aller Objekte eines Layers (optional nach Typ filtern) |
ssg-make-layer name farbe aktiv |
Layer anlegen (falls nicht vorhanden) und optional aktivieren |
ssg-ss-foreach ss func |
Iteration über Auswahlsatz – func wird für jeden Entity-Name aufgerufen |
ssg-ss-redraw ss modus |
Alle Elemente eines Auswahlsatzes hervorheben (3), invertieren (4) oder normal (0) |
ssg-ss-add src dest |
Auswahlsatz src zu dest hinzufügen (in-place, mit Highlight) |
ssg-make-blockname pt |
Eindeutigen Blocknamen aus Einfügepunkt + Zeitstempel erzeugen |
ssg-insert-block layer farbe pfad pt xs ys rot |
Layer anlegen und Block einfügen |
ssg-make-block pt rotation ss |
Auswahlsatz als Block definieren und gleich einfügen; Name aus ssg-make-blockname |
ssg-attrib-set tag wert ersetzen |
Ein Attribut der letzten Einfügung setzen oder anfügen |
ssg-attrib-set-many alist |
Mehrere Attribute auf einmal setzen ('(("TAG" . "Wert") ...)) |
ssg-attrib-by-handle handle tag wert ersetzen |
Attribut eines Blocks anhand seines Entity-Handles suchen und ändern |
ssg-dialog-run dcl id init-fn accept-fn |
Generischer DCL-Dialog: laden, initialisieren, starten, entladen |
ssg-zoom-save |
Aktuelle View-Größe merken |
ssg-zoom-restore |
Auf gemerkte View-Größe zurückschalten (nur wenn verändert) |
ssg_dialog.lsp – Dialog-Pattern für Modul-Einfüge-Makros
Kapselt das wiederkehrende DCL-Muster: Dialog mit Vorschaubild, Radio-Auswahl, Block einfügen, Attribute setzen.
| Funktion | Beschreibung |
|---|---|
ssg-dia-show-slide tile lib name |
Vorschau-Slide im image-Tile aktualisieren (Bibliothek + Slide-Name) |
ssg-dia-update-preview tile idx lib liste |
Vorschau anhand Index-String aus Radio-/List-Tile aktualisieren |
ssg-modul-dialog dcl id sel-tile start-val prev-tile lib slides extra-init extra-read |
Vollständiger Modul-Dialog: lädt DCL, setzt Tiles, verknüpft Vorschau, liefert gewählten Index zurück |
ssg-insert-modul layer farbe pfad attribs rotation |
Standardsequenz: Layer anlegen → Punkt abfragen → Block einfügen → Attribute setzen |
Die Datei enthält außerdem ein auskommentiertes Template für neue c:BEFEHL-Definitionen nach dem SSG-Muster.
ssg_layer.lsp – Interaktive Layer-Verwaltung
Benutzerfreundliche AutoCAD-Befehle für Layer-Operationen. Alle Befehle sichern die Umgebung über ssg-start/ssg-end.
Hilfsfunktionen (intern):
| Funktion | Beschreibung |
|---|---|
ssg-layer-list-all |
Alle Layernamen als Liste |
ssg-layer-info-all |
Alle Layer als Assoziationslisten (Name, Farbe, Linientyp, Flags) |
ssg-layer-visible-p name |
Sichtbarkeitsstatus prüfen (T = sichtbar) |
ssg-layer-safe-p name gruppe |
Prüfen ob Layer ausgeschaltet werden darf (nicht aktiver Layer) |
ssg-layer-group name |
Gruppen-Kennung aus Layernahme extrahieren (Position 2–3) |
ssg-layer-rename-group name neu |
Neuen Layernamen mit geänderter Gruppen-Kennung berechnen |
ssg-layer-group-move alt neu |
Alle Objekte einer Layergruppe auf neue Gruppen-Kennung verschieben |
AutoCAD-Befehle:
| Befehl | Beschreibung |
|---|---|
c:SSG-LayerSet |
Layer des angeklickten Objektes als aktiven Layer setzen |
c:SSG-LayerInfo |
Layer des angeklickten Objektes anzeigen |
c:SSG-LayerMove |
Auswahlsatz auf Layer eines anderen Objektes verschieben |
c:SSG-LayerCopy |
Auswahlsatz kopieren und Kopie auf Ziel-Layer legen |
c:SSG-LayerMoveType |
Alle Objekte des gleichen Typs auf dem gleichen Layer verschieben |
c:SSG-LayerOff |
Layer durch Anklicken ausschalten (Schleife bis Enter) |
c:SSG-LayerFreeze |
Layer durch Anklicken einfrieren (Schleife bis Enter) |
c:SSG-FreezeAll |
Alle Layer außer einem einfrieren |
c:SSG-ThawAll |
Alle Layer auftauen |
c:SSG-LayerOnAll |
Alle ausgeschalteten Layer einschalten |
c:SSG-LayerDelete |
Layer mit Sicherheitsabfrage löschen (Objekte + Layer) |
ssg_load.lsp – Laderoutine
Lädt alle drei Bibliotheken in der richtigen Reihenfolge. Ermittelt den Pfad automatisch über findfile.
SSG_LIB_Commands.lsp – Dummy-Befehle für das SSG-Menü
Platzhalter-Definitionen für alle Menüeinträge des SSG-Menüsystems (ILS-Module, Kurven, Gefällestrecken). Gibt beim Aufruf eine Meldung aus. Wird durch echte Implementierungen ersetzt sobald die jeweiligen Blöcke und DCL-Dialoge vorliegen.
ILSModulInsert.lsp – ILS Kreisel-Modul-Einfügung
Einfügen von ILS-Kreisel-Modulen mit Abstand- und Typ-Konfiguration (mit/ohne PIN). Enthält Smart-Connect-Logik für automatische Positionierung. Befehl: c:KreiselInsert.
OmniModulInsert.lsp – Omni-Modul-Einfügung
Einfügen von Omni-Modulen. Befehl analog zu ILSModulInsert.
VarioFoerderer.lsp – Vario-Förderer
Umfangreiche Routinen für den Vario-Förderer (Strecken, Kurven, Sonderelemente). Größte Einzeldatei im Projekt.
tests.lsp – Testskript
Manuelle Tests für die Bibliotheksfunktionen. Nicht für den Produktiveinsatz laden.