[ADD] dxf_scan_components.py: Separatoren/Scanner auf einer Kreisel-Kette uebernehmen dessen Anwender-Hoehe (sensor_hoehen_von_kreiseln, bei --kreisel-hoehe) + Tests; [FIX] GF-Winkel aus Kreisel-Hoehen (dematic_arvato:gf-winkel): Modus 1 haelt die horizontale Laenge fest - Abfall = (deltaL - aus-dx - ein-dx) * tan(w) statt asin-Naeherung von gf-winkel-berechnen, ES-Abfall beim aktuellen Winkel gemessen und iteriert (steile GF wie Showroom ~37 Grad endeten sonst weit unter dem Kreisel); [CHANGE] Showroom ILS: Testdaten und Treiber aktualisiert

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 15:23:39 +02:00
parent d403c23e5b
commit 8885b5c96a
5 changed files with 267 additions and 153 deletions
+26
View File
@@ -260,3 +260,29 @@ def test_kurznamen_ae_ee():
assert dsc.familie_von("EE-R") == "schleuselement"
assert dsc.mappe_block("AE-D")[0].startswith("AS_Element_90_")
assert dsc.mappe_block("EE-R")[0].startswith("ES_Element_90_")
def test_sensor_bekommt_hoehe_des_kreisels():
# Kreisel_Showroom_03: Einfuegepunkt (37105.93, 9888.9), rotation 180,
# Ketten y=9488.9/10288.9. Separator auf der Kette, Scanner 280 mm
# innerhalb, ein Teil 1000 mm daneben bleibt unberuehrt.
kreisel = {"id": "K3", "x": 37105.93, "y": 9888.9, "z": 1700.0,
"abstand": 7200.0, "rotation": 180.0, "hoehe_quelle": "Anwender"}
sep = {"function": "insert", "block": "S-LP", "x": 30343.39, "y": 9488.9,
"z": 0.0, "hoehe_unbekannt": True, "comment": ""}
scan = {"function": "insert", "block": "Scanner", "x": 35905.93,
"y": 10008.9, "z": 0.0, "comment": ""}
weit = {"function": "insert", "block": "S-LP", "x": 33000.0, "y": 11300.0,
"z": 0.0, "comment": ""}
assert dsc.sensor_hoehen_von_kreiseln([kreisel, sep, scan, weit]) == 2
assert sep["z"] == 1700.0 and "hoehe_unbekannt" not in sep
assert scan["z"] == 1700.0
assert weit["z"] == 0.0
def test_sensor_ohne_anwender_hoehe_bleibt():
kreisel = {"id": "K", "x": 0.0, "y": 0.0, "z": 0.0, "abstand": 5000.0,
"rotation": 0.0}
sep = {"function": "insert", "block": "S-LP", "x": 1000.0, "y": 400.0,
"z": 0.0, "comment": ""}
assert dsc.sensor_hoehen_von_kreiseln([kreisel, sep]) == 0