export: Kettenbausteine ueber KS verketten, Einheiten neu gruppieren

K1/K2 und Boundingbox je Export-Zeile folgen jetzt dem echten
Kettenbaustein statt seinem Stellvertreter:
- Separator (all_elements): KS + bbox des 300-mm-Trennstegs statt des
  Sensor-Symbols; separator_track/group_vf_gf behalten das Symbol
- AS/ES (all_elements, group_vf_gf): KS + bbox des AS-/ES-Elements statt
  des 200x200-Markers ohne K
- gemeinsamer Kern csv:ks-welt-punkte; VF/GF-Wrapper-K1/K2 = K1 des AS
  bzw. K2 des ES

Gruppierter Export neu (sepliste-/XDATA-Algorithmus entfernt):
- Bausteine je Wrapper als Vektorkette K2 -> K1 ordnen (Start am AS)
- Foerdereinheit = Separator vor der Umlenkstation bis Motorstation,
  alles dazwischen Gefaelleeinheit (csv:kette-einheiten, Unit-Tests)
- je Einheit ein temporaerer Proxy mit 3D-Boundingbox, K1/K2, Laenge und
  Anzahl Boegen; wird nach dem Export geloescht (ausser csv_leave_proxies)
- IDs neuer Export-Objekte entlang der Kette AS -> ES aufsteigend

Weiteres:
- ssg-make-layer ohne _LAYER-Befehl fuer bestehende Layer (Konsole)
- einheitliche, zweisprachige Meldungen fuer behaltene Hilfskopien
- bin/show_exportcsv.bat: Export-CSV als Boundingbox-SVG (sps_skel)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Michael StanglandClaude Opus 5.5 committed 2026-09-25 20:25:29 +02:00
1 parent bc481de901
commit 394d476d56
13 files changed
+1017 -1037

No files matched your search

+15 -18
View File
@@ -76,14 +76,12 @@
# Gefaellestrecken-Segmente, Umlenk-/Motorstation). Wie pattern_schleuselement
# liegen sie NICHT als eigener top-level INSERT vor, sondern verpackt in der
# Wrapper-Blockdefinition - die Muster dienen der SUCHE dort
# (csv:nested-welt-records). Eine TEMPORAERE Kopie des jeweiligen Original-
# Blocks wird IMMER erzeugt (csv:element-proxies-erzeugen, wie bei Separator/
# pattern_separator - liefert die Positionsdaten fuer die Gruppierung unten)
# und nach dem Export IMMER wieder geloescht; als EIGENE Export-Zeile
# erscheinen sie aber NUR, wenn *csv-export-alle-elemente* (export.lsp) auf T
# gesetzt ist. Im Default (nil, gruppierter Modus) fasst
# csv:unitmark-aktualisieren sie stattdessen zu Foerdereinheit-/
# Gefaelleeinheit-Zeilen zusammen (siehe pattern_unit_marker). Vario_Kurve_*
# (csv:nested-welt-records). Im Modus all_elements wird je Baustein eine
# TEMPORAERE Kopie erzeugt (csv:element-proxies-erzeugen) und als eigene
# Export-Zeile ausgegeben, danach wieder geloescht. Im gruppierten Modus
# (group_vf_gf, Default) fasst csv:ketten-verarbeiten die Bausteine
# stattdessen zu Foerdereinheit-/Gefaelleeinheit-Zeilen zusammen (siehe
# pattern_unit_marker). Vario_Kurve_*
# ist laut Code-Kommentar (vf_linienzug.lsp) als "nirgends im Projekt
# tatsaechlich eingefuegt" dokumentiert - in der Praxis kommt es doch vor
# (siehe reale HundM05-Exporte), das Muster bleibt darum wirksam.
@@ -93,18 +91,17 @@
# vier Muster wie Separator/Scanner aus (Stueckzahl steckt schon in den
# GF_Bogen_*/VF_Bogen_*/ANZAHL_VF/ANZAHL_GF-Attributen des Wrappers).
#
# pattern_unit_marker: der Marker, den der Export je zusammenhaengendem
# pattern_unit_marker: der Proxy, den der Export im gruppierten Modus je
# Foerderer-Abschnitt ("Foerdereinheit") bzw. Gefaelle-Abschnitt
# ("Gefaelleeinheit") einer VF_n/GF_n-Kette setzt (ZZ_UNIT_MARKER, ein
# Rechteck auf der Bounding-Box-Vereinigung aller enthaltenen Boegen/
# Streckenelemente/Umlenk-/Motorstation-Mitglieder, csv:unitmark-
# aktualisieren in Lisp/export.lsp). Bleibt wie ZZ_ASES_MARKER dauerhaft in
# der Zeichnung stehen und behaelt seine ID ueber Exportlaeufe hinweg
# (Attribute ID/ZUORDNUNG/TYP/LFDNR/LAENGE_m/ANZAHL_BOEGEN/K1/K2, alle
# unsichtbar). Nur aktiv im gruppierten Modus (*csv-export-alle-elemente* =
# nil) - im Rohdaten-Modus werden keine neuen Marker angelegt, verwaiste
# Marker (z.B. nach einem Wechsel gruppiert->roh) werden aber immer
# aufgeraeumt. export_sivas.py schliesst dieses Muster wie die vier
# Rechteck auf der Bounding-Box-Vereinigung der enthaltenen Bausteine,
# csv:ketten-verarbeiten in Lisp/export.lsp). Die Kette wird dafuer als
# Vektorkette K2 -> K1 geordnet; eine Foerdereinheit reicht vom Separator vor
# der Umlenkstation bis zur Motorstation, alles dazwischen ist Gefaelle.
# Der Proxy ist ein reines Export-Hilfsmittel: er wird bei jedem Export neu
# erzeugt und danach geloescht, ausser der Debug-Schalter csv_leave_proxies
# ist gesetzt (Attribute ID/ZUORDNUNG/TYP/LFDNR/LAENGE_m/ANZAHL_BOEGEN/K1/K2,
# alle unsichtbar). export_sivas.py schliesst dieses Muster wie die vier
# pattern_nested_*-Muster aus (Stueckzahl steckt in ANZAHL_VF/ANZAHL_GF).
# ============================================================