export: Separator-Typ VF/GF aus der Ketten-Einheit statt Bau-XDATA

Der Typ (Merkmal "Typ") jeder Separator-Zeile kommt jetzt an EINER Stelle
aus der Einheiten-Schneidung csv:kette-einheiten (neu: csv:kette-sep-typen,
eingetragen in csv:ketten-verarbeiten) - dieselbe Quelle wie die
Einheiten-Boundingbox. VF = Separator direkt vor der Umlenkstation bzw.
zwischen Umlenk- und Motorstation, sonst GF.

Die bauzeitige XDATA SSG_SEP_TYP (ssg-sep-typ-xdata-schreiben/-lesen,
15 Einfuegestellen) entfaellt. Sie war teils falsch: der Separator vor dem
ES hinter einer Motorstation bekam "VF", und ein sep_nach-Separator einer
GF, den die folgende VF-Einheit als Einlauf nutzt, blieb "GF"
(HundM05: Sep1/5/7/9/11 und Sep2).

Unit-Tests csv:kette-sep-typen in tests/test_unit.lsp.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Samer Ayadi
2026-09-28 11:23:27 +02:00
co-authored by Claude Opus 5.5
parent 96ca43eff5
commit e67f7cc1aa
9 changed files with 85 additions and 105 deletions
-32
View File
@@ -610,38 +610,6 @@
ent
)
;; --- Streckentyp (VF/GF) EINES Separator-Inserts als XDATA vermerken ---
;; App "SSG_SEP_TYP", einzelne 1000-Gruppe = "VF"/"GF". Anders als die
;; Sepliste (EIN Eintrag je Wrapper, alle Separatoren zusammengefasst) sitzt
;; dieser Marker DIREKT am einzelnen Staustrecke_Separator_SP_300_mm-Insert -
;; noetig, weil ein einzelner VF_n/GF_n-Wrapper intern mehrfach zwischen
;; Foerderer- und Gefaellestrecke-Abschnitten wechseln kann (siehe
;; lib/dump_vf_kette_inhalt.py: HundM05 VF_1 hat 4 Separatoren, 2x VF, 2x GF).
;; Der Wrapper-Blockname (VF_n/GF_n) sagt darueber nichts aus und darf dafuer
;; NICHT herangezogen werden (fruehere Fehlannahme). Aufrufer: die
;; Separator-Einfuegestellen in vf_linienzug.lsp/Gefaellestrecke.lsp/
;; vf_standard.lsp/vf_etage.lsp, direkt nach gf-insert-hz-with-ks (ueber
;; entlast - zwischen Insert und Tag darf nichts anderes erzeugt werden).
;; Gelesen von csv:sep-proxies-erzeugen (export.lsp) am NESTED-Original
;; (nested-ent), bevor die temporaere Kopie entsteht.
(defun ssg-sep-typ-xdata-schreiben (ent typ)
(if (and ent typ)
(progn
(regapp "SSG_SEP_TYP")
(entmod (append (entget ent) (list (list -3 (list "SSG_SEP_TYP" (cons 1000 typ))))))
)
)
ent
)
;; Liest den Streckentyp-Marker zurueck. Rueckgabe: "VF"/"GF" oder nil (kein
;; Marker - z.B. Altbestand ohne den neuen Bauzeit-Tag).
(defun ssg-sep-typ-xdata-lesen (ent / xd app-data)
(setq xd (entget ent (list "SSG_SEP_TYP")))
(setq app-data (cdr (assoc -3 xd)))
(if app-data (cdr (cadr (car app-data))) nil)
)
;; Liest die Sepliste-XDATA. Rueckgabe: Liste von (typ lfdnr x y), oder nil
;; (kein/unbekanntes Sepliste-XDATA am Entity).
(defun ssg-sepliste-xdata-lesen (ent app-name / xd app-data werte)