export_csv: Separator-TYP-XDATA vom aeusseren Trennsteg statt vom geteilten Symbol lesen
Der letzte Fix markierte bauzeitig korrekt den aeusseren Staustrecke_Separator_SP_300_mm-Trennsteg, csv:sep-proxies-erzeugen las den Marker aber vom inneren Separator_SP-Symbol - das ist als Teil EINER gemeinsamen DWG-Blockdefinition zwischen ALLEN Separatoren der Zeichnung geteilt und kann keinen individuellen Marker tragen. Export sucht jetzt zusaetzlich den aeusseren Trennsteg (eigene Instanz je Separator) und ordnet ihn dem Symbol ueber die naechstliegende Weltposition zu. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
2f56729308
commit
42309c77d2
+45
-8
@@ -1036,6 +1036,38 @@
|
||||
erg
|
||||
)
|
||||
|
||||
;; --- Muster des AEUSSEREN Trennsteg-Blocks, der das Separator_SP-Symbol
|
||||
;; und den Streckentyp-Marker traegt ---
|
||||
;; ssg-sep-typ-xdata-schreiben (ssg_ks_insert.lsp) markiert bauzeitig NICHT
|
||||
;; das Separator_SP-Symbol selbst, sondern seinen Verpacker
|
||||
;; Staustrecke_Separator_SP_300_mm - der Grund: Separator_SP steckt als EIN
|
||||
;; einziges, von der DWG-Blockdefinition geteiltes Sub-INSERT in JEDER
|
||||
;; Staustrecke_Separator_SP_300_mm-Instanz (Block-Referenzen teilen sich ihre
|
||||
;; Definition), eine XDATA-Markierung dort waere also fuer JEDEN Separator
|
||||
;; der ganzen Zeichnung identisch. Staustrecke_Separator_SP_300_mm selbst ist
|
||||
;; dagegen pro Einfuegung eine EIGENE Instanz mit eigenem Handle - genau dort
|
||||
;; setzt der Bau seine Markierung.
|
||||
(defun csv:pattern-nested-separator-aussen ()
|
||||
"Staustrecke_Separator_SP_300_mm*"
|
||||
)
|
||||
|
||||
;; --- Naechstliegenden Record aus einer csv:nested-welt-records-Liste zu
|
||||
;; einem Weltpunkt finden --- (planare Distanz x/y reicht: die Symbole
|
||||
;; sitzen praktisch am selben Punkt wie ihr Verpacker, siehe
|
||||
;; csv:pattern-nested-separator-aussen)
|
||||
(defun csv:nested-record-naechster (pt records / best best-d rec dx dy d)
|
||||
(setq best nil best-d nil)
|
||||
(foreach rec records
|
||||
(setq dx (- (car (nth 3 rec)) (car pt)))
|
||||
(setq dy (- (cadr (nth 3 rec)) (cadr pt)))
|
||||
(setq d (+ (* dx dx) (* dy dy)))
|
||||
(if (or (null best-d) (< d best-d))
|
||||
(progn (setq best rec) (setq best-d d))
|
||||
)
|
||||
)
|
||||
best
|
||||
)
|
||||
|
||||
;; --- Temporaere Kopie je verpacktem Separator_SP-Symbol ---
|
||||
;; Setzt csv:nested-welt-records + csv:block-einfuegen-welt zusammen: fuer
|
||||
;; jeden Fund eine ECHTE Kopie DESSELBEN Blocks an derselben Weltlage.
|
||||
@@ -1044,25 +1076,30 @@
|
||||
;;
|
||||
;; 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)
|
||||
;; AEUSSEREN Trennsteg-Insert (csv:pattern-nested-separator-aussen), NICHT am
|
||||
;; Separator_SP-Symbol selbst (das ist Block-Definitions-geteilt, siehe dort)
|
||||
;; und 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 jeweiligen Separator-Insert (gesetzt bauzeitig
|
||||
;; in vf_linienzug.lsp/Gefaellestrecke.lsp/vf_standard.lsp/vf_etage.lsp,
|
||||
;; direkt nach dessen Einfuegung). Zuordnung Symbol<->Trennsteg ueber die
|
||||
;; naechstliegende Weltposition (beide sitzen praktisch am selben Punkt).
|
||||
(defun csv:sep-proxies-erzeugen ( / ms recs recs-aussen rec aussen-rec proxy proxy-liste)
|
||||
(setq recs (csv:nested-welt-records (csv:pattern-nested-separator)))
|
||||
(setq recs-aussen (csv:nested-welt-records (csv:pattern-nested-separator-aussen)))
|
||||
(if recs
|
||||
(progn
|
||||
(setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
|
||||
(foreach rec recs
|
||||
(setq aussen-rec (csv:nested-record-naechster (nth 3 rec) recs-aussen))
|
||||
(setq proxy (csv:block-einfuegen-welt ms (nth 2 rec) (nth 3 rec) (nth 4 rec)
|
||||
(nth 5 rec) (nth 6 rec) (nth 7 rec)
|
||||
(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)
|
||||
(ssg-sep-typ-xdata-lesen (nth 1 rec)))
|
||||
(if aussen-rec (ssg-sep-typ-xdata-lesen (nth 1 aussen-rec))))
|
||||
proxy-liste)))
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user