diff --git a/doc/vf_linienzug_modus1_anleitung.md b/doc/vf_linienzug_modus1_anleitung.md index 3312fb1..3645412 100644 --- a/doc/vf_linienzug_modus1_anleitung.md +++ b/doc/vf_linienzug_modus1_anleitung.md @@ -57,43 +57,48 @@ ist der interessante Teil (siehe Abschnitt 4, Stufe 1/Stufe 2). Diese Tabelle zitiert die tatsaechlichen Konsolen-Fragen aus dem Testfall (Kommentar-Spalte = `kommentar`-Feld im JSON) und erklaert, was jede Frage -bedeutet. +bedeutet. Die Datei hat aktuell 62 Eingabe-Eintraege (ohne das Kopf-Objekt); +mehrere Eintraege pro Zeile sind zu einem Schritt zusammengefasst, wo eine +Antwort mehrere JSON-Eintraege verbraucht (z.B. eine Vario-Kurve = Winkel + +Seite + Variante = 3 Eintraege). -| # | Frage (sinngemaess) | Antwort im Beispiel | Bedeutung | +| # (JSON-Eintraege) | Frage (sinngemaess) | Antwort im Beispiel | Bedeutung | |---|---|---|---| | 1 | Startpunkt der Kette | Klick (X/Y) | Beliebiger Punkt in der Zeichnung | | 2 | Hoehe (Z) Startpunkt | 2154 | Absolute Einbauhoehe des Kettenanfangs | | 3 | AS-Element setzen? | Ja | Umlenkstation am Anfang - "AS" = Ausgangs-/Anfangs-Element | | 4 | AS-Element Winkel | 90 Grad | Baugroesse des Umlenkstations-Blocks (90 oder 30 Grad Kurvenradius) | | 5 | AS-Seite | links | Auf welcher Seite die Umlenkstation seitlich ausschwenkt | -| 6 | Naechstes Element | Horizontal-VF | Kettenanfang-Menue hat 6 Optionen (GF-Bogen, Vario-Kurve, Linie-GF, Linie-VF, Horizontal-VF, Linienende) | -| 7 | Endpunkt Horizontal-VF | Klick | Laenge/Richtung der ersten VF-Einheit | -| 8 | Ziel-Hoehe Eingang GF1 | 1980 | Hoehe, auf die der Eingangs-GF-Anteil der VF-Einheit einregelt | -| 9 | Ist der Endpunkt der Foerderer? | Nein | Innerhalb der VF-Einheit: "geht die Kette hier zu Ende?" | -| 10-13 | Naechstes im VarioFoerderer -> Vario-Kurve 90 rechts innen | - | Grundriss-Schwenk INNERHALB der laufenden VF-Einheit | -| 14 | Ist der Endpunkt der Foerderer? | Nein | s.o. | -| 15-16 | Horizontaler Foerderer, Endpunkt | Klick | Weiteres gerades VF-Sub-Segment | -| 17 | Ist der Endpunkt der Foerderer? | Nein | s.o. | -| 18-21 | Vario-Kurve 90 rechts innen | - | Zweiter Grundriss-Schwenk | -| 22 | Ist der Endpunkt der Foerderer? | Ja, nur Motorstation | Schliesst die 1. VF-Einheit ab (Motorstation, kein ES) | -| 23 | Ist das Kettenende (ES-Element)? | Nein, weiterbauen | Nach der Motorstation: geht die Kette weiter? | -| 24 | Zusaetzlichen Separator hier? | Nein | Optionaler Separator direkt an der Motorstation | -| 25 | Naechstes Element | Neue Linie: GF | Jetzt folgt ein reines Gefaellestrecke-Element (kein VF) | -| 26 | Laenge bestimmen ueber | Endpunkt waehlen | Alternativ: Zielhoehe zuerst festlegen (siehe `vfl-gf-laenge-modus`) | -| 27 | Endpunkt Gefaellestrecke | Klick | Bestimmt deltaL der GF-Geraden | -| 28-29 | Separator VOR / NACH? | Ja / Ja | GF-Stuecke werden ueber Separatoren mechanisch begrenzt | -| 30-31 | Gefaelle festlegen -> Neigungswinkel | 3 Grad | Direkter Winkel (Alternative: Zielhoehe -> Winkel wird berechnet) | -| 32 | Ist das Kettenende? | Nein, weiterbauen | 3-Optionen-Menue: Ja+ES / Ja ohne ES / Nein | -| 33 | Naechstes Element | Horizontal-VF (2. Einheit) | Neue VF-Einheit beginnt direkt am GF-Ausgang (Separator als Eingang) | -| 34-49 | (wie oben: Vario-Kurven, Auf/Ab-Foerderer 27 Grad) | - | s.o. | -| 50 | Ist der Endpunkt der Foerderer? | Ja, Motorstation + Kettenende | Startet den automatischen Kettenende-Abschluss | -| 51-53 | ES-Element setzen? / Winkel / Seite | Ja / 90 / links | Ausgangs-Element, spiegelbildlich zum AS-Element | -| 54 | Endpunkt Kettenende | Klick | Letzter gewuenschter Punkt der Kette | -| 55 | Ziel-Hoehe Kettenende | 2154 | Muss wieder exakt die Starthoehe sein | -| 56 | (automatisch, keine Eingabe) | - | Stufe-1/Stufe-2-Loeser rechnet, siehe Abschnitt 4 | -| 57 | GF2=86mm unter Mindestlaenge - trotzdem bauen? | Ja | Sicherheitsfrage, siehe Abschnitt 4 | +| 6 | Naechstes Element | Neue VF mit horizontalem Anfang | Kettenanfang-Menue hat 6 Optionen (GF-Bogen, Vario-Kurve, Linie-GF, Linie-VF, Horizontal-VF, Linienende) | +| 7 | Endpunkt der Linie | Klick | Laenge/Richtung der ersten VF-Einheit | +| 8 | Ziel-Hoehe fuer den horizontalen VF-Anfang | 1980 | Hoehe, auf die der Eingangs-GF-Anteil der VF-Einheit einregelt | +| 9-10 | Zusaetzlichen Separator VOR/NACH dem horizontalen Stueck? | Nein / Nein | Optionale Separatoren direkt am VF-Einlauf | +| 11 | Ist der Endpunkt der Foerderer? | Nein | Innerhalb der VF-Einheit: "geht die Kette hier zu Ende?" | +| 12-15 | Naechstes im VarioFoerderer -> Vario-Kurve 90 rechts innen | - | Grundriss-Schwenk INNERHALB der laufenden VF-Einheit | +| 16 | Ist der Endpunkt der Foerderer? | Nein | s.o. | +| 17-18 | Horizontaler Foerderer, Endpunkt | Klick | Weiteres gerades VF-Sub-Segment | +| 19-20 | Zusaetzlichen Separator VOR/NACH? | Nein / Nein | s.o. | +| 21 | Ist der Endpunkt der Foerderer? | Nein | s.o. | +| 22-25 | Vario-Kurve 90 rechts innen | - | Zweiter Grundriss-Schwenk | +| 26 | Ist der Endpunkt der Foerderer? | Ja, nur Motorstation | Schliesst die 1. VF-Einheit ab (Motorstation, kein ES) | +| 27 | Ist das Kettenende (ES-Element)? | Nein, weiterbauen | Nach der Motorstation: geht die Kette weiter? | +| 28 | Zusaetzlichen Separator hier? | Nein | Optionaler Separator direkt an der Motorstation | +| 29 | Naechstes Element | Neue Linie: GF | Jetzt folgt ein reines Gefaellestrecke-Element (kein VF) | +| 30 | Laenge bestimmen ueber | Endpunkt waehlen | Alternativ: Zielhoehe zuerst festlegen (siehe `vfl-gf-laenge-modus`) | +| 31 | Ist das Kettenende? | Nein, weiterbauen | 3-Optionen-Menue: Ja+ES / Ja ohne ES / Nein - kommt VOR der Gefaelle-/Laengenberechnung | +| 32 | Endpunkt Gefaellestrecke | Klick | Bestimmt deltaL der GF-Geraden | +| 33-34 | Separator VOR / NACH? | Ja / Ja | GF-Stuecke werden ueber Separatoren mechanisch begrenzt | +| 35-36 | Gefaelle festlegen -> Neigungswinkel | 3 Grad | Direkter Winkel (Alternative: Zielhoehe -> Winkel wird berechnet) | +| 37 | Naechstes Element | Neue VF mit horizontalem Anfang (2. Einheit) | Neue VF-Einheit beginnt direkt am GF-Ausgang (Separator als Eingang) | +| 38-55 | (wie oben: Separatoren, Vario-Kurven, Auf/Ab-Foerderer 27 Grad) | - | s.o.; Auf/Ab-Foerderer nutzt Index 8 der gueltigen Winkeltabelle-Kandidaten = 27 Grad | +| 56 | Ist der Endpunkt der Foerderer? | Ja, Motorstation + Kettenende | Startet den automatischen Kettenende-Abschluss | +| 57-59 | ES-Element setzen? / Winkel / Seite | Ja / 90 / links | Ausgangs-Element, spiegelbildlich zum AS-Element | +| 60 | Endpunkt Kettenende | Klick | Letzter gewuenschter Punkt der Kette | +| 61 | Ziel-Hoehe Kettenende | 2154 | Muss wieder exakt die Starthoehe sein | +| 62 | GF2=319mm unter Mindestlaenge (400mm) - trotzdem bauen? | Ja | Sicherheitsfrage, siehe Abschnitt 4 - Stufe-1/Stufe-2-Loeser rechnet dazwischen automatisch | -**Wichtig zu Frage 9/14/17 ("Ist der Endpunkt der Foerderer?"):** Diese Frage +**Wichtig zu "Ist der Endpunkt der Foerderer?"** (Eintraege 11/16/21/26 usw.): +Diese Frage kommt IMMER, wenn Sie innerhalb einer laufenden VF-Einheit einen Punkt gepickt haben. "Nein" heisst: der gepickte Punkt ist nur eine Zwischen-Etappe, es geht in derselben VF-Einheit weiter (Vario-Kurve, @@ -102,7 +107,7 @@ Motorstation - optional zusaetzlich mit ES-Element (echtes Kettenende). ## 4. Stufe 1 / Stufe 2 - wie die letzte Strecke berechnet wird -Am Kettenende (Frage 55/56) ist die Aufgabe: von der aktuellen Position/ +Am Kettenende (Eintrag 61/62) ist die Aufgabe: von der aktuellen Position/ Hoehe zur gewuenschten Ziel-Hoehe kommen, UND dabei die feste Baugruppe Motorstation + Separator (+ ES-Element, falls gewaehlt) unterbringen. Das Programm versucht das in zwei Stufen (`vfl-winkel-stufe-entscheidung`, @@ -111,25 +116,25 @@ Programm versucht das in zwei Stufen (`vfl-winkel-stufe-entscheidung`, - **Stufe 1 - Winkeltabelle:** Es probiert der Reihe nach die festen Vario-Kurven-Winkel 3/6/9/12/15/18/21/27/33/39/45/51 Grad durch (`berechne-alle-winkel`) und prueft, ob einer davon eine PASSENDE, - positive VF-Laenge ergibt. Das ist der Normalfall (siehe die Zeilen - "34-49" in der Tabelle: der Auf/Ab-Foerderer in der 2. VF-Einheit findet + positive VF-Laenge ergibt. Das ist der Normalfall (siehe die Zeile + "38-55" in der Tabelle: der Auf/Ab-Foerderer in der 2. VF-Einheit findet so einen passenden Winkel, Auswahl-Index 8 = 27 Grad). - **Stufe 2 - Horizontale Mitte + GF-Ausgleich:** Wenn KEIN Tabellenwinkel - passt (wie im Beispiel: alle 12 Kandidaten ergeben eine negative - VF-Laenge, die Reststrecke ist einfach zu kurz fuer einen echten + passt (wie im Beispiel am Kettenende: alle 12 Kandidaten ergeben eine + negative VF-Laenge, die Reststrecke ist einfach zu kurz fuer einen echten Vertikalbogen), rechnet `berechne-horizontale-mitte` eine andere Loesung: ein HORIZONTALES VF-Stueck (winkel=0) plus eine kurze Gefaellestrecke (GF2), die exakt den fehlenden Hoehenunterschied ausgleicht. Im Beispiel: - GF2=86mm, VF=286mm. + GF2=319mm, L_VF=48mm. Die Formel dahinter ist simpel und lohnt sich zu verinnerlichen: bei einem FESTEN Neigungswinkel von 3 Grad braucht ein Hoehenausgleich von `H` -Millimetern eine GF-Laenge von `H / tan(3 Grad) ~= H * 19`. Ein winziger -Hoehenrest von z.B. 49mm braucht demnach bereits ~935mm GF-Laenge - siehe -Abschnitt 5.a. GF2 im Beispiel (86mm) ist kuerzer als die uebliche -Mindestlaenge (400mm, `*vfl-gf-min-laenge*`) - deshalb die Rueckfrage in -Schritt 57 ("trotzdem mit 86mm bauen?"). "Ja" baut trotzdem exakt mit dem -berechneten Wert; "Nein" wuerde den bis dahin gebauten Teil verwerfen (siehe +Millimetern eine GF-Laenge von `H / tan(3 Grad) ~= H * 19`. Ein Hoehenrest +von z.B. 17mm braucht demnach bereits ~320mm GF-Laenge - siehe Abschnitt +5.a. GF2 im Beispiel (319mm) liegt knapp unter der uebliche Mindestlaenge +(400mm, `*vfl-gf-min-laenge*`) - deshalb die Rueckfrage im letzten Eintrag +("trotzdem mit 319mm bauen?"). "Ja" baut trotzdem exakt mit dem berechneten +Wert; "Nein" wuerde den bis dahin gebauten Teil verwerfen (siehe `vfl-loesche-seit`/`vfl-modus-abbruch-sichern`). **Merksatz:** Stufe 1 sucht einen "sauberen" Standard-Winkel; Stufe 2 ist @@ -169,9 +174,11 @@ Fallback ausloest. Ein AS- oder ES-Element mit 90 Grad Bauform dreht die Fahrtrichtung nicht einfach "auf der Stelle" - sein Block hat eine reale Baugroesse mit einem -seitlichen (quer zur Fahrtrichtung liegenden) Versatz. Im Standard-Testfall -(`linienzug_tests.json`) betraegt dieser Versatz ca. 637mm (`dY`), im -Stufe-2-Testfall ca. 638mm (`dX`, da die Fahrtrichtung dort anders liegt). +seitlichen (quer zur Fahrtrichtung liegenden) Versatz. Sowohl im Standard- +Testfall (`linienzug_tests.json`) als auch im Stufe-2-Testfall +(`linienzug_tests_stufe2.json`) betraegt dieser Versatz ca. 638mm (dort als +`erwartung_dx_mm` dokumentiert, da die Fahrtrichtung am Kettenende auf der +Y-Achse liegt und sich der Versatz dadurch in X statt in Y zeigt). **Das ist kein Baufehler** - es ist die tatsaechliche Geometrie des 90-Grad-ES/AS-Blocks. Ein "Ist-Ziel-Report" mit einer Restabweichung von ca. 638mm quer zur letzten Fahrtrichtung, aber ~0mm in Laengs-/Hoehenrichtung,