CSV-Export: Bounding-Box (Position/Boundingbox) und Planquadrat-Spalte ergaenzt

Nur EXPORTCSV betroffen, EXPORTSIVAS bleibt unveraendert:
- Position/Boundingbox: Bounding-Box je Block per vla-getboundingbox
  (Lisp/export.lsp, csv:get-bbox), Mittelpunkt und Ausdehnung x/y/z.
- Planquadrat: aus x/y-Koordinate berechnet nach cfg/export.cfg
  [Planquadrate] (Schrittweite, numerisch/alphabetisch je Achse,
  alphabetische Zaehlung mit Excel-Spalten-Umlauf Z->AA), siehe
  lib/export_planquadrat.py.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 12:49:25 +02:00
parent a0fd5d83bd
commit 193b0dea04
7 changed files with 367 additions and 127 deletions
+9 -9
View File
@@ -202,8 +202,8 @@ class TestFoerdererExportCSV:
def test_header_felder(self):
"""CSV-Header muss korrekte Spaltenbezeichnungen haben."""
expected = ["Elementnummer", "TeileArt", "TeileId",
"Bezeichnung", "Anzahl", "Merkmale"]
expected = ["Elementnummer", "TeileArt", "TeileId", "Bezeichnung",
"Planquadrat", "Anzahl", "Position", "Boundingbox", "Merkmale"]
for i, name in enumerate(expected):
assert self.header[i] == name, (
f"Header[{i}]: erwartet '{name}', ist '{self.header[i]}'"
@@ -226,19 +226,19 @@ class TestFoerdererExportCSV:
def test_anzahl_spalte_ist_eins(self):
"""Anzahl-Spalte muss fuer alle Zeilen '1' sein."""
for i, row in enumerate(self.rows):
if len(row) < 5:
if len(row) < 6:
continue
assert row[4] == "1", (
f"Zeile {i + 2}: Anzahl={row[4]}, erwartet 1"
assert row[5] == "1", (
f"Zeile {i + 2}: Anzahl={row[5]}, erwartet 1"
)
def test_merkmale_sind_valides_json(self):
"""Merkmale-Spalte muss valides JSON enthalten."""
for i, row in enumerate(self.rows):
if len(row) < 6:
if len(row) < 9:
continue
try:
json.loads(row[5])
json.loads(row[8])
except json.JSONDecodeError as e:
pytest.fail(f"Zeile {i + 2}: Merkmale ist kein valides JSON: {e}")
@@ -247,9 +247,9 @@ class TestFoerdererExportCSV:
required = {"Typ", "Winkel", "DeltaH_mm", "DeltaL_mm",
"L_VF_m", "Hoehe_Von_mm", "Hoehe_Bis_mm"}
for i, row in enumerate(self.rows):
if len(row) < 6:
if len(row) < 9:
continue
merkmale = json.loads(row[5])
merkmale = json.loads(row[8])
missing = required - set(merkmale.keys())
assert not missing, (
f"Zeile {i + 2}: Fehlende Merkmale-Felder: {missing}"