CSV-Export: Nachbarschaft/bbox fuer Kreisel-Kreisel-Weichen, sepliste-Ketten und Separatoren repariert
Kreisel-Kreisel-Weichen fehlten bisher im Kreisel-Umlauf (compute_kreisel_umlauf), wodurch angrenzende Separatoren auf falsche/fehlende Nachbarn zeigten. Die kreisel_bounds-Matching-Box ignorierte ausserdem die tatsaechliche Kreiseldrehung (faelschlich als achsparallel angenommen), was bei gedrehten langen Kreiseln (Mubea Kreisel 0002) zu falschen Nachbarschaften fuehrte. Die sepliste-XDATA (AS/SEP/ES-Reihenfolge je VF_n/GF_n) wurde nie ans Python-Item durchgereicht - die gesamte Ketten-Nachbarschaftserkennung lief dadurch ins Leere. Nach dem Beheben entstand eine Doppelzaehlung: die in einer Kette verpackten Separatoren existieren bereits als echte Proxy-INSERTs (csv:sep-proxies-erzeugen); build_separator_kette_items erzeugte zusaetzlich eigene Zeilen aus der sepliste. Umgebaut zu map_separator_kette_items: ordnet die sepliste-Reihenfolge den vorhandenen Proxy-Items zu (Match ueber Wrapper-ID + INSERT-Punkt) statt neue Zeilen zu erzeugen - keine Doppelzaehlung mehr, Nachbarn korrekt gesetzt. Ausserdem: vla-getboundingbox scheiterte in einem realen Export bei ALLEN Bloecken (fehlende bbox ueberall), der Fehler wurde bisher still verschluckt. REGENALL vor der Export-Schleife behebt das; eine neue Diagnose (exp-bbox-fail) meldet kuenftige Ausfaelle statt sie zu verschlucken. Freie/eingebettete Separatoren ohne bbox bekommen zusaetzlich einen Fallback aus einer konfigurierbaren Symbol-Groesse (cfg/export.cfg [Boundingbox] separator_box_*). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -173,6 +173,24 @@ element_box_laenge_mm=250
|
||||
element_box_breite_mm=100
|
||||
element_box_hoehe_mm=30
|
||||
|
||||
# Feste Bounding-Box-Masse (mm) eines Separator-Symbols. Werden fuer die in
|
||||
# einer VF_n/GF_n-Kette EINGEBETTETEN Separatoren gebraucht, die seit der
|
||||
# Umstellung auf die "sepliste"-XDATA nicht mehr als eigene INSERT-Bloecke in
|
||||
# der Zeichnung liegen (frueher wurden sie nur kurzzeitig als Kopie erzeugt,
|
||||
# um sie zu nummerieren) - fuer sie kann vla-getboundingbox keine Box liefern,
|
||||
# es gibt kein reales Objekt mehr. Ohne Box nehmen diese Separatoren an der
|
||||
# Nachbarschafts-/Umlauf-Erkennung nicht teil (siehe lib/export_neighbors.py:
|
||||
# compute_kreisel_umlauf/compute_sensor_zuordnung brauchen item["_bbox"]).
|
||||
# Quelle der Masse: gemessenes Separator_SP-Symbol (Referenz-Export, achsen-
|
||||
# paralleles Symbol ~210 x 150 mm Grundflaeche, 3D-Hoehe ~14 mm). LAENGE liegt
|
||||
# laengs des Symbols (bei Drehung 0 entlang X), BREITE quer, HOEHE = Z. Die
|
||||
# tatsaechliche Welt-AABB wird beim Export aus diesen Massen + der Symbol-
|
||||
# Drehung berechnet (rotierte Box -> achsparallele Huelle). Defaults (falls
|
||||
# nicht gesetzt): 210 / 150 / 14.
|
||||
separator_box_laenge_mm=210
|
||||
separator_box_breite_mm=150
|
||||
separator_box_hoehe_mm=14
|
||||
|
||||
[Kreisel]
|
||||
# Kreisel-Durchmesser (Antriebs-/Spannstation AN8/SP8) in mm. Quelle der
|
||||
# Wahrheit ist data/json/component_defaults.json ("kreisel"."durchmesser",
|
||||
|
||||
Reference in New Issue
Block a user