Files
dxfmakros/Lisp
m.stangl cc301b318e JSON-Konfigurationssystem in ssg_core.lsp eingefuehrt
data/json/component_defaults.json: Neue zentrale Konfigurationsdatei
mit Standardwerten fuer alle Komponenten (kreisel, eckrad, omniflo,
vario, gefaelle, infrastruktur). Bisher waren Konstanten (Masse,
Farben, Toleranzen, Defaults) hart im LISP-Code eingebettet.

Lisp/ssg_core.lsp: JSON-Parser und Config-Zugriff hinzugefuegt:
  - ssg-read-file-lines: Datei zeilenweise einlesen
  - ssg-cfg-trim, ssg-cfg-split-comma: String-Hilfsfunktionen
  - ssg-cfg-parse-value, ssg-cfg-parse-array: JSON-Wert-Parser
    (unterstuetzt String, Zahl, Boolean, Array, null)
  - ssg-cfg-parse-section: JSON-Sektion zu Assoziationsliste parsen
  - ssg-load-config: Laedt component_defaults.json in *ssg-config*
  - ssg-cfg: Wert aus *ssg-config* lesen, nil wenn nicht vorhanden
  - ssg-cfg-or: Wert aus Config lesen mit Fallback-Default

Lisp/ssg_load.lsp: (ssg-load-config) wird direkt nach dem Laden von
ssg_core.lsp aufgerufen, sodass die Config beim Laden aller weiteren
Module bereits verfuegbar ist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 11:25:54 +02:00
..

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 23)
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.