[FEAT] Verpackte Separator_SP-Sensoren in VF_n/GF_n/KREISEL_n vor Export erfassen
Separator_SP_2D/_3D-Sensorsymbole, die beim Zusammenbau der Compound-Bloecke (VF_n/GF_n/KREISEL_n) als Sub-INSERT in deren Blockdefinition verpackt wurden, waren fuer (ssget "X" ...) unsichtbar und blieben daher ohne eigene ID und ohne Zeile im Export-JSON. csv:sep-proxies-erzeugen (export.lsp) sucht solche verpackten Symbole jetzt vor jedem EXPORTCSV/EXPORTSIVAS ueber den neuen rekursiven Helfer ssg-collect-nested-inserts (ssg_core.lsp) und legt fuer jeden Fund eine echte, temporaere Kopie an seiner Weltposition an (silent ueber vla-InsertBlock statt command-line INSERT). Diese Kopie durchlaeuft ID-Vergabe/Export unveraendert ueber die bestehenden Funktionen und wird danach wieder entfernt (csv:sep-proxies-loeschen). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -746,6 +746,51 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; --- Sub-INSERTs einer Blockdefinition nach Namensmuster sammeln ---
|
||||
;; bname = Name einer Blockdefinition (z.B. eines VF_n/GF_n-Compound-Blocks)
|
||||
;; pattern = wcmatch-Muster, z.B. "Separator_SP*,S-LP*"
|
||||
;; Beim finalen Zusammenbau von VF_n/GF_n/KREISEL_n (ssg-block-wrap-welt bzw.
|
||||
;; das abschliessende "_.-BLOCK") werden alle bis dahin einzeln eingefuegten
|
||||
;; Bauteile - inkl. Sensoren wie Separator_SP, die vorher eigene, top-level
|
||||
;; INSERTs waren - zu Sub-INSERTs IN DER Compound-Blockdefinition. Sie
|
||||
;; verlieren dadurch ihre Sichtbarkeit fuer (ssget "X" ...): das findet nur
|
||||
;; Entities im Modell-/Papierraum, keine Entities innerhalb einer
|
||||
;; Blockdefinition. csv:sep-proxies-erzeugen (export.lsp) nutzt diese
|
||||
;; Funktion, um genau die verpackten Separator_SP-Symbole vor dem Export
|
||||
;; aufzuspueren und je eine echte, temporaere Kopie daneben einzufuegen -
|
||||
;; die durchlaeuft ID-Vergabe/Export danach ganz normal ueber die
|
||||
;; unveraenderten ssg-id-check-all/csv:collect-export-blocks. Rekursiv,
|
||||
;; falls ein Treffer selbst nochmal in einem weiteren Sub-Compound-Block
|
||||
;; steckt. Rueckgabe: Liste von Entity-Namen (aus der Blockdefinition, kein
|
||||
;; Selection-Set - sie sind nicht Space-resident und daher fuer ssadd nicht
|
||||
;; sicher verwendbar), oder nil. Die gefundenen Entity-Namen bleiben ueber
|
||||
;; entget normal lesbar (Blockname/Einfuegepunkt/Rotation), sollten aber
|
||||
;; NICHT direkt exportiert werden - eine eigene Bounding-Box
|
||||
;; (vla-getboundingbox) liefert fuer sie keine sinnvollen Weltkoordinaten,
|
||||
;; da sie nicht Space-resident sind.
|
||||
(defun ssg-collect-nested-inserts (bname pattern / blk-tbl sub-ent sub-ed sub-bname result)
|
||||
(setq blk-tbl (tblsearch "BLOCK" bname))
|
||||
(if blk-tbl
|
||||
(progn
|
||||
(setq sub-ent (entnext (cdr (assoc -2 blk-tbl))))
|
||||
(while sub-ent
|
||||
(setq sub-ed (entget sub-ent))
|
||||
(if (= (cdr (assoc 0 sub-ed)) "INSERT")
|
||||
(progn
|
||||
(setq sub-bname (cdr (assoc 2 sub-ed)))
|
||||
(if (wcmatch sub-bname pattern)
|
||||
(setq result (cons sub-ent result))
|
||||
(setq result (append result (ssg-collect-nested-inserts sub-bname pattern)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(setq sub-ent (entnext sub-ent))
|
||||
)
|
||||
)
|
||||
)
|
||||
result
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; GEMEINSAMES ATTRIBUT-SCHEMA FUER STRECKEN-BLOECKE
|
||||
;; (Gefaellestrecke + VarioFoerderer, feste Reihenfolge)
|
||||
|
||||
Reference in New Issue
Block a user