Files
dxfmakros/tests/test_export_sivas_zusammenfassen.py
s.hensch ea0e46a441 feat: Omniflo-Fahrstrecke (OMNI_FAHRSTRECKE) + Geruest-Dialoge ueberarbeitet
Fahrstrecke:
- Neuer Befehl OMNI_FAHRSTRECKE (+ _BESCHRIFTEN) im Omniflo-Menue,
  Daten aus data/json/omniflo_fahrstrecke.json, Vorlage dcl/fahrstrecke.dcl
- Nutzt die Linien-Logik des Geruest-Traegers (geruest-linien-starten,
  Dialog/Einfuegen/Beschriftung je Baugruppe parametriert)
- Muffen-Dummy wie beim Traeger, farbig nur wo in der JSON gesetzt
- Stueckliste: eigene Klasse "Omniflo Fahrstrecke" (GR_Fahrstrecke_*)

Geruest-Dialoge:
- DCL als statische Vorlagen mit //@NAME@-Platzhaltern
  (ssg-dcl-vorlage-fuellen in ssg_core), dcl/geruest.dcl neu
- Ein Dialog je Bereich (keine Bereichsumschaltung mehr)
- Varianten als Radiobuttons mit Artikelnummern im Label,
  "disabled": true graut Varianten aus
- Eine Befestigungsspalte (Gesamtanzahl) + Zeile "Sonstiges",
  Art.-Nr. unter jedem Anbauteil
- Winkel Platte (0/90): Anbauteile gedreht eingefuegt
- Kennzeichnung geaenderter Konfiguration, Ueberspeichern per Enter
- Traeger: Querstreben nur bei "mit_querstrebe": true

Konfigurationen im alten Format (oben/unten) werden beim Laden
uebernommen. Unit-Tests ergaenzt (599 gruen).
2026-10-13 11:02:23 +02:00

53 lines
2.0 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
test_export_sivas_zusammenfassen.py - zusammengefasste Sivas-Kopie
(<output>_zusammengefasst.csv, export_sivas.items_zusammenfassen).
Laeuft komplett ohne BricsCAD (reine Python-Logik).
"""
import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "lib"))
import export_sivas # noqa: E402
def _geruest(teileid, laenge="2500"):
return {"block_name": f"GR_{teileid}", "x": 0.0, "y": 0.0, "z": 0.0,
"rotation": 0.0,
"attribs": {"ID": teileid, "TEILEART": "Geruest Saeule 2 Zoll",
"ARTINR": "821006051,825002022,825002022",
"TEILEFARBE": "RAL7035,,",
"BEZEICHNUNG": "Saeule", "LAENGE": laenge}}
def test_gleiche_zeilen_werden_summiert():
items, _ = export_sivas.process_blocks(
[_geruest("0001"), _geruest("0002"), _geruest("0003", laenge="2800")])
assert len(items) == 6
zus = export_sivas.items_zusammenfassen(items)
# Laenge gehoert zum Schluessel: 2500er und 2800er bleiben getrennt
assert len(zus) == 4
assert [z["nr"] for z in zus] == [1, 2, 3, 4]
z = {(z["sivasnr"], z["laenge_mm"]): z for z in zus}
assert z[("825002022", "2500")]["anzahl"] == 4
assert z[("825002022", "2500")]["ids"] == ["0001", "0002"]
assert z[("821006051", "2500")]["anzahl"] == 2
assert z[("821006051", "2500")]["details"] == {export_sivas.MERKMAL_TEILEFARBE: "RAL7035"}
assert z[("825002022", "2800")]["anzahl"] == 2
assert z[("825002022", "2800")]["ids"] == ["0003"]
def test_eingabe_bleibt_unveraendert():
items, _ = export_sivas.process_blocks([_geruest("0001"), _geruest("0002")])
vorher = [export_sivas.format_csv_line(it) for it in items]
export_sivas.items_zusammenfassen(items)
assert [export_sivas.format_csv_line(it) for it in items] == vorher
def test_dateiname():
assert export_sivas.zusammengefasster_dateiname("x/500651_sivas.csv") == \
"x/500651_sivas_zusammengefasst.csv"