ea0e46a441
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).
53 lines
2.0 KiB
Python
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"
|