export_csv: VF_n/GF_n-Einzelelemente zu Foerdereinheit/Gefaelleeinheit gruppieren

Die Einzelteil-Proxy-Zeilen (Boegen, Streckenelemente, Umlenk-/Motorstation)
aus der letzten Session sind fuer den Normalfall zu granular. Standardmaessig
(*csv-export-alle-elemente* = nil) fasst csv:unitmark-aktualisieren sie jetzt
zu je einer "Foerdereinheit"/"Gefaelleeinheit"-Zeile pro zusammenhaengendem
VF-/GF-Abschnitt einer Kette zusammen, mit einem persistenten Rechteck-Marker
(ZZ_UNIT_MARKER, analog ZZ_ASES_MARKER) auf der Bounding-Box-Vereinigung
aller enthaltenen Elemente. Der bisherige Rohdaten-Export bleibt ueber
(csv:export-alle-elemente-an) weiterhin verfuegbar.

Einheiten-Grenzen kommen rein export-seitig aus der sepliste (SEP/AS/ES in
echter Bau-Reihenfolge) plus dem bereits vorhandenen SSG_SEP_TYP je
Separator - eine bauzeitige Markierung in vf_linienzug.lsp/vf_standard.lsp/
vf_etage.lsp waere deutlich invasiver gewesen (3 unabhaengige Baupfade ohne
gemeinsamen Einstiegspunkt). csv:sepliste-partition (Lauflaengen-Kodierung
ueber die typisierte sepliste) und csv:element-unit-zuordnung (Zuordnung der
gesammelten Elemente per Kettenrichtungs-Projektion statt der nachweislich
unzuverlaessigen csv:nested-welt-records-Listenreihenfolge) sind reine,
dateifrei getestete Funktionen.

Korrigiert nebenbei eine falsche Annahme: L_VF_m/L_GF_m zaehlen pro Segment,
nicht pro Einheit - die tatsaechliche Einheiten-Anzahl kommt nur aus der
sepliste-Typfolge.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Michael Stangl
2026-09-24 23:46:41 +02:00
co-authored by Claude Sonnet 5
parent f751a90076
commit e7643bf181
6 changed files with 943 additions and 47 deletions
+26 -5
View File
@@ -76,16 +76,36 @@
# 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). Exportiert wird eine TEMPORAERE Kopie des
# jeweiligen Original-Blocks (csv:element-proxies-erzeugen, wie bei
# Separator/pattern_separator), die nach dem Export wieder geloescht wird.
# Vario_Kurve_* ist laut Code-Kommentar (vf_linienzug.lsp) aktuell nirgends
# im Projekt tatsaechlich eingefuegt - nur zur Vollstaendigkeit gelistet.
# (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_*
# 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.
# Staustrecke_SP_1000_mm wird beim Bau per Laenge NICHT-UNIFORM skaliert
# (insert-inclined-scaled-block) - csv:get-k-kos-strings beruecksichtigt das
# beim Lesen von K1/K2 (sx/sy/sz-Parameter). export_sivas.py schliesst diese
# 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
# 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
# pattern_nested_*-Muster aus (Stueckzahl steckt in ANZAHL_VF/ANZAHL_GF).
# ============================================================
[blockpattern]
@@ -109,6 +129,7 @@ pattern_nested_bogen= Gefaellebogen_*, Vario_Bogen_*, Vario_Kurve_*
pattern_nested_streckenelement= Staustrecke_SP_1000_mm*
pattern_nested_umlenkstation= Vario_Umlenkstation_*
pattern_nested_motorstation= Vario_Motorstation_*
pattern_unit_marker= ZZ_UNIT_MARKER*
pattern_ks_subblocks= KS_EIN, KS_AUS, K1, K2, K3, K4
[python]