feat: VF-Linienzug Modus 1 - steigende Gefaellestrecke (Sonderfall, bis 3 Grad) mit automatischen Uebergangsboegen

Neue dritte Option "Steigend" im Dialog "Wie soll die Laenge dieser
Gefaellestrecke bestimmt werden?": erlaubt eine GF, die statt zu fallen bis
zu 3 Grad steigt (Neigungswinkel 0..3 statt bisher nur 0..3 fallend). Neuer
Helfer vfl-bogen-uebergang erkennt anhand der tatsaechlichen Frame-Neigung,
ob 0/1/2 Uebergangsboegen (Vario_Bogen_auf_3/ab_3) noetig sind, und baut sie
automatisch - fuer den Normalfall (fallend->fallend) bleibt das ein No-Op.

Ausserdem in dieser Sitzung:
- Modus 2: Separator VOR/NACH bei GF-Segmenten, Wahlfreiheit am
  Lauf-Anfang/-Ende (Umlenkstation/Motorstation optional), Stufe-1/2-
  Vereinheitlichung wie in Modus 1.
- Stufe-1/Stufe-2-Entscheidungslogik (vfl-winkel-stufe-entscheidung):
  fehlenden Stufe-2-Fallback fuer "Auf" und "Ab, steiler als 3 Grad"
  ergaenzt; ungenauen "~3 Grad reine GF"-Kurzschluss in zwei Funktionen
  durch praezise Berechnung ersetzt (behebt reale Hoehenfehler).
- Wizard-Dialoge: DCL-Text-Umbruch fuer lange Hinweise (vflw-umbruch-zeilen,
  3 Groessenvarianten statt fester Zeilenzahl), Konsolen-Echo der
  Wizard-Antworten fuer Debug-Logs.
- Neuer Regressionstest TEST_LINIENZUG_STUFE2 (linienzug_tests_stufe2.json)
  reproduziert den behobenen Stufe-2-Kettenende-Bug; bestehender
  LZ_Standard-Test an aktuelle Menue-Nummerierung angepasst (Kettenanfang-
  Menue ist inzwischen 6 statt 4 Optionen gross).
- Neue Anleitung doc/vf_linienzug_modus1_anleitung.md: Modus 1 anhand des
  obigen Testfalls erklaert (Fragen-Bedeutung, Stufe-1/2-Logik, typische
  Stolperfallen: GF laengenhungrig bei 3 Grad, fester Motor+Separator+ES-
  Fussabdruck, 90-Grad-Element-Versatz).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-11 09:59:27 +02:00
parent 5e944dd8c2
commit e76e24e1f3
13 changed files with 4604 additions and 895 deletions
+4 -24
View File
@@ -1,6 +1,6 @@
[
{
"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",
"beschreibung": "Standard-Linienzug (Modus 1): Start Z4500 AS rechts -> Neue Linie Ab Z1800 45deg (GF am Einlauf) -> Horizontal 900 -> 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,
"erwartung_dz_mm": 0,
@@ -33,8 +33,8 @@
},
{
"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": "4",
"kommentar": "getstring Naechstes Element (4 = Neue Linie: Ab/Auf VF - Kettenanfang-Menue hat seit GF-Bogen/Vario-Kurve-Erweiterung 6 statt 4 Optionen, Linie-VF ist jetzt Option 4 statt 2; Gefaelle hier 26 Grad > GF-Maximalwinkel, daher NICHT Option 3/GF)"
},
{
"typ": "point_rel",
@@ -73,20 +73,10 @@
"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)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Ist Endpunkt? (Nein)"
"kommentar": "getstring Ist Endpunkt? (Nein) - kein Separator mehr innerhalb der VF-Einheit (5-Punkte-Umbau)"
},
{
"typ": "string",
@@ -124,16 +114,6 @@
"hz": 90,
"kommentar": "getpoint Horizontal-Endpunkt (dL=250, hz=90)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Separator VOR? (Nein)"
},
{
"typ": "string",
"wert": "2",
"kommentar": "getstring Separator NACH? (Nein)"
},
{
"typ": "string",
"wert": "2",