[ { "beschreibung": "Stufe-2-Fallback-Regressionstest (Kettenende): Start Z2154 AS 90 Grad links -> Horizontal-VF (2x Vario-Kurve 90 rechts innen) -> Linie-GF 3 Grad (Sep vor+nach) -> Horizontal-VF (Vario-Kurve 30 rechts innen -> Auf 27 Grad -> Vario-Kurve 30 links aussen) -> Kettenende ueber 'Ist der Endpunkt der Foerderer?'-Option 3 mit ES 90 Grad links; GF2 (86mm) liegt unter der Mindestlaenge (400mm), Stufe 1 (Winkeltabelle) scheitert komplett (alle Kandidaten negative Laenge) -> Stufe 2 (vfl-winkel-stufe-entscheidung) liefert typ=VF winkel=0 (horizontales VF + GF-Ausgleich). Reproduziert den in dieser Session gefixten Bug (Stufe-2-Fallback griff im Kettenende-Zweig 'Ab, steiler als 3 Grad' bisher nicht, wenn Stufe 1 scheiterte) - erster erfolgreicher Stufe-2-Bau der Session, live in BricsCAD verifiziert.", "erwartung_dx_mm": 638, "erwartung_dy_mm": 0, "erwartung_dz_mm": 0, "erwartung_hinweis": "dX~638 = seitlicher Fussabdruck ES_Element_90 quer zur letzten Fahrtrichtung (Bauform des 90-Grad-ES-Elements, kein Baufehler). Kernzweck des Testfalls: Stufe-2-Fallback beim Kettenende (typ=VF winkel=0 im Kettenende-Abschluss, GF2=86mm unter Mindestlaenge -> 'trotzdem mit 86mm bauen?'=Ja)." }, { "typ": "point_abs", "wert": [24377.817458, -10300, 2067], "kommentar": "getpoint Startpunkt der Kette (Rohwert aus dem realen BricsCAD-Testlauf)" }, { "typ": "real", "wert": 2154.0, "kommentar": "getreal Hoehe (Z) Startpunkt" }, { "typ": "string", "wert": "1", "kommentar": "getstring AS-Element setzen? (Ja)" }, { "typ": "string", "wert": "1", "kommentar": "getstring AS-Element Winkel - Menu-Index 1=90 Grad/2=30 Grad (vf-frage-element-winkel mappt den rohen Index auf den Winkel-STRING '90'/'30'; im Debug-Journal erscheint bereits der gemappte Wert '90', die Konsolen-/Mock-Eingabe selbst bleibt der Index)" }, { "typ": "string", "wert": "1", "kommentar": "getstring AS-Seite (links)" }, { "typ": "string", "wert": "5", "kommentar": "getstring Naechstes Element (Kettenanfang-Menue, 6 Optionen: 5 = Horizontal-VF)" }, { "typ": "point_rel", "dL": 6082.461, "hz": 90, "kommentar": "getpoint Endpunkt Horizontal-VF (freie Richtung am Kettenanfang, hz-vorgabe=nil - hz=90 ist die vom Code gesnappte Richtung, direkt aus dem Debug-Journal (REAL-Eintrag unmittelbar nach dem DL-Eintrag) uebernommen; dieser REAL-Eintrag ist ein reiner Journal-Nebeneffekt von vfl-in-abstand und KEIN eigener Eingabe-Schritt, siehe Lisp/vf_linienzug.lsp vfl-in-abstand" }, { "typ": "real", "wert": 1980.0, "kommentar": "getreal Ziel-Hoehe Eingang GF1 (eingang-modus=voll/nil, vollstaendiger Neuaufbau des VF-Eingangs)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein) - erste Frage innerhalb vfl-baue-horizontal-koerper (ziel-modus)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Naechstes im VarioFoerderer (Vario-Kurve)" }, { "typ": "int", "wert": 90, "kommentar": "getint Vario-Kurve Winkel (90 Grad, roher Winkelwert - KEIN Auswahl-Index, siehe vfl-menu-winkel)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Vario-Kurve Seite (rechts)" }, { "typ": "string", "wert": "2", "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 VarioFoerderer (Horizontaler Foerderer)" }, { "typ": "point_rel", "dL": 1300, "hz": 0, "kommentar": "getpoint Horizontal-Endpunkt innerhalb der VF-Einheit. hz=0 ANNAHME (NICHT direkt im Debug-/Konsolen-Auszug als 'hz=' ausgewiesen, sondern aus der Turn-Arithmetik hergeleitet: Start-hz=90, davor bereits eine 90-Grad-rechts-Vario-Kurve (-90) -> 90-90=0; dieselbe Turn-Konvention [rechts=-Winkel/links=+Winkel] ist an ZWEI anderen Stellen dieses Testfalls unabhaengig durch explizite 'hz='-Werte im Konsolen-Auszug bestaetigt, siehe die Vario_Bogen_ab_3/ab_27-Eintraege). BITTE in BricsCAD live gegenpruefen (einzige nicht direkt beleg-bestaetigte hz-Rekonstruktion dieses Testfalls)." }, { "typ": "string", "wert": "2", "kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein) - innerhalb vfl-baue-horizontal-koerper (ziel-modus)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Naechstes im VarioFoerderer (Vario-Kurve)" }, { "typ": "int", "wert": 90, "kommentar": "getint Vario-Kurve Winkel (90 Grad)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Vario-Kurve Seite (rechts)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Vario-Kurve Variante (innen)" }, { "typ": "string", "wert": "1", "kommentar": "getstring Ist der Endpunkt der Foerderer? (Ja, nur Motorstation) - schliesst die 1. Horizontal-VF-Einheit ab" }, { "typ": "string", "wert": "2", "kommentar": "getstring Ist das Kettenende (ES-Element)? (Nein, weiterbauen) - vfl-vf-einheit-abschluss" }, { "typ": "string", "wert": "2", "kommentar": "getstring Zusaetzlichen Separator an dieser Stelle einfuegen? (Nein)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Naechstes Element (Hauptmenue, 5 Optionen, Frame vorhanden: 2 = Neue Linie: GF)" }, { "typ": "string", "wert": "1", "kommentar": "getstring Wie soll die Laenge dieser Gefaellestrecke bestimmt werden? (1 = Endpunkt waehlen)" }, { "typ": "point_rel", "dL": 978.394396, "hz": -90, "kommentar": "getpoint Endpunkt Gefaellestrecke. hz=-90 DIREKT aus dem Debug-Journal bestaetigt (GEOMETRIE-Zeile 'vfl-insert-gf-segment (deltaL=379 hz=-90 winkel=3)')" }, { "typ": "string", "wert": "1", "kommentar": "getstring Separator VOR dieser Gefaellestrecke einfuegen? (Ja)" }, { "typ": "string", "wert": "1", "kommentar": "getstring Separator NACH dieser Gefaellestrecke einfuegen? (Ja)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Gefaelle festlegen (1 = Hoehe, 2 = Neigungswinkel eingeben - Reihenfolge im Code seit dieser Sitzung getauscht)" }, { "typ": "real", "wert": 3.0, "kommentar": "getreal Neigungswinkel (3 Grad)" }, { "typ": "string", "wert": "3", "kommentar": "getstring Ist das Kettenende? (3 = Nein, weiterbauen - 3-Optionen-Menue: 1=Ja+ES, 2=Ja ohne ES, 3=Nein)" }, { "typ": "string", "wert": "4", "kommentar": "getstring Naechstes Element (5 Optionen: 4 = Neue VF mit horizontalem Anfang/Horizontal-VF)" }, { "typ": "point_rel", "dL": 888.101488, "hz": -90, "kommentar": "getpoint Endpunkt Horizontal-VF (2. Einheit). hz=-90 unveraendert gegenueber dem vorigen GF-Segment (keine Richtungsaenderung dazwischen); eingang-modus=separator (letztes Glied war der Separator NACH der Gefaellestrecke) -> KEINE Ziel-Hoehe-Frage fuer GF1 (im Unterschied zur 1. Horizontal-VF-Einheit)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein) - innerhalb vfl-baue-horizontal-koerper (ziel-modus)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Naechstes im VarioFoerderer (Vario-Kurve)" }, { "typ": "int", "wert": 30, "kommentar": "getint Vario-Kurve Winkel (30 Grad)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Vario-Kurve Seite (rechts)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Vario-Kurve Variante (innen)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein)" }, { "typ": "string", "wert": "3", "kommentar": "getstring Naechstes im VarioFoerderer (Auf/Ab-Foerderer)" }, { "typ": "point_rel", "dL": 1614.972606, "hz": -120, "kommentar": "getpoint Endpunkt Auf/Ab-Foerderer. hz=-120 DIREKT bestaetigt (Konsolen-Auszug zeigt fuer den anschliessenden Vario_Bogen_ab_3_TEF_rechts explizit 'hz=-120 Grad' bei derselben Fahrtrichtung)" }, { "typ": "string", "wert": "1", "kommentar": "getstring Kette kommt flach an - Richtung waehlen (1 = Auf)" }, { "typ": "int", "wert": 8, "kommentar": "getint Winkel-/Hoehen-Tabelle: Auswahl-Index (NICHT der Winkel selbst) unter den GUELTIGEN Kandidaten - gueltig sind hier 3/6/9/12/15/18/21/27 Grad (8 Werte), Index 8 = letzter gueltiger Kandidat = 27 Grad (siehe Konsolen-Auszug '5/11: Vario_Bogen_auf_27_TEF_rechts')" }, { "typ": "string", "wert": "2", "kommentar": "getstring Ist der Endpunkt der Foerderer? (Nein)" }, { "typ": "string", "wert": "2", "kommentar": "getstring Naechstes im VarioFoerderer (Vario-Kurve)" }, { "typ": "int", "wert": 30, "kommentar": "getint Vario-Kurve Winkel (30 Grad)" }, { "typ": "string", "wert": "1", "kommentar": "getstring Vario-Kurve Seite (links)" }, { "typ": "string", "wert": "1", "kommentar": "getstring Vario-Kurve Variante (aussen) - Konsolen-Auszug bestaetigt 'Vario_Kurve_links_30_TEF_aussen'" }, { "typ": "string", "wert": "3", "kommentar": "getstring Ist der Endpunkt der Foerderer? (3 = Ja, Motorstation setzen + Kettenende definieren) - startet den Stufe-1/Stufe-2-Kettenende-Zweig (vfl-body-abschluss/vfl-body-zerlegung)" }, { "typ": "string", "wert": "1", "kommentar": "getstring ES-Element setzen? (Ja)" }, { "typ": "string", "wert": "1", "kommentar": "getstring ES-Element Winkel - Menu-Index 1=90 Grad/2=30 Grad (wie AS-Winkel oben, gleiches Mapping ueber vf-frage-element-winkel)" }, { "typ": "string", "wert": "1", "kommentar": "getstring ES-Seite (links)" }, { "typ": "point_rel", "dL": 1802.808856, "hz": -90, "kommentar": "getpoint Endpunkt Kettenende (vfl-body-abschluss). hz=-90 DIREKT bestaetigt: die im Debug-Log erreichte Position (25544.710135 -8783.275914 2270.287821) hat exakt dieselbe X- und Z-Koordinate wie die KS_AUS-Position der vorigen Vario-Kurve (25544.71 / 2270.29 lt. Konsolen-Auszug) - nur Y aendert sich, das ist ausschliesslich mit hz=-90 (reine Y-Richtung) vereinbar" }, { "typ": "real", "wert": 2154.0, "kommentar": "getreal Ziel-Hoehe Kettenende. Ab hier laeuft vfl-body-zerlegung AUTOMATISCH: Stufe 1 (Winkeltabelle 3/6/9/.../51 Grad) scheitert komplett (alle Kandidaten ergeben negative L_VF), Stufe 2 (vfl-winkel-stufe-entscheidung/berechne-horizontale-mitte) liefert typ=VF winkel=0 L_GF=86 L_VF=286 - KEINE weitere Eingabe fuer diese Entscheidung noetig" }, { "typ": "string", "wert": "1", "kommentar": "getstring Berechnetes GF2=86mm liegt unter der ueblichen Mindestlaenge (400mm) - trotzdem mit den exakt berechneten 86mm bauen? (Ja) - schliesst die Kette ab (VF_n mit GF=1 VF=5)" } ]