export_csv: Separator-TYP (VF/GF) bauzeitig je Separator statt vom Wrapper-Blocknamen ableiten

csv:wrapper-strecke-typ (voriger Ansatz) las den Streckentyp aus dem
VF_n/GF_n-Wrapper-Blocknamen - falsch, weil ein einzelner Wrapper intern
mehrfach zwischen Foerderer- und Gefaellestrecke-Abschnitten wechseln kann
(HundM05 VF_1: 4 Separatoren, 2x VF, 2x GF). Jede Separator-Einfuegestelle in
vf_linienzug.lsp/Gefaellestrecke.lsp/vf_standard.lsp/vf_etage.lsp markiert
das frisch eingefuegte Staustrecke_Separator_SP_300_mm-Insert jetzt direkt
per XDATA (ssg-sep-typ-xdata-schreiben/-lesen, ssg_ks_insert.lsp). Der Export
liest den Marker am verpackten Original (nested-ent), nicht mehr am Wrapper.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Michael Stangl
2026-09-23 17:28:31 +02:00
co-authored by Claude Sonnet 5
parent c95a94c175
commit 2f56729308
7 changed files with 102 additions and 10 deletions
+32
View File
@@ -610,6 +610,38 @@
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)