72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
create_testbase.py - Erzeugt Basis-DXF-Dateien fuer die LISP-Tests.
|
|
|
|
Erstellt pro Modul eine leere DXF mit Hilfsgeometrie (z.B. Linien
|
|
als Andockpunkte fuer Kreisel).
|
|
|
|
Aufruf:
|
|
python tests/create_testbase.py [modul]
|
|
python tests/create_testbase.py # alle Module
|
|
python tests/create_testbase.py kreisel # nur Kreisel
|
|
"""
|
|
|
|
import ezdxf
|
|
import json
|
|
import sys
|
|
import os
|
|
|
|
|
|
TESTS_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
TESTDATA_DIR = os.path.join(TESTS_DIR, "testdata")
|
|
OUTPUT_DIR = os.path.join(TESTS_DIR, "output")
|
|
|
|
|
|
def create_kreisel_testbase():
|
|
"""Erzeugt Basis-DXF fuer Kreisel-Tests mit Hilfslinien."""
|
|
doc = ezdxf.new("R2018")
|
|
msp = doc.modelspace()
|
|
|
|
z = 2500.0
|
|
|
|
# Horizontale Linienpaare (Abstand 5000mm in Y-Richtung)
|
|
msp.add_line((0, 0, z), (2000, 0, z),
|
|
dxfattribs={"layer": "S_LP", "color": 1})
|
|
msp.add_line((0, 5000, z), (2000, 5000, z),
|
|
dxfattribs={"layer": "S_LP", "color": 1})
|
|
|
|
# Vertikale Linienpaare (Abstand 5000mm in X-Richtung)
|
|
msp.add_line((0, 0, z), (0, 2000, z),
|
|
dxfattribs={"layer": "S_LP", "color": 1})
|
|
msp.add_line((5000, 0, z), (5000, 2000, z),
|
|
dxfattribs={"layer": "S_LP", "color": 1})
|
|
|
|
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
|
out_path = os.path.join(OUTPUT_DIR, "kreisel_testbase.dxf")
|
|
doc.saveas(out_path)
|
|
print(f"[testbase] Kreisel-Basis-DXF erstellt: {out_path}")
|
|
return out_path
|
|
|
|
|
|
MODULES = {
|
|
"kreisel": create_kreisel_testbase,
|
|
}
|
|
|
|
|
|
def main():
|
|
if len(sys.argv) > 1:
|
|
modul = sys.argv[1].lower()
|
|
if modul not in MODULES:
|
|
print(f"Unbekanntes Modul: {modul}")
|
|
print(f"Verfuegbar: {', '.join(MODULES.keys())}")
|
|
sys.exit(1)
|
|
MODULES[modul]()
|
|
else:
|
|
for name, func in MODULES.items():
|
|
func()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|