test_vario_teileart erwartete noch "VarioFoerderer", obwohl export_csv.py
seit Commit bf51747 (14 Commits zuvor) bewusst "ILS 2.0 Strecke" liefert -
ein VarioFoerderer ist ein Streckentyp. Test war seither stale, unabhaengig
von den foerderer_tests.json-Aenderungen dieser Session.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bisher waren Seite (links/rechts), ein erzwungener Rampenwinkel und die
Aufteilung der Gefaelle-Laenge auf Ein-/Auslauf im Testtreiber hart codiert
(immer "links", automatischer Winkel, 50/50-Split). Alle drei Werte sind
bereits als Parameter/Rueckgabewerte in vf_standard.lsp/vf_core.lsp
vorhanden - keine Aenderung an produktivem LISP-Code noetig, nur am
Testtreiber und der Testdatei.
Neue optionale JSON-Felder: seite, winkel, gf_verteilung (gleichmaessig/
vorne/hinten). Bestehende 12 Testfaelle bleiben unveraendert und
verhalten sich dank Default-Fallbacks identisch zu vorher.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Gefaellestrecke (GF_N): je Zeile eine Gruppe gleichartiger Bloecke (gleiche
Hoehe/Laenge/Winkel/Separatoren/Scanner/Typ), IDs und Bezeichnung als Array
statt einer einzigen Sammelzeile mit reiner Anzahl.
VarioFoerderer (VF_N): je Compound-Block eine eigene Zeile mit vollstaendigen
Gefaelle-/Angetrieben-Teilgruppen (Laengen, Winkel, Kurven, Foerderrichtung),
da VF_N immer TYP "Streckengruppe" ist. Lose Strecke-Elemente ausserhalb
eines VF_N-Blocks bleiben weiterhin in einer gruppierten IDs-Zeile.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Vollstaendiger i18n-Rollout ueber alle Feature- und Kernmodule: alle benutzersichtbaren princ/prompt/getXXX/alert-Texte laufen jetzt ueber die zentrale Sprachtabelle in ssg_lang.lsp (Deutsch/Englisch, umschaltbar via SSG_SPRACHE). 403 Tabelleneintraege, 497 Aufrufstellen in 17 Dateien.
Ausgeschlossen wie geplant: Debug-Ausgaben (dbg*), Lademeldungen, [DUMMY]-Platzhalter, [CFG]/[OMNI]-Diagnosemarker.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sivasnr-Werte mit 0_BGxxxxxx-Mustern werden jetzt ueber die neue
[container]-Config-Sektion in kommaseparierte Listen aufgeloest.
set_attributs.py kann nun explizit zwischen data/omniflo/2D und /3D
als Quellverzeichnis waehlen.
on_start.lsp entfernt:
Das Menue wird einmalig manuell per BricsCAD-Befehl _MENULOAD
eingerichtet. BricsCAD speichert die Menuregistrierung dauerhaft.
Ein externes Startup-Skript ist nicht mehr noetig.
Dokumentation aktualisiert:
CLAUDE.md: Lademechanismus neu beschrieben mit _MENULOAD-Anleitung,
Legacy-Liste bereinigt (on_start.lsp als entfernt eingetragen)
Lisp/README.md: Ladereihenfolge durch Menueeinrichtungs-Anleitung
ersetzt; ssg_load.lsp als Notfall-Alternative dokumentiert
doc/LispTests.md: Verweis auf ssg_load.lsp und on_start bereinigt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Die Datei wurde faelschlicherweise als unreferenziert geloescht.
on_start.lsp wird von BricsCAD ueber die Startup-Suite (APPLOAD)
automatisch geladen und ruft (ssg-lib-startup) auf, welches per
MENULOAD die SSG_LIB.mnu laedt. Ohne diesen Ladevorgang steht das
SSG_LIB-Menue in BricsCAD nicht zur Verfuegung.
Grund fuer die Verwechslung: der Eintrag in der BricsCAD Startup-
Suite liegt in den lokalen BricsCAD-Einstellungen (ausserhalb Git)
und war daher per grep im Repository nicht auffindbar.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
bin/on_start.lsp entfernt:
Das Laden aller Module uebernimmt heute vollstaendig SSG_LIB.mnl,
das automatisch beim MENULOAD geladen wird und ssg-ensure fuer
Lazy-Loading sowie alle Kern- und Feature-Module direkt ausfuehrt.
on_start.lsp war nirgendwo mehr referenziert (kein .bat, .mnu, .mnl
oder .lsp rief die Datei oder ssg-lib-startup noch auf).
Lisp/ssg_load.lsp: Pfadermittlung robuster gemacht:
base-path nutzt jetzt 1) DXFM_LISP, 2) findfile, 3) DWGPREFIX.
Vorher schlug findfile "ssg_core.lsp" fehl wenn DXFM_LISP nicht im
BricsCAD-Suchpfad war, load gab still den Fehlerstring zurueck und
ssg-load-config crashte mit "no function definition".
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SSG_RUN_ALL_TESTS liest die Testliste jetzt aus tests/alltests.json.
Pro Test konfigurierbar: JSON-Export (immer), DXF, DWG oder kein
Speichern der Zeichnung ueber das Feld 'save'.
lib/export_csv.py:
- CSV-Header vereinfacht: NachbarIds, Planquadrat und rotation-Spalten
entfernt (nicht im Sivas-Format benoetigt). Anzahl-Spalte auf festen
Wert 1 gesetzt.
- format_planquadrat() entfernt (war unused nach Header-Aenderung).
- process_blocks(): elem_nr startet bei 0 statt -1 (erster Block war
mit Nummer -1 ausgegeben worden).
- build_bogen_merkmale(), build_weiche_merkmale(): KurvenWinkel und
Radius werden jetzt explizit als float() gecastet, um sicherzustellen
dass JSON-Werte aus dem Katalog als Zahl und nicht als String landen.
- Felder nachbarids, planquadrat, rotation aus den item-Dicts entfernt.
lib/omniflo_utils.py:
- import_element_as_block(): prueft jetzt zuerst ob eine Block-
definition mit dem Zielnamen in der Quelldatei existiert (erzeugt
durch set_attributs.py). Falls ja, wird diese direkt importiert
statt des gesamten Modelspace. Das verhindert doppelte Entities wenn
set_attributs.py die Geometrie bereits in einen Block gefasst hat.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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>
lib/attradd.py -> lib/set_attributs.py: Name besser passend zum
Skript-Zweck (setzt Attribute, analog set_einfuegepkt / set_koords).
bin/add_attr.bat -> bin/set_attributs.bat entsprechend angepasst.
cfg/attradd.cfg: Kommentar auf neuen Skriptnamen aktualisiert.
HOEHE/DREHUNG-Eintraege aus [bogen] und [weiche] entfernt, da diese
Attribute jetzt dynamisch via ssg-cfg-or aus component_defaults.json
bezogen werden (nicht mehr als statische ATTDEF-Defaults noetig).
Ebenso RADIUS aus [weiche] entfernt (war redundant zu KurvenWinkel).
doc/tools.md und CLAUDE.md: Alle Verweise auf attradd.py auf
set_attributs.py aktualisiert.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>