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:
co-authored by
Claude Sonnet 5
parent
c95a94c175
commit
2f56729308
+46
-9
@@ -652,7 +652,9 @@
|
||||
(defun csv:block-to-json (ename include-bbox / ed blk-name layer pt rotation extrusion R-world
|
||||
handle attribs bbox bbox-json
|
||||
insert-quat insert-kos k-list warnung-json warnung-eintrag
|
||||
zuordnung-fix-json zuordnung-fix-eintrag sepliste-json sepliste-app sepliste
|
||||
zuordnung-fix-json zuordnung-fix-eintrag
|
||||
strecke-typ-json strecke-typ-eintrag
|
||||
sepliste-json sepliste-app sepliste
|
||||
sepliste-teile sepliste-first sepliste-ids sep-id)
|
||||
(setq ed (entget ename))
|
||||
(setq blk-name (cdr (assoc 2 ed)))
|
||||
@@ -747,6 +749,18 @@
|
||||
(setq zuordnung-fix-json
|
||||
(strcat ",\"zuordnung_fix\":\"" (csv:json-escape (cdr zuordnung-fix-eintrag)) "\""))
|
||||
)
|
||||
;; Streckentyp (VF/GF) DIESES EINZELNEN Separators, bauzeitig gesetzt
|
||||
;; (ssg-sep-typ-xdata-schreiben, siehe csv:sep-proxies-erzeugen/
|
||||
;; -zuordnung-setzen) - NICHT vom Wrapper-Blocknamen ableitbar, da ein
|
||||
;; VF_n/GF_n-Wrapper intern zwischen VF-/GF-Abschnitten wechseln kann.
|
||||
;; export_csv.py schreibt diesen Wert in die Merkmale der Proxy-Zeile
|
||||
;; (Feld "Typ").
|
||||
(setq strecke-typ-json "")
|
||||
(setq strecke-typ-eintrag (assoc handle *cs-sep-typ-by-handle*))
|
||||
(if strecke-typ-eintrag
|
||||
(setq strecke-typ-json
|
||||
(strcat ",\"strecke_typ\":\"" (csv:json-escape (cdr strecke-typ-eintrag)) "\""))
|
||||
)
|
||||
;; VF_n/GF_n-Wrapper: Separator-/AS-/ES-Reihenfolge aus der beim Bau
|
||||
;; geschriebenen XDATA lesen (siehe ssg-sepliste-xdata-lesen,
|
||||
;; ssg_ks_insert.lsp) und als "sepliste"-Array einbetten. Nur gesetzt, wenn
|
||||
@@ -808,6 +822,7 @@
|
||||
bbox-json
|
||||
warnung-json
|
||||
zuordnung-fix-json
|
||||
strecke-typ-json
|
||||
sepliste-json
|
||||
"}"
|
||||
)
|
||||
@@ -1026,6 +1041,15 @@
|
||||
;; jeden Fund eine ECHTE Kopie DESSELBEN Blocks an derselben Weltlage.
|
||||
;; Die AS-/ES-Kettenenden laufen NICHT mehr hierueber - fuer sie setzt
|
||||
;; csv:asmark-aktualisieren einen dauerhaften Marker (siehe dort).
|
||||
;;
|
||||
;; proxy-liste-Eintrag: (proxy-ename wrapper-ename typ (x y z) strecke-typ).
|
||||
;; strecke-typ = "VF"/"GF"/nil, gelesen von ssg-sep-typ-xdata-lesen AM
|
||||
;; VERPACKTEN ORIGINAL (nested-ent, nth 1 rec) - NICHT vom Wrapper-Blocknamen
|
||||
;; abgeleitet (fruehere Fehlannahme, siehe lib/dump_vf_kette_inhalt.py): ein
|
||||
;; einzelner VF_n/GF_n-Wrapper kann intern mehrfach zwischen Foerderer- und
|
||||
;; Gefaellestrecke-Abschnitten wechseln, der Marker sitzt daher direkt am
|
||||
;; Separator-Insert (gesetzt bauzeitig in vf_linienzug.lsp/Gefaellestrecke.lsp/
|
||||
;; vf_standard.lsp/vf_etage.lsp, direkt nach dessen Einfuegung).
|
||||
(defun csv:sep-proxies-erzeugen ( / ms recs rec proxy proxy-liste)
|
||||
(setq recs (csv:nested-welt-records (csv:pattern-nested-separator)))
|
||||
(if recs
|
||||
@@ -1037,7 +1061,8 @@
|
||||
(cdr (assoc 2 (entget (nth 0 rec))))))
|
||||
(if proxy
|
||||
(setq proxy-liste
|
||||
(cons (list proxy (nth 0 rec) (csv:proxy-typ (nth 2 rec)) (nth 3 rec))
|
||||
(cons (list proxy (nth 0 rec) (csv:proxy-typ (nth 2 rec)) (nth 3 rec)
|
||||
(ssg-sep-typ-xdata-lesen (nth 1 rec)))
|
||||
proxy-liste)))
|
||||
)
|
||||
)
|
||||
@@ -1060,20 +1085,32 @@
|
||||
;; Zuordnung ueber *cs-sep-fix-by-handle* (Key = Entity-Handle der Kopie)
|
||||
;; festgenagelt; cs-zuordnung-lauf uebernimmt sie unveraendert und zaehlt den
|
||||
;; Separator beim richtigen Carrier.
|
||||
;; proxy-liste = Records (proxy-ename wrapper-ename typ (x y z)), siehe
|
||||
;; csv:nested-proxies-erzeugen. Rueckgabe: Anzahl festgenagelter Kopien.
|
||||
;;
|
||||
;; Gleich nebenbei wird der bauzeitig ermittelte Streckentyp (VF/GF) dieses
|
||||
;; EINZELNEN Separators (nth 4 rec, siehe csv:sep-proxies-erzeugen) ueber
|
||||
;; *cs-sep-typ-by-handle* festgehalten. csv:block-to-json schreibt den Wert
|
||||
;; als "strecke_typ" mit in die Proxy-Zeile. NICHT vom Wrapper-Blocknamen
|
||||
;; ableiten (fruehere Fehlannahme) - ein einzelner VF_n/GF_n-Wrapper kann
|
||||
;; intern mehrfach zwischen VF- und GF-Abschnitten wechseln.
|
||||
;; proxy-liste = Records (proxy-ename wrapper-ename typ (x y z) strecke-typ),
|
||||
;; siehe csv:sep-proxies-erzeugen. Rueckgabe: Anzahl festgenagelter Kopien.
|
||||
(defun csv:sep-proxies-zuordnung-setzen (proxy-liste / rec proxy wrapper wrapper-id
|
||||
handle gesetzt ohne-id)
|
||||
handle gesetzt ohne-id strecke-typ)
|
||||
(setq gesetzt 0 ohne-id 0)
|
||||
(setq *cs-sep-fix-by-handle* nil)
|
||||
(setq *cs-sep-typ-by-handle* nil)
|
||||
(foreach rec proxy-liste
|
||||
(setq proxy (nth 0 rec))
|
||||
(setq wrapper (nth 1 rec))
|
||||
(setq handle (cdr (assoc 5 (entget proxy))))
|
||||
(setq strecke-typ (nth 4 rec))
|
||||
(if strecke-typ
|
||||
(setq *cs-sep-typ-by-handle*
|
||||
(cons (cons handle strecke-typ) *cs-sep-typ-by-handle*)))
|
||||
(setq wrapper-id (cdr (assoc "ID" (ssg-attrib-read wrapper))))
|
||||
(if (and wrapper-id (> (strlen wrapper-id) 0))
|
||||
(progn
|
||||
(ssg-attrib-set-on proxy (list (cons "ZUORDNUNG" wrapper-id)))
|
||||
(setq handle (cdr (assoc 5 (entget proxy))))
|
||||
(setq *cs-sep-fix-by-handle*
|
||||
(cons (cons handle wrapper-id) *cs-sep-fix-by-handle*))
|
||||
(setq gesetzt (1+ gesetzt))
|
||||
@@ -1192,9 +1229,8 @@
|
||||
)
|
||||
|
||||
;; --- Nach der ID-Vergabe: ID jeder Kopie an ihren sepliste-Eintrag haengen ---
|
||||
;; proxy-liste = Records (proxy-ename wrapper-ename typ (x y z)) aus
|
||||
;; csv:sep-proxies-erzeugen UND csv:schleus-proxies-erzeugen - beide Listen
|
||||
;; zusammen uebergeben, AS/ES und SEP stehen in DERSELBEN sepliste.
|
||||
;; proxy-liste = Records (proxy-ename wrapper-ename typ (x y z) strecke-typ)
|
||||
;; aus csv:sep-proxies-erzeugen (das 5. Feld wird hier nicht gebraucht).
|
||||
;; MUSS nach ssg-id-check-all laufen: vorher hat eine frisch erzeugte Kopie
|
||||
;; noch keine ID.
|
||||
;;
|
||||
@@ -1590,6 +1626,7 @@
|
||||
(foreach rec proxy-liste (entdel (car rec)))
|
||||
)
|
||||
(setq *cs-sep-fix-by-handle* nil)
|
||||
(setq *cs-sep-typ-by-handle* nil)
|
||||
(setq *csv-sepliste-id-by-handle* nil)
|
||||
(princ)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user