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:
Yuelin Wang
2026-09-14 08:43:54 +02:00
co-authored by Claude Sonnet 5
parent 1b49bd3c3b
commit 4418840d5e
9 changed files with 832 additions and 738 deletions
+86 -112
View File
@@ -1,198 +1,172 @@
[
{
"beschreibung": "Standard-Linienzug (Modus 1): Start Z4500 AS rechts -> Neue Linie Ab Z1800 45deg (GF am Einlauf) -> Horizontal 900 mit Separator VOR+NACH -> Vario-Kurve 90 links aussen -> Horizontal 250 -> Vario-Kurve 90 links aussen -> Kettenende (Option 3) Z4500 45deg ES rechts",
"erwartung_dx_mm": 0,
"erwartung_dy_mm": 637,
"beschreibung": "VF-Linienzug Modus 1 (2026-09-12, nach ES-Nein/schon-flach-Solver-Fix + AS-Auto-Erkennung + Kettenende/ES-Vorfrage + immer-pruefen Uebergangsbogen): Start Z2154 AS 90 links -> Neue VF mit horizontalem Anfang (GF1 am Einlauf, voller Eingang) -> Horizontal-VF-Fortsetzung (Vario-Kurve 90 rechts innen, hz 90->0 -> Horizontaler Foerderer 457mm -> Vario-Kurve 90 rechts innen, hz 0->-90) -> Kettenende ueber 'Ist der Endpunkt der Foerderer?'-Option 3 mit ES 90 links. Stufe 1 (Winkeltabelle) liefert mehrere gueltige Kandidaten (12/15/18/21/27/33/39/45 Grad), Nutzer waehlt 18 Grad (Index 3 der gueltigen Liste). Ersetzt die alte, laengst nicht mehr zum aktuellen Menue passende Datei (Kettenanfang-Menuewert 'Neue Linie: Ab/Auf VF' bei einer 5-Optionen-Zuordnung, die es so nicht mehr gibt) - direkt aus einem echten, erfolgreichen BricsCAD-Lauf uebernommen (XDATA-Journal aus logs/vfl_modus1.dbg, siehe Kommentare je Schritt), keine Handrechnung.",
"erwartung_dx_mm": 638,
"erwartung_dy_mm": 0,
"erwartung_dz_mm": 0,
"erwartung_hinweis": "dY~637 = seitlicher Fussabdruck ES_Element_90 (Bauform, kein Baufehler)"
"erwartung_hinweis": "dX~638 = seitlicher Fussabdruck ES_Element_90 (Bauform, kein Baufehler) - Fahrtrichtung liegt hier auf der Y-Achse (hz=-90), daher zeigt sich der Versatz in X statt wie im urspruenglichen Test in Y."
},
{
"typ": "point_abs",
"wert": [0, 0, 0],
"wert": [-1289.407125, 95.871332, 2154],
"kommentar": "getpoint Startpunkt der Kette"
},
{
"typ": "real",
"wert": 4500.0,
"wert": 2154.0,
"kommentar": "getreal Hoehe (Z) Startpunkt"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring AS-Element setzen? (Ja) - neue Frage aus 3e23003, fehlte bisher in den Testdaten"
"kommentar": "getstring AS-Element setzen? (Ja)"
},
{
"typ": "string",
"wert": "90",
"kommentar": "getstring AS-Element Winkel (90 Grad - echter Winkelwert, kein Index)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring AS-Element Winkel (90 Grad)"
"kommentar": "getstring AS-Seite (links)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring AS-Seite (rechts)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Naechstes Element (2 = Neue Linie: Ab/Auf VF - Gefaelle hier 26 Grad > GF-Maximalwinkel, daher NICHT Option 1/GF)"
"wert": "5",
"kommentar": "getstring Naechstes Element (Kettenanfang, 6 Optionen): 5 = Neue VF mit horizontalem Anfang"
},
{
"typ": "point_rel",
"dL": 5500,
"hz": 0,
"kommentar": "getpoint Endpunkt Linie (frei, +X, dL=5500)"
"dL": 5854.769733,
"hz": 90,
"kommentar": "getpoint Endpunkt der Linie (frei, hz=90 - Kettenanfang, keine Richtungsvorgabe)"
},
{
"typ": "real",
"wert": 1800.0,
"kommentar": "getreal Hoehe (Z) Linienendpunkt"
"kommentar": "getreal Ziel-Hoehe fuer den horizontalen VF-Anfang"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Zusaetzlichen Separator VOR dem horizontalen Stueck? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Zusaetzlichen Separator NACH dem horizontalen Stueck? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein - im Ziel-Modus VOR dem Bau gefragt, vor-antwort wird von der Fortsetzungsschleife uebernommen)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Naechstes Element im VarioFoerderer (2 = Vario-Kurve)"
},
{
"typ": "int",
"wert": 1,
"kommentar": "getint Winkelwahl (45 Grad)"
"wert": 90,
"kommentar": "getint Vario-Kurve Winkel (90 Grad, echter Wert)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring GF-Verteilung (alles am Einlauf)"
"kommentar": "getstring Vario-Kurve Seite (rechts)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist Endpunkt? (Nein)"
"kommentar": "getstring Vario-Kurve Variante (innen)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Naechstes im VF (Horizontal)"
"kommentar": "getstring Naechstes Element im VarioFoerderer (1 = Horizontaler Foerderer)"
},
{
"typ": "point_rel",
"dL": 900,
"dL": 457.481366,
"hz": 0,
"kommentar": "getpoint Horizontal-Endpunkt (dL=900, hz=0)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Separator VOR? (Ja)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Separator NACH? (Ja)"
"kommentar": "getpoint Horizontal-Endpunkt (dL=457.48, hz=0 - Richtung durch die erste Vario-Kurve auf 0 Grad gedreht)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist Endpunkt? (Nein)"
"kommentar": "getstring Zusaetzlichen Separator VOR? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Naechstes (Vario-Kurve)"
"kommentar": "getstring Zusaetzlichen Separator NACH? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Naechstes Element im VarioFoerderer (2 = Vario-Kurve)"
},
{
"typ": "int",
"wert": 1,
"kommentar": "getint Kurve-Winkel (90)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Kurve-Seite (links)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Kurve-Variante (aussen)"
"wert": 90,
"kommentar": "getint Vario-Kurve Winkel (90 Grad)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist Endpunkt? (Nein)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Naechstes (Horizontal)"
},
{
"typ": "point_rel",
"dL": 250,
"hz": 90,
"kommentar": "getpoint Horizontal-Endpunkt (dL=250, hz=90)"
"kommentar": "getstring Vario-Kurve Seite (rechts)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Separator VOR? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Separator NACH? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist Endpunkt? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Naechstes (Vario-Kurve)"
},
{
"typ": "int",
"wert": 1,
"kommentar": "getint Kurve-Winkel (90)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Kurve-Seite (links)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring Kurve-Variante (aussen)"
"kommentar": "getstring Vario-Kurve Variante (innen)"
},
{
"typ": "string",
"wert": "3",
"kommentar": "getstring Ist Endpunkt? (Option 3 - Kettenende)"
"kommentar": "getstring Ist der Endpunkt der Foerderer? (3 = Ja, Motorstation setzen + Kettenende definieren)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring ES-Element setzen? (Ja) - neue Frage aus 3e23003, fehlte bisher in den Testdaten"
"kommentar": "getstring ES-Element setzen? (Ja)"
},
{
"typ": "string",
"wert": "90",
"kommentar": "getstring ES-Element Winkel (90 Grad - echter Winkelwert)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring ES-Seite (links)"
},
{
"typ": "point_rel",
"dL": 6215,
"hz": 180,
"kommentar": "getpoint Option-3-Endpunkt (dL=6215, hz=180)"
"dL": 5854.769733,
"hz": -90,
"kommentar": "getpoint Endpunkt entlang Fahrtrichtung (Kettenende-Modus, hz=-90 - unveraendert nach der zweiten Vario-Kurve, 90 Grad rechts)"
},
{
"typ": "real",
"wert": 4500.0,
"kommentar": "getreal Hoehe (Z) Kettenende (ES)"
"wert": 2154.0,
"kommentar": "getreal Ziel-Hoehe Kettenende (ES). Ab hier laeuft vfl-body-zerlegung AUTOMATISCH: Stufe 1 (Winkeltabelle) liefert 8 gueltige Kandidaten (12/15/18/21/27/33/39/45 Grad)"
},
{
"typ": "int",
"wert": 2,
"kommentar": "getint Option-3-Winkelwahl (45 Grad)"
},
{
"typ": "string",
"wert": "1",
"kommentar": "getstring ES-Element Winkel (90 Grad)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring ES-Seite (rechts)"
"wert": 3,
"kommentar": "getint Winkel-Wahl: Index 3 unter den GUELTIGEN Kandidaten (= 18 Grad, siehe vfl-waehle-winkel - Index in die gefilterte Liste, kein Winkelwert)"
}
]