aaf47ab3c1
dxf_anlage_export.py und dxf_scan_components.py fuehrten dieselben Feldnamen (abstand, deltaL_mm, as_seite, ...) aus doc/json-input-lisp.md unabhaengig als lose String-Literale - ein Tippfehler oder eine Schema-Aenderung in nur einer Datei waere nicht aufgefallen. Neues Modul lib/testdata_schema.py buendelt die Feldnamen/festen Werte der dokumentierten Schemas (Kreisel, Einzelblock, VF Standard/Etage, Gefaellestrecke Modus 1) als benannte Konstanten; dxf_anlage_export.py nutzt sie jetzt durchgaengig. dxf_scan_components.py bewusst NICHT mitumgebaut: deutlich grösser/komplexer, mit zusaetzlichen Sonderfaellen (z.B. "startpunkt"/"gerade"-Form), ein vollstaendiger Umbau haette den Rahmen dieser Aenderung gesprengt und mehr Risiko als Nutzen gehabt. Verhaltensgleich: alle 9 Tests in tests/test_dxf_anlage_export.py laufen weiterhin gruen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
testdata_schema.py - Feldnamen und feste Werte der JSON-Testdaten-Schemas aus
|
|
doc/json-input-lisp.md, als einzige Quelle fuer alle Erzeuger.
|
|
|
|
Bisher standen dieselben Feldnamen ("function", "abstand", "deltaL_mm",
|
|
"as_seite", ...) als lose String-Literale unabhaengig in dxf_scan_components.py
|
|
(fremde Zeichnungen) UND dxf_anlage_export.py (eigene, mit unseren Makros
|
|
gebaute Zeichnungen) - ein Tippfehler oder eine Schema-Aenderung in nur einer
|
|
der beiden Dateien waere nicht aufgefallen. Dieses Modul buendelt sie an
|
|
einer Stelle; die LISP-Treiber (tests/test_*.lsp) lesen die JSON-Keys direkt
|
|
als Strings und sind davon nicht betroffen.
|
|
|
|
Nur Feldnamen/feste Werte, KEINE Validierung oder Default-Logik - die bleibt
|
|
bewusst in den jeweiligen Erzeugern, deren Kontext (fremde vs. eigene
|
|
Zeichnung) unterschiedliche Fallbacks braucht.
|
|
"""
|
|
|
|
# --- Gemeinsame Felder ---
|
|
F_FUNCTION = "function"
|
|
F_ID = "id"
|
|
F_TEST_ID = "test_id"
|
|
F_BLOCK = "block"
|
|
F_X = "x"
|
|
F_Y = "y"
|
|
F_Z = "z"
|
|
F_ROTATION = "rotation"
|
|
F_COMMENT = "comment"
|
|
|
|
FUNC_INSERT = "insert"
|
|
FUNC_CONNECT = "connect"
|
|
|
|
# --- Abschnitt 1 (json-input-lisp.md): Kreisel ---
|
|
F_ABSTAND = "abstand"
|
|
F_TYP = "typ"
|
|
F_DREHRICHTUNG = "drehrichtung"
|
|
|
|
TYP_STANDARD = "STANDARD"
|
|
TYP_PIN = "PIN"
|
|
DREHRICHTUNG_UZS = "UZS"
|
|
DREHRICHTUNG_GUZ = "GUZ"
|
|
|
|
# --- Abschnitt 3: VarioFoerderer Standard und Etage ---
|
|
F_VF_TYP = "typ"
|
|
F_RICHTUNG = "richtung"
|
|
F_DELTA_L = "deltaL"
|
|
F_DELTA_H = "deltaH"
|
|
F_WINKEL = "winkel"
|
|
F_L_GF1 = "L_GF1"
|
|
F_GF_VERTEILUNG = "gf_verteilung"
|
|
F_SEITE = "seite"
|
|
F_MOTORSEITE = "motorseite"
|
|
F_HZ = "hz"
|
|
|
|
VF_TYP_STANDARD = "standard"
|
|
VF_TYP_ETAGE = "etage"
|
|
RICHTUNG_AUF = "Auf"
|
|
RICHTUNG_AB = "Ab"
|
|
SEITE_LINKS = "links"
|
|
SEITE_RECHTS = "rechts"
|
|
|
|
# --- Abschnitt 4.1: Gefaellestrecke Modus 1 ---
|
|
F_MODUS = "modus"
|
|
F_DELTAL_MM = "deltaL_mm"
|
|
F_WINKEL_GRAD = "winkel_grad"
|
|
F_HZ_GRAD = "hz_grad"
|
|
F_START_MM = "start_mm"
|
|
F_AS_SEITE = "as_seite"
|
|
F_ES_SEITE = "es_seite"
|
|
F_AS_WINKEL = "as_winkel"
|
|
F_ES_WINKEL = "es_winkel"
|
|
|
|
GF_MODUS_WERTEINGABE = 1
|
|
GF_MODUS_RICHTUNG_AUS_PUNKTEN = 2
|
|
GF_MODUS_LINIENZUG = 3
|
|
|
|
SCHLEUS_WINKEL_90 = "90"
|
|
SCHLEUS_WINKEL_30 = "30"
|