export_csv: sepliste-Koordinaten (x/y) entfernen, nur noch typ/lfdnr/id

Validiert (Nutzer-Befund): die sepliste-XDATA-Koordinaten sind der rohe
Gruppencode-10-Punkt des jeweiligen Bau-Primitivs und teils gespiegelt/um
mehrere 100mm verschoben (z.B. Separator 0037: x=-5070.1 statt 5070.1,
ausserhalb der VF_1-Boundingbox). Die eigene Export-Zeile jedes Bauteils
(x/y aus der echten Proxy-Kopie) ist dagegen verlaesslich und liegt korrekt
in der Boundingbox. sepliste dient nur noch der ID-Zuordnung/Reihenfolge,
nicht mehr als Koordinatenquelle.

Der Python-Faellback in map_sepliste_kette_items (nur fuer SEP-Eintraege
ohne aufloesbares "id"-Feld, Altbestand) matchte bisher per naechstem
sepliste-Punkt - jetzt erster unverbrauchter Kandidat je Zuordnung, da keine
Koordinate mehr vorliegt. lib/dump_vf_kette_inhalt.py zeigt Position/Typ
jetzt ueber die ID-Verknuepfung zur eigenen Bauteil-Zeile statt ueber die
entfernten sepliste-Felder.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Michael Stangl
2026-09-24 10:58:53 +02:00
co-authored by Claude Sonnet 5
parent 42309c77d2
commit 4f1a0e0b5b
4 changed files with 71 additions and 22 deletions
+9 -4
View File
@@ -1153,7 +1153,8 @@ def _asel_collision_boxes(item, half_tol, box_dims):
# "sepliste" (item["sepliste"], von csv:block-to-json aus SSG_VF_SEP/
# SSG_GF_SEP-XDATA gelesen) ist die beim Bau in Baureihenfolge gesammelte
# Liste der Separator-/AS-/ES-Sub-Bloecke EINER VF_n/GF_n-Kette:
# [{"typ": "AS"|"SEP"|"ES", "lfdnr": int, "x": float, "y": float}, ...].
# [{"typ": "AS"|"SEP"|"ES", "lfdnr": int, "id": str}, ...] (kein x/y - siehe
# compute_sep_kette-Docstring).
# Ersetzt das bisherige Raten der Ketten-internen Reihenfolge (die Linie
# selbst wird nicht exportiert) durch die tatsaechliche Bau-Reihenfolge.
@@ -1168,7 +1169,7 @@ def compute_sep_kette(items, dbg=None):
naechste Eintrag in der Sepliste (die bereits in Baureihenfolge vorliegt)
- kein Rateverfahren noetig.
Rueckgabe: dict {key: {"typ", "x", "y", "id", "strecke_id", "vorgaenger",
Rueckgabe: dict {key: {"typ", "id", "strecke_id", "vorgaenger",
"nachfolger"}} - vorgaenger/nachfolger sind wieder solche keys, oder None
am jeweiligen Kettenende (Verkettung mit dem Kreisel-Umlauf uebernimmt
compute_kreisel_umlauf). "id" ist die TeileId des Bauteils, das diesen
@@ -1176,6 +1177,12 @@ def compute_sep_kette(items, dbg=None):
ZZ_ASES_MARKER, SEP ueber die beim Export ausgepackte temporaere
Separator_SP-Kopie - siehe csv:sepliste-ids-setzen, Lisp/export.lsp) -
leerer String, wenn (noch) keine ID zugewiesen wurde (Altbestand).
Kein x/y mehr: die sepliste-XDATA traegt seit 2026-09-25 keine
Koordinaten mehr (der rohe Gruppencode-10-Punkt des jeweiligen
Bau-Primitivs war teils gespiegelt/verschoben und keine verlaessliche
Positionsquelle - siehe export.lsp-Kommentar bei sepliste-teile). Die
verlaessliche Position steht an der eigenen Export-Zeile des Bauteils.
"""
result = {}
for item in items:
@@ -1190,8 +1197,6 @@ def compute_sep_kette(items, dbg=None):
key = keys[i]
result[key] = {
"typ": entry.get("typ", ""),
"x": entry.get("x", 0.0),
"y": entry.get("y", 0.0),
"id": str(entry.get("id", "")).strip(),
"strecke_id": sid,
"vorgaenger": keys[i - 1] if i > 0 else None,