[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
+24 -13
View File
@@ -1,24 +1,35 @@
;; ============================================================
;; test_showroom_ils.lsp - Nachbau des ILS-3.0-Showrooms.
;;
;; Datenquelle: tests/testdata/showroom_ils.json, erzeugt aus der
;; Fremdzeichnung (flacher 2D-Plan, keine Hoehen):
;; python lib/dxf_scan_components.py \
;; C:/develop/sps_skel/data/Showroom_ILS_3_0.dxf data \
;; tests/testdata/showroom_ils.json --projekt Showroom \
;; --flach --ohne-hoehen \
;; --kreisel-achse 27797.93 16298.90 36705.93 16298.90 \
;; --kreisel-achse 28772.93 13093.90 35305.93 13093.90
;; Datenquelle: tests/testdata/showroom_ils.json. Entstehung in zwei Stufen:
;; 1. Scanner auf der Fremdzeichnung (flacher 2D-Plan, Hoehen vom Anwender):
;; python lib/dxf_scan_components.py \
;; C:/develop/sps_skel/data/Showroom_ILS_3_0.dxf data \
;; tests/testdata/showroom_ils.json --projekt Showroom \
;; --flach --ohne-hoehen \
;; --kreisel-achse 27797.93 16298.90 36705.93 16298.90 \
;; --kreisel-achse 28772.93 13093.90 35305.93 13093.90 \
;; --kreisel-hoehe 26997.93 3066.4 5055 \
;; --kreisel-hoehe 26997.93 12898.9 5055 \
;; --kreisel-hoehe 37105.93 9888.9 1700 \
;; --kreisel-hoehe 27397.93 16298.9 5055 \
;; --kreisel-hoehe 28372.93 13093.9 3195
;; 2. VON HAND (geht bei Stufe 1 verloren - danach neu eintragen):
;; Kreisel_Showroom_04 (vertikal, rechts) samt Separator/Scanner bei
;; y=14979 entfernt, dafuer VF_Showroom_01 (VarioFoerderer standard,
;; Auf von Kreisel_Showroom_03 zu Kreisel_Showroom_05) eingetragen.
;;
;; Inhalt: 6 Kreisel, 11 Gefaellestrecken (Modus 1), Separatoren/Scanner.
;; Inhalt: 5 Kreisel, 1 VarioFoerderer, 11 Gefaellestrecken (Modus 1),
;; Separatoren/Scanner.
;; - Ebenen: oben 5055 (Kreisel 01/02/05), Mitte 3195 (06), unten 1700 (03).
;; - Kreisel_Showroom_05/06 sind Schleifen ohne AN8/SP8 im Plan (an beiden
;; Enden Weichenboegen) - per --kreisel-achse als STANDARD-Kreisel
;; angenaehert (Radmitten = Mittelpunkte der PIN-Kreise).
;; - Weichen (WB-*/WM-*/WL-*/WR-*) werden bewusst NICHT nachgebaut.
;; - HOEHEN FEHLEN NOCH: alle z = 0, die GF laufen mit dem Platzhalter
;; winkel_grad 3.0. Sobald die Kreisel-Hoehen bekannt sind, den Scanner
;; mit --kreisel-hoehe X Y Z je Kreisel neu laufen lassen - dann bekommen
;; die GF start_mm.z/hoehe_ende_mm und der Treiber rechnet den Winkel.
;; - Die GF sind steil (1860 bzw. 1495 mm Abfall auf 2405 mm) - den Winkel
;; rechnet dematic_arvato:gf-winkel aus hoehe_ende_mm, und
;; dematic_arvato:gf-endhoehe-pruefen meldet "warnung", wenn eine GF
;; den unteren Kreisel um mehr als 5 mm verfehlt.
;;
;; Keine eigene Bau-Logik: Eintragsschema und Lauf wie TEST_DEMATIC_ARVATO
;; (dematic_arvato:bau-datei aus tests/test_dematic_arvato.lsp).