fix: berechne-alle-winkel Signatur-Nachzug (schon-flach) + HundM05-Menu-Fix nachgezogen

Lisp/vf_standard.lsp: berechne-alle-winkel um Parameter schon-flach
erweitert (Fussabdruck-Korrektur, wenn ein Frame flach statt bei 3 Grad
ankommt) - vf_linienzug.lsp rief die Funktion bereits mit diesem 5.
Argument auf, dieser Commit fehlte im letzten Commit und liess den
Zwischenstand mit Argumentzahl-Mismatch zurueck. tests/test_foerderer.lsp
und tests/test_mubea.lsp ziehen dieselbe Signatur nach (inkl.
berechne-horizontale-mitte, das schon-flach bereits erwartete).
tests/testdata/linienzug_tests*.json aktualisiert passend zum echten
Bau-Ablauf. menu/SSG_LIB.mnu/.cui: TEST_LINIENZUG_STUFE2 im Testmenue
ergaenzt.

Lisp/vf_spec.lsp + lib/vf_spec_export.py: *vsp-menu-start* auf die aktuelle
6-Optionen-Kettenanfang-Zuordnung umgestellt (vorher noch 4 Optionen) -
vsp-journal replayt gegen den LEBENDEN vf-linienzug-modus. Python-Tabelle
bewusst NICHT umgestellt (dekodiert eine eingefrorene Alt-Aufzeichnung).
TEST_HUNDM05 schlaegt trotzdem weiterhin fehl (separates, ungeloestes
Problem - siehe naechster Absatz).

Bekannter offener Fehler: TEST_HUNDM05 baut nach wie vor nicht korrekt -
der Menu-Code-Fix allein reicht nicht. Root Cause nicht abschliessend
geklaert, Uebergabe an Kollegen fuer Logik-Review vorgesehen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 08:43:54 +02:00
parent 1b49bd3c3b
commit 4418840d5e
9 changed files with 832 additions and 738 deletions
+21 -6
View File
@@ -217,12 +217,22 @@
;; feste-hz: horizontales Budget der festen Elemente (Umlenk+Motor+Separatoren).
;; nil => Standardwert FESTE_HORIZONTAL (1600, Standard-VF mit 2 Separatoren).
;; Der Linienzug uebergibt 1300 (nur 1 Separator am Einlauf, siehe vf_linienzug).
(defun berechne-alle-winkel (deltaL deltaH richtung feste-hz /
;; schon-flach: T => der Frame kommt FLACH (0 Grad) an, statt schon auf der
;; 3-Grad-Basis zu stehen - der Aufrufer wird VOR dem eigentlichen VF-Koerper
;; noch einen Uebergangsbogen (flach->3 Grad, IMMER "ab", siehe vfl-nach-
;; 3grad) einfuegen, dessen Fussabdruck (entry-dx/entry-dz) hier - genau wie
;; aus-dx/aus-dz beim AS-Element - VORAB vom verfuegbaren Budget abgezogen
;; werden muss. Ohne das wurde diese Strecke stillschweigend verbraucht und
;; die Kette verfehlte den Zielpunkt (real beobachtet: schon-flach-Faelle im
;; Linienzug-Kettenende, bis dahin nur bei Stufe 2/berechne-horizontale-mitte
;; beruecksichtigt). Default nil (unveraendertes Verhalten fuer alle
;; Aufrufer, die immer von der 3-Grad-Basis starten).
(defun berechne-alle-winkel (deltaL deltaH richtung feste-hz schon-flach /
winkel-list ergebnis-liste A B cos3 sin3
bogen-x1 bogen-z1 bogen-x2 bogen-z2
abs-dz-AUS abs-dz-EIN L_GF L_VF cosα sinα
winkel-eff cosEff sinEff rad5 rad7
winkel mass1 mass2 gueltig
winkel mass1 mass2 gueltig entry-mass entry-dx entry-dz
best-winkel best-L_GF best-L_VF)
(if (or (not *lib-initialized*) (null aus-dz) (null ein-dz))
@@ -233,6 +243,11 @@
)
(if (null feste-hz) (setq feste-hz FESTE_HORIZONTAL))
(setq entry-dx 0.0 entry-dz 0.0)
(if schon-flach
(progn
(setq entry-mass (get-bogen-mass bogen-ab (fix *vfk-gefaelle-winkel*)))
(setq entry-dx (car entry-mass) entry-dz (caddr entry-mass))))
(setq abs-dz-AUS (abs aus-dz) abs-dz-EIN (abs ein-dz))
(setq winkel-list (ssg-cfg-or "vario" "bogen_winkel"
'(3 6 9 12 15 18 21 27 33 39 45 51)))
@@ -270,15 +285,15 @@
(setq cosα (cos (* winkel (/ pi 180.0)))
sinα (sin (* winkel (/ pi 180.0))))
(setq A (- deltaL aus-dx ein-dx bogen-x1 bogen-x2
(* feste-hz cos3)))
(* feste-hz cos3) entry-dx))
(setq winkel-eff (if (= richtung "Auf") (- winkel *vfk-gefaelle-winkel*) (+ winkel *vfk-gefaelle-winkel*)))
(setq cosEff (cos (* winkel-eff (/ pi 180.0)))
sinEff (sin (* winkel-eff (/ pi 180.0))))
(if (= richtung "Auf")
(setq B (+ deltaH abs-dz-AUS abs-dz-EIN
(setq B (+ deltaH abs-dz-AUS abs-dz-EIN (abs entry-dz)
(- bogen-z1) (- bogen-z2)
(* feste-hz sin3)))
(setq B (+ (- deltaH abs-dz-AUS abs-dz-EIN
(setq B (+ (- deltaH abs-dz-AUS abs-dz-EIN (abs entry-dz)
(* feste-hz sin3))
bogen-z1 bogen-z2))
)
@@ -395,7 +410,7 @@
(setq FESTE_HORIZONTAL (ssg-cfg-or "vario" "feste_horizontal" 1600))
(setq staustrecke-basis (ssg-cfg-or "vario" "staustrecke_basis" 1000))
(init-bibliothek)
(berechne-alle-winkel deltaL deltaH richtung nil)
(berechne-alle-winkel deltaL deltaH richtung nil nil)
)
;; ============================================================