fix: VF-Linienzug 100%-Wiederherstellung aus e76e24e abgeschlossen
Restauriert alles aus e76e24e, das nach dem Reset auf master fehlte oder nur teilweise wiederhergestellt war, und mit dem Kollegen-Umbau abgeglichen: - vf_core.lsp: Radio-Button-Dialoge fuer Anlagen-Typ/Linienzug-Modus (vfc-dialog-typ-waehlen/-linienzug-modus-waehlen) + Zurueck-Schleife im c:VarioFoerderer-Dispatcher - Vario-Kurve/GF-Bogen-Erkennung am Kettenanfang: vfl-eingang-modus-bestimmen threaded durch vfl-vf-eingang-bauen/vfl-vf-einheit/vfl-vf-einheit-abschluss, inkl. Punkt-7-Winkel/Hoehen-Tabelle fuer reduzierten Eingang - Modus 2: Lauf-Anfang/Lauf-Abschluss (offener Anfang/Ende, GF-Verteilung "alles Auslauf", Kletter-zu-kurz-Fallback) + Separator VOR/NACH bei GF-Geraden - Systemischer Bug behoben: mehrere Wizard-Dialogfunktionen nutzten noch start_list/add_list (Dropdown) gegen laengst auf boxed_radio_column umgestellte DCL-Dialoge (vflw-gruppe-as/-gefaelle/-variokurve/ -winkel-seite-impl, vflw-seg-linie-m2/-m3/-bogen-impl, vfl-glied-gf-bogen/-vario/-as-es-dialog) - Zentraler Abbruch-Trigger in vfl-in-value/-value-p wiederhergestellt (ohne ihn wirkte der Zurueck/Abbrechen-Button in keinem Wizard-Dialog) - vfl-frage-ist-endpunkt/-ist-kettenende als eigene Funktionen mit Wizard-Dialog extrahiert (vorher Konsolen-Duplikate ohne Dialog-Hookup) - 3 vfs-vf-entry-Aufrufe mit falscher Argumentzahl gefixt (akute Absturz-Bugs in Modus 2/3) - Tote Funktion vflw-gruppe-horizontal-impl entfernt (Tiles nicht mehr im DCL vorhanden) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
4a444b4858
commit
0a1d21d8c5
@@ -776,6 +776,9 @@
|
||||
|
||||
;; AUS-Element: 30/90 (vor Seite), dann Seite (vor Winkelberechnung, da die
|
||||
;; Laengenanpassung von der AS/ES-Masse abhaengt). Masse fuer Variante setzen.
|
||||
(princ (ssg-text "vf-winkel-aus-header"))
|
||||
(princ (ssg-text "vf-winkel-90"))
|
||||
(princ (ssg-text "vf-winkel-30"))
|
||||
(setq gf-as-winkel (vf-frage-element-winkel "vf-winkel-aus-header"))
|
||||
(princ (ssg-text "gf-seite-aus-header"))
|
||||
(princ (ssg-text "gf-seite-links"))
|
||||
@@ -785,6 +788,9 @@
|
||||
(vf-set-as-masse gf-as-winkel as-seite)
|
||||
|
||||
;; EIN-Element: 30/90 + Seite
|
||||
(princ (ssg-text "vf-winkel-ein-header"))
|
||||
(princ (ssg-text "vf-winkel-90"))
|
||||
(princ (ssg-text "vf-winkel-30"))
|
||||
(setq gf-es-winkel (vf-frage-element-winkel "vf-winkel-ein-header"))
|
||||
(princ (ssg-text "gf-seite-ein-header"))
|
||||
(princ (ssg-text "gf-seite-links"))
|
||||
@@ -1760,6 +1766,9 @@
|
||||
(setq winkel (float winkel))
|
||||
|
||||
;; AUS-Element: 30/90 + Seite
|
||||
(princ (ssg-text "vf-winkel-aus-header"))
|
||||
(princ (ssg-text "vf-winkel-90"))
|
||||
(princ (ssg-text "vf-winkel-30"))
|
||||
(setq gf-as-winkel (vf-frage-element-winkel "vf-winkel-aus-header"))
|
||||
(princ (ssg-text "gf-seite-aus-header"))
|
||||
(princ (ssg-text "gf-seite-links"))
|
||||
@@ -1768,6 +1777,9 @@
|
||||
(setq as-seite (if (= antwort "2") "rechts" "links"))
|
||||
|
||||
;; EIN-Element: 30/90 + Seite
|
||||
(princ (ssg-text "vf-winkel-ein-header"))
|
||||
(princ (ssg-text "vf-winkel-90"))
|
||||
(princ (ssg-text "vf-winkel-30"))
|
||||
(setq gf-es-winkel (vf-frage-element-winkel "vf-winkel-ein-header"))
|
||||
(princ (ssg-text "gf-seite-ein-header"))
|
||||
(princ (ssg-text "gf-seite-links"))
|
||||
|
||||
+181
-64
@@ -598,9 +598,14 @@
|
||||
;; "vf-winkel-ein-header"). Rueckgabe: "30" oder "90" (Default 90).
|
||||
;; Wizard: nutzt vflw-wahl (dcl/vf_linienzug_wizard.dcl, definiert in
|
||||
;; vf_linienzug.lsp) falls dieses Modul geladen und *vfl-wizard-mode* aktiv
|
||||
;; ist - sonst (oder bei jedem Fehler) unveraendert die Konsolen-Fragen
|
||||
;; (princ + getstring, de/en ueber ssg-text). Gemeinsam genutzt von
|
||||
;; Gefaellestrecke.lsp UND vf_linienzug.lsp.
|
||||
;; ist - sonst (oder bei jedem Fehler) unveraendert die Konsolen-Frage
|
||||
;; (getstring, de/en ueber ssg-text). Gemeinsam genutzt von Gefaellestrecke.lsp
|
||||
;; UND vf_linienzug.lsp. Druckt selbst KEINE Kopfzeile/Optionstexte mehr (das
|
||||
;; macht immer der AUFRUFER, unconditional, VOR diesem Aufruf) - sonst fehlt
|
||||
;; die Kopfzeile in der Konsole genau dann, wenn ein vfl-in-value-Wrapper den
|
||||
;; Wert bereits aus der Pending-Queue/dem Journal-Replay liest und diese
|
||||
;; Funktion dadurch gar nicht erst aufgerufen wird (Inkonsistenz Dialog vs.
|
||||
;; Konsole, siehe Aufrufer in vf_linienzug.lsp/Gefaellestrecke.lsp).
|
||||
(defun vf-frage-element-winkel (headerkey / antwort)
|
||||
;; Wizard-Dialog nur, wenn Wizard-Modus aktiv, vflw-wahl geladen UND die GUI
|
||||
;; global nicht abgeschaltet ist (Tests: (ssg-gui-aus)) - sonst Konsole/getstring.
|
||||
@@ -615,12 +620,7 @@
|
||||
(if (or (vl-catch-all-error-p antwort) (null antwort) (= antwort ""))
|
||||
(setq antwort "1"))
|
||||
)
|
||||
(progn
|
||||
(princ (ssg-text headerkey))
|
||||
(princ (ssg-text "vf-winkel-90"))
|
||||
(princ (ssg-text "vf-winkel-30"))
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2")))
|
||||
)
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2")))
|
||||
)
|
||||
(if (= antwort "2") "30" "90"))
|
||||
|
||||
@@ -972,7 +972,7 @@
|
||||
(setq horizontal-info nil)
|
||||
(if (and horizontal-p (= richtung "Ab"))
|
||||
(progn
|
||||
(setq horizontal-info (berechne-horizontale-mitte deltaL deltaH "Ab"))
|
||||
(setq horizontal-info (berechne-horizontale-mitte deltaL deltaH "Ab" nil))
|
||||
(if (and horizontal-info (caddr horizontal-info))
|
||||
(setq ergebnis-liste
|
||||
(append ergebnis-liste (list (list 0 (car horizontal-info) (cadr horizontal-info) T))))
|
||||
@@ -1078,6 +1078,94 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; TEIL 11b: DIALOG-AUSWAHL FUER TYP/LINIENZUG-MODUS (Radio-Buttons)
|
||||
;; ============================================================
|
||||
;; Ersetzen die beiden Konsolen-Listen am Anfang von c:VarioFoerderer durch
|
||||
;; Radio-Button-Dialoge (dcl/variofoerderer.dcl, vfc_typ/vfc_linienzug_modus)
|
||||
;; - alle Optionen sofort sichtbar statt Dropdown. WICHTIG: Radio-Button-
|
||||
;; Labels sind im DCL fest auf Deutsch einprogrammiert (set_tile kann das
|
||||
;; Label eines radio_button nicht setzen, nur den Zustand - siehe DCL-
|
||||
;; Kommentar). Beide Funktionen geben deshalb nur dann etwas anderes als nil
|
||||
;; zurueck, wenn GUI erlaubt ist (Tests: ssg-gui-aus) UND Deutsch aktiv ist -
|
||||
;; sonst faellt der Aufrufer automatisch auf die alte, vollstaendig
|
||||
;; uebersetzte Konsolen-Liste zurueck (unveraendert im Code stehen
|
||||
;; geblieben). Rueckgabe jeweils: Ergebnis bei OK, 'ABBRUCH bei Cancel, nil
|
||||
;; wenn der Dialog gar nicht erst gezeigt werden konnte/durfte.
|
||||
;; "Zurueck" hat an dieser allerersten Frage der ganzen Anlage nichts, wohin es
|
||||
;; zurueckspringen koennte - wird daher lokal aufgeloest: der Dialog wird
|
||||
;; einfach erneut gezeigt (kein Sonderfall fuer den Aufrufer noetig).
|
||||
(defun vfc-dialog-typ-waehlen ( / dcl-pfad dat gtyp ergebnis fertig)
|
||||
(if (and (or (not (car (atoms-family 1 '("SSG-GUI-P")))) (ssg-gui-p))
|
||||
(= *ssg-lang* "de_DE")
|
||||
(equal (mapcar 'car *vf-typ-registry*) '("standard" "etage" "linienzug")))
|
||||
(progn
|
||||
(setq fertig nil)
|
||||
(while (not fertig)
|
||||
(setq fertig t)
|
||||
(setq dcl-pfad (strcat (getenv "DXFM_DCL") "/variofoerderer.dcl"))
|
||||
(setq dat (load_dialog dcl-pfad))
|
||||
(if (not (new_dialog "vfc_typ" dat))
|
||||
(progn (if (and dat (>= dat 0)) (unload_dialog dat)) (setq ergebnis nil))
|
||||
(progn
|
||||
(set_tile "typ_standard" "1")
|
||||
(action_tile "accept"
|
||||
"(setq gtyp (cond ((= (get_tile \"typ_etage\") \"1\") \"etage\")
|
||||
((= (get_tile \"typ_linienzug\") \"1\") \"linienzug\")
|
||||
(t \"standard\")))
|
||||
(done_dialog 1)")
|
||||
(action_tile "cancel" "(done_dialog 0)")
|
||||
(action_tile "back" "(done_dialog 2)")
|
||||
(setq ergebnis (start_dialog))
|
||||
(unload_dialog dat)
|
||||
(cond
|
||||
((= ergebnis 1) (setq ergebnis gtyp))
|
||||
((= ergebnis 2) (setq fertig nil)) ;; Zurueck: Dialog erneut zeigen
|
||||
(t (setq ergebnis 'ABBRUCH))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
ergebnis
|
||||
)
|
||||
nil
|
||||
)
|
||||
)
|
||||
|
||||
;; "Zurueck" springt zur Anlagen-Typ-Frage zurueck - Rueckgabe 'ZURUECK, vom
|
||||
;; Aufrufer (c:VarioFoerderer) ausgewertet (dort erneuter Aufruf von
|
||||
;; vfc-dialog-typ-waehlen statt hier lokal aufzuloesen).
|
||||
(defun vfc-dialog-linienzug-modus-waehlen ( / dcl-pfad dat gmodus ergebnis)
|
||||
(if (and (or (not (car (atoms-family 1 '("SSG-GUI-P")))) (ssg-gui-p))
|
||||
(= *ssg-lang* "de_DE"))
|
||||
(progn
|
||||
(setq dcl-pfad (strcat (getenv "DXFM_DCL") "/variofoerderer.dcl"))
|
||||
(setq dat (load_dialog dcl-pfad))
|
||||
(if (not (new_dialog "vfc_linienzug_modus" dat))
|
||||
(progn (if (and dat (>= dat 0)) (unload_dialog dat)) nil)
|
||||
(progn
|
||||
(set_tile "modus_1" "1")
|
||||
(action_tile "accept"
|
||||
"(setq gmodus (cond ((= (get_tile \"modus_2\") \"1\") 2)
|
||||
((= (get_tile \"modus_3\") \"1\") 3)
|
||||
(t 1)))
|
||||
(done_dialog 1)")
|
||||
(action_tile "cancel" "(done_dialog 0)")
|
||||
(action_tile "back" "(done_dialog 2)")
|
||||
(setq ergebnis (start_dialog))
|
||||
(unload_dialog dat)
|
||||
(cond
|
||||
((= ergebnis 1) gmodus)
|
||||
((= ergebnis 2) 'ZURUECK)
|
||||
(t 'ABBRUCH)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
nil
|
||||
)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; TEIL 12: DISPATCHER c:VarioFoerderer
|
||||
;; ============================================================
|
||||
@@ -1088,7 +1176,7 @@
|
||||
best-winkel L_GF L_GF1 L_GF2 L_VF
|
||||
idx eintrag wahl antwort verteilung-modus
|
||||
n-scanner vf-nummer hoehe-von hoehe-bis lastEnt
|
||||
staustrecke-basis vf-insert)
|
||||
staustrecke-basis vf-insert dlg-typ dlg-modus zurueck-zu-typ)
|
||||
|
||||
(princ "\n=========================================")
|
||||
(princ (ssg-text "vfc-banner-titel"))
|
||||
@@ -1102,61 +1190,90 @@
|
||||
)
|
||||
)
|
||||
|
||||
(if (and *vf-vorauswahl-typ* (assoc *vf-vorauswahl-typ* *vf-typ-registry*))
|
||||
(progn
|
||||
(setq typ-eintr (assoc *vf-vorauswahl-typ* *vf-typ-registry*))
|
||||
(princ (ssg-textf "vfc-typ-vorgewaehlt" (list *vf-vorauswahl-typ*)))
|
||||
(setq *vf-vorauswahl-typ* nil)
|
||||
)
|
||||
(progn
|
||||
(setq *vf-vorauswahl-typ* nil)
|
||||
(princ (ssg-text "vfc-anlagen-typ-header"))
|
||||
(setq idx 1)
|
||||
(foreach eintr *vf-typ-registry*
|
||||
(princ (ssg-textf "vfc-typ-option" (list idx (nth 3 eintr))))
|
||||
(setq idx (1+ idx))
|
||||
;; Aeussere Schleife nur wegen "Zurueck" bei der Linienzug-Modus-Frage
|
||||
;; (springt zurueck zur Anlagen-Typ-Frage) - fuer Standard/Etage bleibt
|
||||
;; zurueck-zu-typ immer nil, die Schleife laeuft dann genau einmal.
|
||||
(setq zurueck-zu-typ t)
|
||||
(while zurueck-zu-typ
|
||||
(setq zurueck-zu-typ nil)
|
||||
(if (and *vf-vorauswahl-typ* (assoc *vf-vorauswahl-typ* *vf-typ-registry*))
|
||||
(progn
|
||||
(setq typ-eintr (assoc *vf-vorauswahl-typ* *vf-typ-registry*))
|
||||
(princ (ssg-textf "vfc-typ-vorgewaehlt" (list *vf-vorauswahl-typ*)))
|
||||
(setq *vf-vorauswahl-typ* nil)
|
||||
)
|
||||
(progn
|
||||
(setq *vf-vorauswahl-typ* nil)
|
||||
(setq dlg-typ (vfc-dialog-typ-waehlen))
|
||||
(cond
|
||||
((eq dlg-typ 'ABBRUCH) (exit))
|
||||
(dlg-typ (setq typ-eintr (assoc dlg-typ *vf-typ-registry*)))
|
||||
(t
|
||||
;; Dialog nicht verfuegbar/nicht erlaubt (GUI aus, andere Sprache,
|
||||
;; abweichende Registry) - alte Konsolen-Liste unveraendert.
|
||||
(princ (ssg-text "vfc-anlagen-typ-header"))
|
||||
(setq idx 1)
|
||||
(foreach eintr *vf-typ-registry*
|
||||
(princ (ssg-textf "vfc-typ-option" (list idx (nth 3 eintr))))
|
||||
(setq idx (1+ idx))
|
||||
)
|
||||
(setq wahl (getint (ssg-textf "vfc-prompt-wahl-1-n"
|
||||
(list (length *vf-typ-registry*)))))
|
||||
(if (or (null wahl) (< wahl 1) (> wahl (length *vf-typ-registry*)))
|
||||
(setq wahl 1))
|
||||
(setq typ-eintr (nth (1- wahl) *vf-typ-registry*))
|
||||
)
|
||||
)
|
||||
)
|
||||
(setq wahl (getint (ssg-textf "vfc-prompt-wahl-1-n"
|
||||
(list (length *vf-typ-registry*)))))
|
||||
(if (or (null wahl) (< wahl 1) (> wahl (length *vf-typ-registry*)))
|
||||
(setq wahl 1))
|
||||
(setq typ-eintr (nth (1- wahl) *vf-typ-registry*))
|
||||
)
|
||||
)
|
||||
(setq anlage-typ (nth 0 typ-eintr))
|
||||
(setq berechne-fn (nth 1 typ-eintr))
|
||||
(setq einfuege-fn (nth 2 typ-eintr))
|
||||
(princ (ssg-textf "vfc-typ-gewaehlt" (list anlage-typ)))
|
||||
(setq anlage-typ (nth 0 typ-eintr))
|
||||
(setq berechne-fn (nth 1 typ-eintr))
|
||||
(setq einfuege-fn (nth 2 typ-eintr))
|
||||
(princ (ssg-textf "vfc-typ-gewaehlt" (list anlage-typ)))
|
||||
|
||||
;; Sonderfall "linienzug": eigener Befehlsablauf (interaktive Mehrsegment-
|
||||
;; Kette mit gemischten GF/VF-Segmenten), passt nicht in das berechne-fn/
|
||||
;; einfuege-fn-Schema fuer ein einzelnes durchgehendes Segment - siehe
|
||||
;; vf_linienzug.lsp. Dispatcht hier direkt und beendet den Standard-Ablauf.
|
||||
(if (= anlage-typ "linienzug")
|
||||
(progn
|
||||
(princ (ssg-text "vfc-linienzug-modus-header"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-1"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-2"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-3"))
|
||||
(setq wahl (getint (ssg-text "prompt-wahl-1-2-3")))
|
||||
;; Konsolen-Nummer -> interne Funktion:
|
||||
;; 2 = fertiger Ziel-Hoehe-Modus (intern vf-linienzug-modus2)
|
||||
;; 3 = alter Vorwaerts-Nachbau (intern vf-linienzug-modus3, wird umgebaut)
|
||||
;; 1/Default = frische manuelle Eingabe. Ein abgebrochener Bau bleibt als
|
||||
;; VF_n-Block stehen und wird per Doppelklick fortgesetzt/editiert
|
||||
;; (vfl-edit-ent), kein separater Menuepunkt noetig.
|
||||
;; Journal-Reset gilt fuer JEDEN frischen Bau, nicht nur Modus 1: Modus 2
|
||||
;; schreibt sein Journal ebenfalls als XDATA (Marker "linienzug2"), erbte
|
||||
;; ohne Reset aber die Eintraege des Vorlaufs als Praefix - ein spaeterer
|
||||
;; Doppelklick spielte dann fremde Eingaben vor. Die Edit-/Konvertier-Pfade
|
||||
;; laufen nie hier durch (sie setzen ihre Queue selbst), darum ist das
|
||||
;; Hochziehen ein reiner Bugfix. Setzt zugleich *vfl-seg-glied-letzte*
|
||||
;; zurueck, das sonst vom Vorlauf stehenbleibt.
|
||||
(vfl-journal-reset)
|
||||
(cond ((= wahl 2) (vf-linienzug-modus2))
|
||||
((= wahl 3) (vf-linienzug-modus3))
|
||||
(t (vf-linienzug-modus)))
|
||||
(exit)
|
||||
;; Sonderfall "linienzug": eigener Befehlsablauf (interaktive Mehrsegment-
|
||||
;; Kette mit gemischten GF/VF-Segmenten), passt nicht in das berechne-fn/
|
||||
;; einfuege-fn-Schema fuer ein einzelnes durchgehendes Segment - siehe
|
||||
;; vf_linienzug.lsp. Dispatcht hier direkt und beendet den Standard-Ablauf.
|
||||
(if (= anlage-typ "linienzug")
|
||||
(progn
|
||||
(setq dlg-modus (vfc-dialog-linienzug-modus-waehlen))
|
||||
(cond
|
||||
((eq dlg-modus 'ABBRUCH) (exit))
|
||||
((eq dlg-modus 'ZURUECK) (setq zurueck-zu-typ t))
|
||||
(dlg-modus (setq wahl dlg-modus))
|
||||
(t
|
||||
;; Dialog nicht verfuegbar/nicht erlaubt - alte Konsolen-Liste.
|
||||
(princ (ssg-text "vfc-linienzug-modus-header"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-1"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-2"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-3"))
|
||||
(setq wahl (getint (ssg-text "prompt-wahl-1-2-3")))
|
||||
)
|
||||
)
|
||||
(if (not zurueck-zu-typ)
|
||||
(progn
|
||||
;; Konsolen-Nummer -> interne Funktion:
|
||||
;; 2 = fertiger Ziel-Hoehe-Modus (intern vf-linienzug-modus2)
|
||||
;; 3 = alter Vorwaerts-Nachbau (intern vf-linienzug-modus3, wird umgebaut)
|
||||
;; 1/Default = frische manuelle Eingabe (Journal vorher zuruecksetzen). Ein
|
||||
;; abgebrochener Bau bleibt als VF_n-Block stehen und wird per Doppelklick
|
||||
;; fortgesetzt/editiert (vfl-edit-ent), kein separater Menuepunkt noetig.
|
||||
;; Journal-Reset gilt fuer JEDEN frischen Bau, nicht nur Modus 1: Modus 2
|
||||
;; schreibt sein Journal ebenfalls als XDATA (Marker "linienzug2"), erbte
|
||||
;; ohne Reset aber die Eintraege des Vorlaufs als Praefix - ein spaeterer
|
||||
;; Doppelklick spielte dann fremde Eingaben vor. Die Edit-/Konvertier-Pfade
|
||||
;; laufen nie hier durch (sie setzen ihre Queue selbst), darum ist das
|
||||
;; Hochziehen ein reiner Bugfix. Setzt zugleich *vfl-seg-glied-letzte*
|
||||
;; zurueck, das sonst vom Vorlauf stehenbleibt.
|
||||
(vfl-journal-reset)
|
||||
(cond ((= wahl 2) (vf-linienzug-modus2))
|
||||
((= wahl 3) (vf-linienzug-modus3))
|
||||
(t (vf-linienzug-modus)))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1223,7 +1340,7 @@
|
||||
;; Bibliothek ist durch den berechne-fn-Aufruf oben bereits initialisiert.
|
||||
(if (and (= anlage-typ "standard") (= richtung "Ab"))
|
||||
(progn
|
||||
(setq horizontal-info (berechne-horizontale-mitte deltaL deltaH "Ab"))
|
||||
(setq horizontal-info (berechne-horizontale-mitte deltaL deltaH "Ab" nil))
|
||||
(if (and horizontal-info (caddr horizontal-info))
|
||||
(progn
|
||||
(setq ergebnis-liste
|
||||
|
||||
@@ -271,6 +271,11 @@
|
||||
;; Wert geometrisch herleiten laesst statt empirisch fixiert zu bleiben.
|
||||
(if (null *vfk-bruecke-korrektur*) (setq *vfk-bruecke-korrektur* 10.48))
|
||||
|
||||
;; Konstruktions-Obergrenze (mm) fuer die Gesamtlaenge eines zusammen-
|
||||
;; haengenden VF-Laufs (Modus 2, vf-linienzug-modus2) - reiner Hinweis beim
|
||||
;; Ueberschreiten, kein Abbruch. Aktiv referenziert.
|
||||
(if (null *vfk-vf-laenge-max*) (setq *vfk-vf-laenge-max* 25000.0))
|
||||
|
||||
(setq *vfk-konstanten-geladen* t)
|
||||
(princ "\nvf_konstanten geladen.")
|
||||
(princ)
|
||||
|
||||
+1897
-492
File diff suppressed because it is too large
Load Diff
+11
-2
@@ -202,6 +202,15 @@
|
||||
" erlaubt - jedes weitere erbt die Fahrtrichtung"
|
||||
" vom Vorgaenger und hat keinen Journal-Eintrag")))))
|
||||
|
||||
;; Reine Richtungswahl OHNE Laenge (vfl-in-richtung: journalisiert NUR REAL,
|
||||
;; kein DL-Token) - fuer den Kettenanfang-Fall der Zielhoehe-zuerst-Zweige
|
||||
;; ("Linie-GF" modus="hoehe"/"steigend"+"hoehe"), wo noch keine Laenge
|
||||
;; bekannt ist. Nur beim allerersten Segment der Kette relevant (sonst gar
|
||||
;; kein Aufruf, siehe Aufrufer) - toggelt *vsp-erster-dl* wie vsp-linie.
|
||||
(defun vsp-richtung (quelle)
|
||||
(vsp-zahl "REAL" (ssg-val quelle "hz") "hz (Richtungswahl, kein DL noetig)")
|
||||
(setq *vsp-erster-dl* nil))
|
||||
|
||||
;; Winkelwahl (vfl-waehle-winkel) steht nur im Journal, wenn mehrere
|
||||
;; Kandidatenwinkel gueltig waren - das haengt an der real gemessenen
|
||||
;; Restlaenge und ist vorab nicht immer bekannt. Fehlt das Feld und der Bau
|
||||
@@ -275,12 +284,12 @@
|
||||
(vsp-code-raus *vsp-tab-gf-laenge-modus* smodus "steigend_modus")
|
||||
(if (= smodus "endpunkt")
|
||||
(vsp-linie sek)
|
||||
(if erster (vsp-linie sek)))
|
||||
(if erster (vsp-richtung sek)))
|
||||
(if (= smodus "hoehe")
|
||||
(vsp-zahl "REAL" (ssg-val sek "hoehe") "hoehe"))
|
||||
(vsp-zahl "REAL" (ssg-val sek "winkel") "winkel"))
|
||||
((= modus "hoehe")
|
||||
(if erster (vsp-linie sek))
|
||||
(if erster (vsp-richtung sek))
|
||||
(vsp-raus "STR" (vsp-ja-code (ssg-val sek "sep_vor")))
|
||||
(vsp-raus "STR" (vsp-ja-code (ssg-val sek "sep_nach")))
|
||||
(vsp-zahl "REAL" (ssg-val sek "hoehe") "hoehe")
|
||||
|
||||
+34
-14
@@ -337,20 +337,32 @@
|
||||
;; erreichbar (im Rahmen von deltaL), GF1+GF2 werden einfach laenger.
|
||||
;; - "Auf": wirkt der gewuenschten Steigung entgegen -> nur fuer SEHR
|
||||
;; KLEINE deltaH ueberhaupt gueltig (wenige cm).
|
||||
;; schon-flach: T => KEIN Bogen1 (auf_3) am Eintritt - der Aufrufer ist
|
||||
;; bereits flach (0 Grad) angekommen und wird KEINEN Uebergangsbogen bauen
|
||||
;; (vermeidet ein ueberfluessiges auf_3/ab_3-Paar, wenn eine bereits flache
|
||||
;; Kette ohnehin ein horizontales Mittelstueck braucht - siehe
|
||||
;; vfl-body-abschluss). Default nil (unveraendertes Verhalten fuer alle
|
||||
;; anderen Aufrufer, die immer von der 3-Grad-Basis starten).
|
||||
;; Rueckgabe: (GF_total L_VF gueltig) oder nil falls Boegen nicht messbar.
|
||||
(defun berechne-horizontale-mitte (deltaL deltaH richtung /
|
||||
(defun berechne-horizontale-mitte (deltaL deltaH richtung schon-flach /
|
||||
mass1 mass2 rad3 bogen-x1 bogen-z1
|
||||
bogen-x2 bogen-z2 deltaH-signiert
|
||||
A-hz B-hz GF_total L_VF-hz gueltig)
|
||||
(setq mass1 (get-bogen-mass bogen-auf (fix *vfk-gefaelle-winkel*)))
|
||||
(setq mass1 (if schon-flach t (get-bogen-mass bogen-auf (fix *vfk-gefaelle-winkel*))))
|
||||
(setq mass2 (get-bogen-mass bogen-ab (fix *vfk-gefaelle-winkel*)))
|
||||
(if (or (null mass1) (null mass2))
|
||||
nil
|
||||
(progn
|
||||
(setq rad3 (* *vfk-gefaelle-winkel* (/ pi 180.0)))
|
||||
;; Bogen1 (immer auf_3): Eintritt bei 3 Grad (von Umlenkstation), biegt auf 0 Grad
|
||||
(setq bogen-x1 (+ (* (car mass1) (cos rad3)) (* (caddr mass1) (sin rad3))))
|
||||
(setq bogen-z1 (+ (* (- (car mass1)) (sin rad3)) (* (caddr mass1) (cos rad3))))
|
||||
;; Bogen1 (immer auf_3): Eintritt bei 3 Grad (von Umlenkstation), biegt
|
||||
;; auf 0 Grad - entfaellt bei schon-flach (kein Eintrittsbogen noetig).
|
||||
(if schon-flach
|
||||
(setq bogen-x1 0.0 bogen-z1 0.0)
|
||||
(progn
|
||||
(setq bogen-x1 (+ (* (car mass1) (cos rad3)) (* (caddr mass1) (sin rad3))))
|
||||
(setq bogen-z1 (+ (* (- (car mass1)) (sin rad3)) (* (caddr mass1) (cos rad3))))
|
||||
)
|
||||
)
|
||||
;; Bogen2 (immer ab_3): Eintritt bei 0 Grad (von der horizontalen Mitte), biegt auf 3 Grad
|
||||
(setq bogen-x2 (car mass2))
|
||||
(setq bogen-z2 (caddr mass2))
|
||||
@@ -412,7 +424,11 @@
|
||||
;; Beginnt eine reine VF-Einheit: bringt die Kette von der (3-Grad-geneigten)
|
||||
;; AS-Seite ueber GF1 + Separator bis zur Umlenkstation. Wird pro VF-Einheit
|
||||
;; GENAU EINMAL aufgerufen (auch wenn danach mehrere Sub-Segmente folgen).
|
||||
(defun vfs-vf-entry (aktueller-punkt L_GF1 hz)
|
||||
;; ohne-separator: T => der Separator entfaellt (das vorherige Kettenglied
|
||||
;; IST bereits ein Separator, siehe letzter-typ in vf-linienzug-modus - eine
|
||||
;; gueltige Trennstelle braucht nur einen Separator, nicht zwei hintereinander).
|
||||
;; L_GF1 sollte in diesem Fall vom Aufrufer bereits auf 0 gesetzt sein.
|
||||
(defun vfs-vf-entry (aktueller-punkt L_GF1 hz ohne-separator)
|
||||
(if (null hz) (setq hz 0.0))
|
||||
(setq hz (float hz))
|
||||
;; 1. Gefaellestrecke GF1 (verbindet AS-Neigung mit Umlenkstation)
|
||||
@@ -425,13 +441,17 @@
|
||||
)
|
||||
(princ (ssg-text "vfs-vf-eingang-gf1-skip"))
|
||||
)
|
||||
;; 2. Separator (am GF1-Ende / vor Umlenkstation)
|
||||
(princ (ssg-text "vfs-vf-eingang-separator"))
|
||||
(setq aktueller-punkt
|
||||
(insert-rotated-block-with-ks "Staustrecke_Separator_SP_300_mm" aktueller-punkt
|
||||
(ssg-cfg-or "vario" "gefaelle_winkel" 3)
|
||||
(ssg-cfg-or "vario" "separator_block_dx" 300)
|
||||
(ssg-cfg-or "vario" "separator_block_dz" 0) hz))
|
||||
;; 2. Separator (am GF1-Ende / vor Umlenkstation) - entfaellt bei ohne-separator
|
||||
(if (not ohne-separator)
|
||||
(progn
|
||||
(princ (ssg-text "vfs-vf-eingang-separator"))
|
||||
(setq aktueller-punkt
|
||||
(insert-rotated-block-with-ks "Staustrecke_Separator_SP_300_mm" aktueller-punkt
|
||||
(ssg-cfg-or "vario" "gefaelle_winkel" 3)
|
||||
(ssg-cfg-or "vario" "separator_block_dx" 300)
|
||||
(ssg-cfg-or "vario" "separator_block_dz" 0) hz))
|
||||
)
|
||||
)
|
||||
;; 3. Umlenkstation
|
||||
(princ (ssg-text "vfs-vf-eingang-umlenk"))
|
||||
(setq aktueller-punkt
|
||||
@@ -604,7 +624,7 @@
|
||||
(defun vfs-mitte-teil (aktueller-punkt richtung best-winkel L_GF1 L_GF2 L_VF hz)
|
||||
(if (null hz) (setq hz 0.0))
|
||||
(setq hz (float hz))
|
||||
(setq aktueller-punkt (vfs-vf-entry aktueller-punkt L_GF1 hz))
|
||||
(setq aktueller-punkt (vfs-vf-entry aktueller-punkt L_GF1 hz nil))
|
||||
(setq aktueller-punkt (vfs-vf-koerper aktueller-punkt richtung best-winkel L_VF hz))
|
||||
(setq aktueller-punkt (vfs-vf-exit aktueller-punkt L_GF2 hz t))
|
||||
aktueller-punkt
|
||||
|
||||
+92
-10
@@ -1,16 +1,98 @@
|
||||
// ============================================================
|
||||
// variofoerderer.dcl - Standard-VarioFoerderer Parameter-Eingabe
|
||||
// Zwei Dialoge fuer den Standardfall (anlage-typ "standard") von
|
||||
// c:VarioFoerderer, ersetzen die interaktive Werteingabe (Modus
|
||||
// "Werteingabe") aus vf-eingabe-abfragen / vf_core.lsp:
|
||||
// Dialog 1 (variofoerderer_basis): deltaL, deltaH, Foerderrichtung,
|
||||
// Einfuegehoehe, Fahrtrichtung, Seite.
|
||||
// Dialog 2 (variofoerderer_winkel): Winkel (dynamisch berechnete
|
||||
// gueltige Varianten), Verteilung der Gefaellestrecken vorne/hinten.
|
||||
// Die 3D-Linie-Eingabe (Modus "3D-Linie") und andere Anlagen-Typen
|
||||
// (Etage, Linienzug) bleiben interaktiv (Kommandozeile).
|
||||
// variofoerderer.dcl - VarioFoerderer Parameter-Eingabe
|
||||
// Dialoge fuer c:VarioFoerderer (vf_core.lsp):
|
||||
// vfc_typ: Anlagen-Typ waehlen (Standard/Etage/Linienzug) - ersetzt die
|
||||
// Konsolen-Liste am Befehlsanfang. Radio-Buttons statt Dropdown, daher
|
||||
// Labels FEST auf Deutsch (siehe Kommentar bei vfc_linienzug_modus).
|
||||
// vfc_linienzug_modus: NUR bei Typ "Linienzug" - Modus 1/2/3 waehlen.
|
||||
// variofoerderer_basis/variofoerderer_winkel: Werteingabe fuer den
|
||||
// Standardfall (anlage-typ "standard"): deltaL, deltaH, Foerderrichtung,
|
||||
// Einfuegehoehe, Fahrtrichtung, Seite, Winkel, GF-Verteilung.
|
||||
// Die 3D-Linie-Eingabe (Modus "3D-Linie"), der Etage-Typ und die
|
||||
// Linienzug-Kette selbst (nach der Modus-Wahl) bleiben interaktiv
|
||||
// (Kommandozeile bzw. eigener Wizard in vf_linienzug_wizard.dcl).
|
||||
// ============================================================
|
||||
|
||||
// Anlagen-Typ waehlen (Standard/Etage/Linienzug). Radio-Buttons statt
|
||||
// Dropdown - alle Optionen sofort sichtbar. WICHTIG: Labels sind hier FEST
|
||||
// einprogrammiert (Deutsch) und NICHT wie bei popup_list zur Laufzeit aus
|
||||
// ssg-text befuellbar (set_tile kann das Label eines radio_button nicht
|
||||
// setzen, nur den Zustand - siehe auch dcl/vfl_edit_modus.dcl). Bei
|
||||
// aktivem Englisch (DXFM_LANG=en_GB) faellt vfc-dialog-typ-waehlen in
|
||||
// vf_core.lsp automatisch auf die alte, vollstaendig uebersetzte
|
||||
// Konsolen-Liste zurueck (siehe dortiger Kommentar).
|
||||
vfc_typ : dialog {
|
||||
label = "VarioFoerderer - Anlagen-Typ";
|
||||
|
||||
: boxed_radio_column {
|
||||
label = "Anlagen-Typ waehlen:";
|
||||
key = "typ";
|
||||
|
||||
: radio_button {
|
||||
key = "typ_standard";
|
||||
label = "Standard VarioFoerderer (AS/ES 90 Grad, horizontal versetzt)";
|
||||
value = "1";
|
||||
}
|
||||
: radio_button {
|
||||
key = "typ_etage";
|
||||
label = "Etage VarioFoerderer (AS/ES 30 Grad, direkt uebereinander)";
|
||||
}
|
||||
: radio_button {
|
||||
key = "typ_linienzug";
|
||||
label = "3D-Linienzug (gemischte GF/VF-Kette)";
|
||||
}
|
||||
}
|
||||
|
||||
// 3-Button-Zeile wie im Linienzug-Wizard (dcl/vf_linienzug_wizard.dcl):
|
||||
// Zurueck(2)/Ok Weiter(1)/Abbrechen(0). "Zurueck" hat hier nichts, wohin es
|
||||
// zurueckspringen koennte (erste Frage der gesamten Anlage) - vf_core.lsp
|
||||
// zeigt in diesem Fall einfach denselben Dialog erneut.
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Linienzug-Modus waehlen (nur wenn Anlagen-Typ = Linienzug). Radio-Buttons,
|
||||
// gleicher Deutsch-fest-Grund wie bei vfc_typ oben.
|
||||
vfc_linienzug_modus : dialog {
|
||||
label = "VarioFoerderer - Linienzug Modus";
|
||||
|
||||
: boxed_radio_column {
|
||||
label = "Linienzug-Modus waehlen:";
|
||||
key = "modus";
|
||||
|
||||
: radio_button {
|
||||
key = "modus_1";
|
||||
label = "Manuelle Eingabe (Punkte klicken)";
|
||||
value = "1";
|
||||
}
|
||||
: radio_button {
|
||||
key = "modus_2";
|
||||
label = "3D-Objekte + Ziel-Hoehe (Randwert-Solver, fertig)";
|
||||
}
|
||||
: radio_button {
|
||||
key = "modus_3";
|
||||
label = "3D-Objekte stueckweise (Vorwaerts-Nachbau, in Arbeit)";
|
||||
}
|
||||
}
|
||||
|
||||
// "Zurueck" springt hier sinnvoll zur Anlagen-Typ-Frage zurueck (siehe
|
||||
// vfc-dialog-linienzug-modus-waehlen/c:VarioFoerderer).
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
variofoerderer_basis : dialog {
|
||||
label = "VarioFoerderer (Standard) - Eingabe";
|
||||
|
||||
|
||||
+713
-62
@@ -31,7 +31,14 @@ vflw_zahl : dialog {
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Mehrfachauswahl (ersetzt eine princ-Menue-Liste + getstring/getint).
|
||||
@@ -55,7 +62,14 @@ vflw_wahl : dialog {
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
@@ -112,14 +126,24 @@ vflw_punkt_zahl : dialog {
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
// "back" nutzt hier done_dialog 3 statt 2 - Code 2 ist bereits durch den
|
||||
// "Punkt waehlen..."-Button oben belegt (siehe vflw-gruppe-punkt-hoehe-impl).
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// AS-/ES-Element (Kettenanfang bzw. -ende): Ja/Nein-Toggle + Winkel + Seite
|
||||
// in einem Bildschirm - "kopf" traegt die konkrete Frage (AS oder ES),
|
||||
// "setzen" bleibt bewusst generisch beschriftet, damit derselbe Dialog fuer
|
||||
// beide Faelle passt. Winkel/Seite werden deaktiviert, solange der Toggle
|
||||
// aus ist.
|
||||
// aus ist. Radio-Buttons statt Dropdown, Labels daher fest auf Deutsch
|
||||
// (siehe Kommentar bei vfc_typ in variofoerderer.dcl).
|
||||
vflw_as : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
@@ -133,24 +157,34 @@ vflw_as : dialog {
|
||||
key = "setzen";
|
||||
label = "Ja, setzen";
|
||||
}
|
||||
: popup_list {
|
||||
key = "winkel";
|
||||
: boxed_radio_column {
|
||||
label = "Winkel:";
|
||||
width = 20;
|
||||
key = "winkel";
|
||||
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
|
||||
: radio_button { key = "winkel_30"; label = "30 Grad"; }
|
||||
}
|
||||
: popup_list {
|
||||
key = "seite";
|
||||
: boxed_radio_column {
|
||||
label = "Seite:";
|
||||
width = 20;
|
||||
key = "seite";
|
||||
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
|
||||
: radio_button { key = "seite_rechts"; label = "Rechts"; }
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Winkel + Seite. Wiederverwendet fuer GF-Bogen (3 Winkel-Optionen) UND
|
||||
// ES-Element am Kettenende (2 Winkel-Optionen) - die Optionsliste wird pro
|
||||
// Aufruf zur Laufzeit befuellt, die Feld-Anzahl ist in beiden Faellen gleich.
|
||||
// Winkel + Seite. Wiederverwendet fuer GF-Bogen (3 Winkel-Optionen: 30/60/90)
|
||||
// UND ES-Element am Kettenende (2 Winkel-Optionen: 90/30 - dort wird
|
||||
// "winkel_60" per mode_tile deaktiviert, siehe vflw-gruppe-winkel-seite-impl/
|
||||
// vfl-glied-as-es-dialog). Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_winkel_seite : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
@@ -160,22 +194,33 @@ vflw_winkel_seite : dialog {
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: popup_list {
|
||||
key = "winkel";
|
||||
: boxed_radio_column {
|
||||
label = "Winkel:";
|
||||
width = 20;
|
||||
key = "winkel";
|
||||
: radio_button { key = "winkel_30"; label = "30 Grad"; }
|
||||
: radio_button { key = "winkel_60"; label = "60 Grad"; }
|
||||
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
|
||||
}
|
||||
: popup_list {
|
||||
key = "seite";
|
||||
: boxed_radio_column {
|
||||
label = "Seite:";
|
||||
width = 20;
|
||||
key = "seite";
|
||||
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
|
||||
: radio_button { key = "seite_rechts"; label = "Rechts"; }
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Vario-Kurve: Winkel + Seite + Variante (aussen/innen) in einem Bildschirm.
|
||||
// Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_variokurve : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
@@ -185,30 +230,41 @@ vflw_variokurve : dialog {
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: popup_list {
|
||||
key = "winkel";
|
||||
: boxed_radio_column {
|
||||
label = "Winkel:";
|
||||
width = 20;
|
||||
key = "winkel";
|
||||
: radio_button { key = "winkel_30"; label = "30 Grad"; }
|
||||
: radio_button { key = "winkel_60"; label = "60 Grad"; }
|
||||
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
|
||||
}
|
||||
: popup_list {
|
||||
key = "seite";
|
||||
: boxed_radio_column {
|
||||
label = "Seite:";
|
||||
width = 20;
|
||||
key = "seite";
|
||||
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
|
||||
: radio_button { key = "seite_rechts"; label = "Rechts"; }
|
||||
}
|
||||
: popup_list {
|
||||
key = "variante";
|
||||
: boxed_radio_column {
|
||||
label = "Variante:";
|
||||
width = 20;
|
||||
key = "variante";
|
||||
: radio_button { key = "variante_aussen"; label = "Aussen"; value = "1"; }
|
||||
: radio_button { key = "variante_innen"; label = "Innen"; }
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Gefaelle festlegen (Linie GF): Modus (Hoehe/Winkel) + EIN Wertfeld, dessen
|
||||
// Beschriftung sich je nach Modus umschaltet (Action-Tile auf "modus", siehe
|
||||
// vflw-gruppe-gefaelle-impl in vf_linienzug.lsp). Kein Punkt-Feld - siehe
|
||||
// Kopfkommentar oben.
|
||||
// Kopfkommentar oben. Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_gefaelle : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
@@ -218,10 +274,11 @@ vflw_gefaelle : dialog {
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: popup_list {
|
||||
key = "modus";
|
||||
: boxed_radio_column {
|
||||
label = "Eingabe als:";
|
||||
width = 40;
|
||||
key = "modus";
|
||||
: radio_button { key = "modus_winkel"; label = "Neigungswinkel eingeben"; value = "1"; }
|
||||
: radio_button { key = "modus_hoehe"; label = "Gegebene Hoehe (Zielhoehe)"; }
|
||||
}
|
||||
: text {
|
||||
key = "wlabel";
|
||||
@@ -232,15 +289,64 @@ vflw_gefaelle : dialog {
|
||||
label = "";
|
||||
edit_width = 10;
|
||||
}
|
||||
// Nur befuellt/sichtbar relevant, wenn vflw-gruppe-gefaelle-impl mit
|
||||
// nur-winkel=T aufgerufen wird (Zweig "Zielhoehe zuerst festlegen" bei
|
||||
// "Neue Linie: GF") - zeigt dann den Hinweis, dass deltaL daraus
|
||||
// berechnet wird, statt der sonst hier stehenden Hoehe-Option.
|
||||
: text {
|
||||
key = "hinweis";
|
||||
label = "";
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Horizontales Stueck: Separator-vor + Separator-nach + "Foerderer-Ende?"
|
||||
// (3 Optionen) in einem Bildschirm. Kein Punkt-Feld - siehe Kopfkommentar
|
||||
// oben.
|
||||
vflw_horizontal : dialog {
|
||||
// "Wie soll die Laenge dieser Gefaellestrecke bestimmt werden?" (Neue Linie:
|
||||
// GF) - Endpunkt-Pick (heutiges Verhalten) ODER Zielhoehe zuerst festlegen
|
||||
// (Laenge wird dann aus Zielhoehe+Winkel berechnet, siehe
|
||||
// vflw-gruppe-gf-laenge-modus-impl). Nur gezeigt, wenn bereits ein Frame
|
||||
// existiert (Kettenanfang braucht weiterhin zwingend den Pick fuer die
|
||||
// Richtung). Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_gf_laenge_modus : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
key = "modus";
|
||||
label = "";
|
||||
: radio_button { key = "modus_endpunkt"; label = "Endpunkt waehlen (Laenge ergibt sich)"; value = "1"; }
|
||||
: radio_button { key = "modus_hoehe"; label = "Zielhoehe festlegen (Laenge wird berechnet)"; }
|
||||
: radio_button { key = "modus_steigend"; label = "Steigende GF (Sonderfall, bis 3 Grad)"; }
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Separator VOR/NACH bei "Neue Linie: GF": beide Ja/Nein-Fragen in einem
|
||||
// Bildschirm (Toggles, da echte Ja/Nein-Fragen - kein Radio-Cluster noetig).
|
||||
// Siehe vflw-gruppe-sep-gf-impl in vf_linienzug.lsp.
|
||||
vflw_sep_gf : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
@@ -251,20 +357,502 @@ vflw_horizontal : dialog {
|
||||
}
|
||||
: toggle {
|
||||
key = "sepvor";
|
||||
label = "Separator VOR dem Stueck";
|
||||
label = "Separator VOR dieser Gefaellestrecke";
|
||||
}
|
||||
: toggle {
|
||||
key = "sepnach";
|
||||
label = "Separator NACH dem Stueck";
|
||||
}
|
||||
: popup_list {
|
||||
key = "istende";
|
||||
label = "Foerderer-Ende:";
|
||||
width = 45;
|
||||
label = "Separator NACH dieser Gefaellestrecke";
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Horizontales Stueck: nur noch "Foerderer-Ende?" (3 Optionen) - kein
|
||||
// Separator mehr (siehe vfl-baue-horizontal-koerper). Kein Punkt-Feld -
|
||||
// siehe Kopfkommentar oben. Radio-Buttons statt Dropdown, Labels daher fest
|
||||
// auf Deutsch (siehe Kommentar bei vfc_typ in variofoerderer.dcl).
|
||||
vflw_horizontal : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
label = "Foerderer-Ende:";
|
||||
key = "istende";
|
||||
|
||||
: radio_button {
|
||||
key = "istende_0";
|
||||
label = "Ja (nur Motorstation setzen)";
|
||||
value = "1";
|
||||
}
|
||||
: radio_button {
|
||||
key = "istende_1";
|
||||
label = "Nein (weiterbauen)";
|
||||
}
|
||||
: radio_button {
|
||||
key = "istende_2";
|
||||
label = "Ja (Motorstation setzen, Kettenende definieren)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// "Naechstes Element waehlen" - Hauptmenue des Linienzug-Aufbaus (Modus 1).
|
||||
// IMMER alle 6 Optionen im Dialog vorhanden (stabile Keys) - "Vario-Kurve"
|
||||
// wird per mode_tile deaktiviert, wenn kein echter Kettenanfang vorliegt
|
||||
// (siehe vflw-gruppe-naechstes-element-impl, das dort auch die Positions-
|
||||
// Nummerierung passend umrechnet). Radio-Buttons statt Dropdown, Labels fest
|
||||
// deutsch, OHNE Nummern-Prefix (anders als die Konsolen-Variante - hier
|
||||
// braucht es keine Zifferneingabe).
|
||||
vflw_naechstes_element : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_gfbogen"; label = "GF-Bogen (horizontale Kurve)"; }
|
||||
: radio_button { key = "wahl_variokurve"; label = "Vario-Kurve (horizontale Kurve, 30/60/90 Grad)"; }
|
||||
: radio_button { key = "wahl_liniegf"; label = "Neue Linie: GF (Gefaellestrecke)"; value = "1"; }
|
||||
: radio_button { key = "wahl_linievf"; label = "Neue Linie: Ab/Auf VF (VarioFoerderer-Einheit)"; }
|
||||
: radio_button { key = "wahl_horizontalvf"; label = "Neue VF mit horizontalem Anfang (Horizontal-Stueck)"; }
|
||||
: radio_button { key = "wahl_linieende"; label = "Neue Linie BIS Kettenende (danach Separator + ES-Element)"; }
|
||||
}
|
||||
}
|
||||
|
||||
// PROTOTYP "Zurueck"-Button (siehe Plan curious-prancing-parasol.md): ersetzt
|
||||
// ok_cancel durch eine eigene 3-Button-Zeile. done_dialog-Codes: 0=Abbrechen
|
||||
// (unveraendert, is_cancel -> ESC/Leertaste wirkt weiterhin), 1=Weiter
|
||||
// (unveraendert, is_default), NEU 2=Zurueck (verwirft das zuletzt gebaute
|
||||
// Kettenglied und fragt es neu ab, siehe vflw-gruppe-naechstes-element-impl/
|
||||
// vfl-modus-abbruch-sichern).
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// "Ist das das Kettenende?" (Linie-GF-Segment-Schleife) - 3 feste Optionen.
|
||||
// Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_kettenende : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_ja_es"; label = "Ja (ES-Element setzen)"; }
|
||||
: radio_button { key = "wahl_ja_ohne_es"; label = "Ja (ohne ES-Element setzen)"; }
|
||||
: radio_button { key = "wahl_nein"; label = "Nein (weiterbauen)"; value = "1"; }
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// "Ist das Kettenende?" (2-Optionen-Variante - Ja/Nein statt der 3-Optionen-
|
||||
// Variante vflw_kettenende oben). Radio-Buttons statt Dropdown, Labels fest
|
||||
// deutsch.
|
||||
vflw_ist_kettenende_2opt : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_ja"; label = "Ja (Separator + ES-Element setzen)"; }
|
||||
: radio_button { key = "wahl_nein"; label = "Nein (weiterbauen)"; value = "1"; }
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// GF-Verteilung (halbe Staustrecke am Ausgang GF2 oder alles am Einlauf
|
||||
// GF1) - wiederverwendet fuer Modus 1 (vfl-vf-einheit-abschluss) UND Modus 3
|
||||
// (Segment-Loop, br-gf-mode). Radio-Buttons statt Dropdown, Labels fest
|
||||
// deutsch.
|
||||
vflw_gf_verteilung : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_haelfte"; label = "Haelfte am Einlauf (GF1) + Haelfte am Ausgang (GF2)"; }
|
||||
: radio_button { key = "wahl_einlauf"; label = "Alles am Einlauf (GF1), kein GF2"; value = "1"; }
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// "Naechstes im VF" (innerhalb einer laufenden VF-Einheit weiterbauen):
|
||||
// Horizontaler Foerderer / Vario-Kurve / Auf-Ab-Foerderer. Radio-Buttons
|
||||
// statt Dropdown, Labels fest deutsch.
|
||||
vflw_naechstes_im_vf : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_horizontal"; label = "Horizontaler Foerderer (Linie ohne Hoehendifferenz)"; }
|
||||
: radio_button { key = "wahl_variokurve"; label = "Vario-Kurve (30/60/90 Grad)"; }
|
||||
: radio_button { key = "wahl_aufab"; label = "Auf/Ab-Foerderer (Linie mit Hoehendifferenz)"; value = "1"; }
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Punkt-7-Winkel/Hoehen-Tabelle (vfl-waehle-winkel-hoehen-tabelle): 12 feste
|
||||
// Radio-Slots (einer je Standard-Winkel 3-51 Grad), nicht baubare per
|
||||
// mode_tile deaktiviert. WICHTIG: die radio_button-Tiles muessen DIREKTE
|
||||
// Kinder eines radio_column/radio_row/boxed_radio_column-Clusters sein - eine
|
||||
// Verschachtelung ueber : row {} INNERHALB des Clusters (fruehere Version)
|
||||
// hebt die gegenseitige Ausschliesslichkeit auf (per Test bestaetigt: mehrere
|
||||
// Radios gleichzeitig waehlbar, keins abwaehlbar)! Die Endhoehe steht daher
|
||||
// NICHT im selben row-Tile, sondern in einer PARALLELEN Text-Spalte rechts
|
||||
// daneben (eigene column AUSSERHALB des Radio-Clusters, per aeusserem : row
|
||||
// nebeneinandergestellt, gleiche Zeilenreihenfolge) - dynamisch befuellt via
|
||||
// vflw-gruppe-winkel-hoehen-impl (zeigt auch bei nicht baubaren Winkeln den
|
||||
// Grund, siehe dortige Kommentare).
|
||||
vflw_winkel_hoehen : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: text { label = "Winkel waehlen:"; }
|
||||
: row {
|
||||
: radio_column {
|
||||
key = "wahl";
|
||||
: radio_button { key = "w_3"; label = "3 Grad"; }
|
||||
: radio_button { key = "w_6"; label = "6 Grad"; }
|
||||
: radio_button { key = "w_9"; label = "9 Grad"; }
|
||||
: radio_button { key = "w_12"; label = "12 Grad"; }
|
||||
: radio_button { key = "w_15"; label = "15 Grad"; }
|
||||
: radio_button { key = "w_18"; label = "18 Grad"; }
|
||||
: radio_button { key = "w_21"; label = "21 Grad"; }
|
||||
: radio_button { key = "w_27"; label = "27 Grad"; }
|
||||
: radio_button { key = "w_33"; label = "33 Grad"; }
|
||||
: radio_button { key = "w_39"; label = "39 Grad"; }
|
||||
: radio_button { key = "w_45"; label = "45 Grad"; }
|
||||
: radio_button { key = "w_51"; label = "51 Grad"; }
|
||||
}
|
||||
: column {
|
||||
: text { key = "h_3"; label = ""; width = 48; }
|
||||
: text { key = "h_6"; label = ""; width = 48; }
|
||||
: text { key = "h_9"; label = ""; width = 48; }
|
||||
: text { key = "h_12"; label = ""; width = 48; }
|
||||
: text { key = "h_15"; label = ""; width = 48; }
|
||||
: text { key = "h_18"; label = ""; width = 48; }
|
||||
: text { key = "h_21"; label = ""; width = 48; }
|
||||
: text { key = "h_27"; label = ""; width = 48; }
|
||||
: text { key = "h_33"; label = ""; width = 48; }
|
||||
: text { key = "h_39"; label = ""; width = 48; }
|
||||
: text { key = "h_45"; label = ""; width = 48; }
|
||||
: text { key = "h_51"; label = ""; width = 48; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Winkel-Wahl aus berechne-alle-winkel (Zielhoehe-basierter Solve, mehrere
|
||||
// gueltige Winkel): wie vflw_winkel_hoehen (radio_column direkt, Text-Spalte
|
||||
// parallel daneben), aber die Text-Spalte zeigt L_GF+L_VF statt Endhoehe
|
||||
// (dynamisch befuellt, siehe vflw-gruppe-winkel-wahl-impl).
|
||||
vflw_winkel_wahl : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: text { label = "Winkel waehlen:"; }
|
||||
: row {
|
||||
: radio_column {
|
||||
key = "wahl";
|
||||
: radio_button { key = "w_3"; label = "3 Grad"; }
|
||||
: radio_button { key = "w_6"; label = "6 Grad"; }
|
||||
: radio_button { key = "w_9"; label = "9 Grad"; }
|
||||
: radio_button { key = "w_12"; label = "12 Grad"; }
|
||||
: radio_button { key = "w_15"; label = "15 Grad"; }
|
||||
: radio_button { key = "w_18"; label = "18 Grad"; }
|
||||
: radio_button { key = "w_21"; label = "21 Grad"; }
|
||||
: radio_button { key = "w_27"; label = "27 Grad"; }
|
||||
: radio_button { key = "w_33"; label = "33 Grad"; }
|
||||
: radio_button { key = "w_39"; label = "39 Grad"; }
|
||||
: radio_button { key = "w_45"; label = "45 Grad"; }
|
||||
: radio_button { key = "w_51"; label = "51 Grad"; }
|
||||
}
|
||||
: column {
|
||||
: text { key = "h_3"; label = ""; width = 48; }
|
||||
: text { key = "h_6"; label = ""; width = 48; }
|
||||
: text { key = "h_9"; label = ""; width = 48; }
|
||||
: text { key = "h_12"; label = ""; width = 48; }
|
||||
: text { key = "h_15"; label = ""; width = 48; }
|
||||
: text { key = "h_18"; label = ""; width = 48; }
|
||||
: text { key = "h_21"; label = ""; width = 48; }
|
||||
: text { key = "h_27"; label = ""; width = 48; }
|
||||
: text { key = "h_33"; label = ""; width = 48; }
|
||||
: text { key = "h_39"; label = ""; width = 48; }
|
||||
: text { key = "h_45"; label = ""; width = 48; }
|
||||
: text { key = "h_51"; label = ""; width = 48; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Generische Ja/Nein-Rueckfrage (2 Radio-Buttons, dynamischer Kopftext) -
|
||||
// wiederverwendet z.B. fuer "trotzdem mit Mindestlaenge bauen?" (Zu-kurz-
|
||||
// Nachfrage in vfl-baue-horizontal-koerper). Radio-Buttons statt Dropdown,
|
||||
// Labels fest deutsch (nur "kopf" wird je Aufruf per set_tile befuellt).
|
||||
// Drei Groessenvarianten (1/3/6 Kopf-Zeilen) statt EINER Variante mit immer 6
|
||||
// Zeilen: DCL kann Tiles nicht dynamisch ausblenden/schrumpfen - ein leeres
|
||||
// text-Tile belegt trotzdem seine volle Zeilenhoehe (grosse Luecke bei kurzen
|
||||
// Hinweisen wie "Zusaetzlichen Separator einfuegen?"). vflw-gruppe-ja-nein-impl
|
||||
// waehlt anhand der per vflw-umbruch-zeilen ermittelten Zeilenzahl die
|
||||
// passende Variante (1/3/6). Alle drei teilen dieselben Tile-Keys "kopf1".."kopfN"
|
||||
// plus "wahl"/"wahl_ja"/"wahl_nein"/"back"/"accept"/"cancel" - der Aufrufer
|
||||
// muss dadurch NICHT zwischen ihnen unterscheiden, ausser bei new_dialog/
|
||||
// set_tile fuer die (in der kleineren Variante gar nicht vorhandenen) hoeheren
|
||||
// kopfN-Tiles.
|
||||
vflw_ja_nein_1 : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
: column {
|
||||
: text { key = "kopf1"; label = ""; width = 70; }
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_ja"; label = "Ja"; value = "1"; }
|
||||
: radio_button { key = "wahl_nein"; label = "Nein"; }
|
||||
}
|
||||
}
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
vflw_ja_nein_3 : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
: column {
|
||||
: text { key = "kopf1"; label = ""; width = 70; }
|
||||
: text { key = "kopf2"; label = ""; width = 70; }
|
||||
: text { key = "kopf3"; label = ""; width = 70; }
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_ja"; label = "Ja"; value = "1"; }
|
||||
: radio_button { key = "wahl_nein"; label = "Nein"; }
|
||||
}
|
||||
}
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
vflw_ja_nein_6 : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
: column {
|
||||
: text { key = "kopf1"; label = ""; width = 70; }
|
||||
: text { key = "kopf2"; label = ""; width = 70; }
|
||||
: text { key = "kopf3"; label = ""; width = 70; }
|
||||
: text { key = "kopf4"; label = ""; width = 70; }
|
||||
: text { key = "kopf5"; label = ""; width = 70; }
|
||||
: text { key = "kopf6"; label = ""; width = 70; }
|
||||
: boxed_radio_column {
|
||||
key = "wahl";
|
||||
label = "";
|
||||
: radio_button { key = "wahl_ja"; label = "Ja"; value = "1"; }
|
||||
: radio_button { key = "wahl_nein"; label = "Nein"; }
|
||||
}
|
||||
}
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Generische Auf/Ab-Richtungsfrage (2 Radio-Buttons, dynamischer Kopftext) -
|
||||
// wiederverwendet fuer Punkt 7 (Kletter-Teilstrecke ohne Zielhoehe, sowohl
|
||||
// "Naechstes im VF" als auch "Neue Linie: Ab/Auf VF" mit reduziertem
|
||||
// Eingang). Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_richtung : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
key = "richtung";
|
||||
label = "";
|
||||
: radio_button { key = "richtung_auf"; label = "Auf"; value = "1"; }
|
||||
: radio_button { key = "richtung_ab"; label = "Ab"; }
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// Startpunkt-Typ (kein eindeutiger GF-/VF-Baustein per KS_AUS-Scan erkannt,
|
||||
// siehe vfl-eingang-modus-bestimmen): EINE flache 3-Optionen-Frage statt
|
||||
// verschachtelter Zwei-Schritt-Abfrage - ist der Vorgaenger unklar, sind alle
|
||||
// drei Ergebnisse gleichwertig direkt waehlbar. Radio-Buttons statt Dropdown,
|
||||
// Labels fest deutsch (GF-Stumpf-Laenge als Default-Wert 400mm statisch im
|
||||
// Label, siehe *vfl-gf-min-laenge*).
|
||||
vflw_startpunkt_typ : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
label = "Eingang:";
|
||||
key = "eingang";
|
||||
: radio_button { key = "eingang_direkt"; label = "Direkt Umlenkstation (kein GF-Stueck)"; value = "1"; }
|
||||
: radio_button { key = "eingang_stumpf"; label = "GF-Stueck (min. 400mm) + Umlenkstation"; }
|
||||
: radio_button { key = "eingang_ohne"; label = "Ohne Umlenkstation (VF-Fortsetzung)"; }
|
||||
}
|
||||
}
|
||||
|
||||
: row {
|
||||
alignment = centered;
|
||||
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
|
||||
spacer;
|
||||
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
@@ -278,6 +866,7 @@ vflw_horizontal : dialog {
|
||||
|
||||
// Modus 2, Segment "Gerade": Typ (GF/VF) + [nur bei GF aktiv] GF-Neigung.
|
||||
// Das Neigungsfeld wird per action_tile auf "typ" aktiviert/deaktiviert.
|
||||
// Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_seg_linie_m2 : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
@@ -287,10 +876,11 @@ vflw_seg_linie_m2 : dialog {
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: popup_list {
|
||||
key = "typ";
|
||||
: boxed_radio_column {
|
||||
label = "Typ:";
|
||||
width = 40;
|
||||
key = "typ";
|
||||
: radio_button { key = "typ_gf"; label = "GF (Neigungswinkel)"; value = "1"; }
|
||||
: radio_button { key = "typ_vf"; label = "VF (Bruecke)"; }
|
||||
}
|
||||
: text {
|
||||
key = "wlabel";
|
||||
@@ -301,6 +891,11 @@ vflw_seg_linie_m2 : dialog {
|
||||
label = "";
|
||||
edit_width = 10;
|
||||
}
|
||||
: boxed_column {
|
||||
label = "Separator (nur bei GF):";
|
||||
: toggle { key = "sep_vor"; label = "Separator VOR diesem GF-Stueck"; }
|
||||
: toggle { key = "sep_nach"; label = "Separator NACH diesem GF-Stueck"; }
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
@@ -309,7 +904,8 @@ vflw_seg_linie_m2 : dialog {
|
||||
// Modus 3, Segment "Gerade": Typ (GF / VF-Ab / VF-Auf / VF-Horizontal) + EIN
|
||||
// Wertfeld, dessen Beschriftung mit dem Typ umschaltet (GF -> Neigung,
|
||||
// VF-Ab/Auf -> Vario-Winkel, VF-Horizontal -> Feld deaktiviert). Umschaltung
|
||||
// per action_tile auf "typ" (siehe vflw-seg-linie-m3-impl).
|
||||
// per action_tile auf "typ" (siehe vflw-seg-linie-m3-impl). Radio-Buttons
|
||||
// statt Dropdown, Labels fest deutsch.
|
||||
vflw_seg_linie_m3 : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
@@ -319,10 +915,13 @@ vflw_seg_linie_m3 : dialog {
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: popup_list {
|
||||
key = "typ";
|
||||
: boxed_radio_column {
|
||||
label = "Typ:";
|
||||
width = 45;
|
||||
key = "typ";
|
||||
: radio_button { key = "typ_gf"; label = "GF (Neigungswinkel)"; value = "1"; }
|
||||
: radio_button { key = "typ_vfab"; label = "VF-Ab"; }
|
||||
: radio_button { key = "typ_vfauf"; label = "VF-Auf"; }
|
||||
: radio_button { key = "typ_vfhor"; label = "VF-Horizontal"; }
|
||||
}
|
||||
: text {
|
||||
key = "wlabel";
|
||||
@@ -340,7 +939,9 @@ vflw_seg_linie_m3 : dialog {
|
||||
|
||||
// Segment "Eck/Bogen" (Modus 2 + Modus 3 identisch): Typ (GF-Bogen /
|
||||
// Vario-Kurve) + [nur bei Vario-Kurve aktiv] Variante (aussen/innen). Die
|
||||
// Variante-Liste wird per action_tile auf "typ" aktiviert/deaktiviert.
|
||||
// Variante-Gruppe wird per action_tile auf "typ" aktiviert/deaktiviert, die
|
||||
// Vario-Kurve-Option selbst ggf. ueber "vario-erlaubt" (mode_tile), siehe
|
||||
// vflw-seg-bogen-impl. Radio-Buttons statt Dropdown, Labels fest deutsch.
|
||||
vflw_seg_bogen : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
@@ -350,15 +951,65 @@ vflw_seg_bogen : dialog {
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: popup_list {
|
||||
key = "typ";
|
||||
: boxed_radio_column {
|
||||
label = "Typ:";
|
||||
width = 40;
|
||||
key = "typ";
|
||||
: radio_button { key = "typ_gfbogen"; label = "GF-Bogen"; value = "1"; }
|
||||
: radio_button { key = "typ_vario"; label = "Vario-Kurve"; }
|
||||
}
|
||||
: popup_list {
|
||||
key = "variante";
|
||||
: boxed_radio_column {
|
||||
label = "Variante:";
|
||||
width = 30;
|
||||
key = "variante";
|
||||
: radio_button { key = "variante_aussen"; label = "Aussen"; value = "1"; }
|
||||
: radio_button { key = "variante_innen"; label = "Innen"; }
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
}
|
||||
|
||||
// Modus 2: Lauf-Abschluss, NUR wenn der VF-Lauf das Ende des gewaehlten Pfads
|
||||
// ist (kein Back-Lauf danach) - siehe vflw-m2-lauf-abschluss-impl. Radio-
|
||||
// Buttons, Labels fest deutsch.
|
||||
vflw_m2_lauf_abschluss : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
label = "Lauf beenden mit:";
|
||||
key = "abschluss";
|
||||
: radio_button { key = "abschluss_offen"; label = "Ohne Motorstation (offenes Ende, spaeter fortsetzen)"; }
|
||||
: radio_button { key = "abschluss_motor"; label = "Motorstation setzen"; value = "1"; }
|
||||
: radio_button { key = "abschluss_motor_es"; label = "Motorstation + ES-Element setzen (Kettenende)"; }
|
||||
}
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
}
|
||||
|
||||
// Modus 2: Lauf-Anfang, NUR wenn der VF-Lauf der Anfang des gewaehlten Pfads
|
||||
// ist (kein Front-Lauf davor) - siehe vflw-m2-lauf-anfang-impl. Radio-Buttons,
|
||||
// Labels fest deutsch.
|
||||
vflw_m2_lauf_anfang : dialog {
|
||||
label = "VarioFoerderer Assistent";
|
||||
|
||||
: column {
|
||||
: text {
|
||||
key = "kopf";
|
||||
label = "";
|
||||
width = 60;
|
||||
}
|
||||
: boxed_radio_column {
|
||||
label = "Lauf beginnen mit:";
|
||||
key = "anfang";
|
||||
: radio_button { key = "anfang_offen"; label = "Ohne Umlenkstation (offener Anfang, spaeter fortsetzen)"; }
|
||||
: radio_button { key = "anfang_umlenk"; label = "Umlenkstation direkt (kein GF1/Separator)"; }
|
||||
: radio_button { key = "anfang_umlenk_gf1"; label = "Umlenkstation mit GF1 + Separator"; value = "1"; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,12 +19,20 @@
|
||||
"vfl-menu-horizontal-vf-3": "\n 3 - Neue VF mit horizontalem Anfang (Horizontal-Stueck)",
|
||||
"vfl-menu-linie-ende-4": "\n 4 - Neue Linie BIS Kettenende (danach Separator + ES-Element)",
|
||||
"vfl-prompt-wahl-1-4-def1": "\nIhre Wahl (1-4) [1]: ",
|
||||
"vfl-menu-gf-bogen-ka-1": "\n 1 - GF-Bogen (horizontale Kurve)",
|
||||
"vfl-menu-variokurve-ka-2": "\n 2 - Vario-Kurve (horizontale Kurve, 30/60/90 Grad)",
|
||||
"vfl-menu-linie-gf-ka-3": "\n 3 - Neue Linie: GF (Gefaellestrecke)",
|
||||
"vfl-menu-linie-vf-ka-4": "\n 4 - Neue Linie: Ab/Auf VF (VarioFoerderer-Einheit)",
|
||||
"vfl-menu-horizontal-vf-ka-5": "\n 5 - Neue VF mit horizontalem Anfang (Horizontal-Stueck)",
|
||||
"vfl-menu-linie-ende-ka-6": "\n 6 - Neue Linie BIS Kettenende (danach Separator + ES-Element)",
|
||||
"vfl-prompt-wahl-1-6-def3": "\nIhre Wahl (1-6) [3]: ",
|
||||
"vfl-fehler-horizontal-vf-kurz": "\nFEHLER: Horizontaler VF braucht >= 1000 mm (Umlenk + Motor) - laenger zeichnen.",
|
||||
"vfl-fehler-linie-zu-kurz": "\nFEHLER: Linie zu kurz (oder entgegen der Fahrtrichtung) - bitte erneut waehlen.",
|
||||
"vfl-fehler-vf-kurz": "\nFEHLER: VarioFoerderer braucht >= 1000 mm (Umlenk + Motor) - laenger zeichnen oder \"GF\" waehlen.",
|
||||
"vfl-gefaelle-festlegen-header": "\nGefaelle festlegen:",
|
||||
"vfl-gefaelle-opt-hoehe": "\n 1 - Gegebene Hoehe (Zielhoehe)",
|
||||
"vfl-gefaelle-opt-winkel": "\n 2 - Neigungswinkel eingeben",
|
||||
"vfl-gf-hinweis-laenge-berechnet": "(deltaL wird berechnet und eingefuegt)",
|
||||
"vfl-prompt-neigungswinkel": "\nNeigungswinkel (Grad, 0 < Winkel <= %1) [%1]: ",
|
||||
"vfl-alert-winkel-ungueltig": "Neigungswinkel ungueltig: %1 Grad. Erlaubt: 0 < Winkel <= %2 Grad.",
|
||||
"vfl-prompt-hoehe-linienendpunkt": "\nHoehe (Z) des Linienendpunkts [%1]: ",
|
||||
@@ -42,6 +50,7 @@
|
||||
"vfl-alert-gf-steigend-falsche-richtung": "Steigende Gefaellestrecke: die gewaehlte Zielhoehe liegt unter der aktuellen Hoehe - bitte hoehere Zielhoehe waehlen oder den normalen (fallenden) Modus benutzen.",
|
||||
"vfl-sep-vor-gf-frage": "\n\nSeparator VOR dieser Gefaellestrecke einfuegen?",
|
||||
"vfl-sep-nach-gf-frage": "\n\nSeparator NACH dieser Gefaellestrecke einfuegen?",
|
||||
"vfl-sep-gf-header": "Separator an dieser Gefaellestrecke",
|
||||
"vfl-ist-kettenende-header": "\nIst das das Kettenende?",
|
||||
"vfl-kettenende-opt-ja-es": "\n 1 - Ja (ES-Element setzen)",
|
||||
"vfl-kettenende-opt-ja-ohne-es": "\n 2 - Ja (ohne ES-Element setzen)",
|
||||
@@ -106,6 +115,10 @@
|
||||
"vfl-opt2-60grad": "\n 60 Grad",
|
||||
"vfl-opt3-30grad": "\n 30 Grad",
|
||||
"vfl-prompt-wahl-1-3-def1": "\nIhre Wahl (1/2/3) [1]: ",
|
||||
"vfl-frage-startpunkt-typ": "\n\nAm Startpunkt konnte kein eindeutiger GF-/VF-Baustein erkannt werden (GF-Stueck und VF-Horizontalstueck sehen baulich identisch aus). Wie soll der Eingang gebaut werden?",
|
||||
"vfl-opt-eingang-direkt": "\n 1 - Direkt Umlenkstation bauen (kein GF-Stueck)",
|
||||
"vfl-opt-eingang-mit-stumpf": "\n 2 - GF (%1 mm) + Umlenkstation",
|
||||
"vfl-opt-eingang-ohne-umlenk": "\n 3 - Ohne Umlenkstation (VF-Fortsetzung)",
|
||||
"vfl-variokurve-seite-header": "\nVario-Kurve - Seite waehlen:",
|
||||
"vfl-variokurve-variante-header": "\nVario-Kurve - Variante waehlen:",
|
||||
"vfl-variante-aussen": "\n 1 - Aussen",
|
||||
@@ -164,9 +177,26 @@
|
||||
"vfl-m3-junction-exakt": "\n Junction (exakt): %1 mm",
|
||||
"vfl-m3-kletter-info": "\n Kletterhoehe %1 mm | Kletterer %2 | Kurven %3 | kurze VF %4",
|
||||
"vfl-m3-kein-winkel": "\n KEIN passender Vario-Winkel -> infeasibel (Front bereits gebaut).",
|
||||
"vfl-m3-kletter-zu-kurz-flach": "\n Kein Kletter-Winkel passt (Segment zu kurz) -> Lauf wird komplett flach gebaut, Hoehe wandert in GF1.",
|
||||
"vfl-m3-kletter-flach-gf": "\n Flache Zone: GF-Kompensation (GF1) = %1 mm",
|
||||
"vfl-m3-alert-vf-zu-lang": "VF-Lauf ist %1 m lang (Grenze %2 m) - bitte neu planen (z.B. Zwischen-Motorstation einfuegen).",
|
||||
"vfl-m3-warnung-fueller-eingang-zu-kurz": "\n WARNUNG: Fueller direkt nach der Umlenkstation zu kurz (%1 mm < Minimum %2 mm) - nur Minimalabstand gebaut, Zielposition nicht exakt erreicht.",
|
||||
"vfl-m3-warnung-fueller-ausgang-zu-kurz": "\n WARNUNG: Fueller direkt vor der Motorstation zu kurz (%1 mm < Minimum %2 mm) - nur Minimalabstand gebaut, Zielposition nicht exakt erreicht.",
|
||||
"vfl-m3-lauf-anfang-header": "\n\nDer VF-Lauf ist der Anfang des gewaehlten Pfads. Lauf beginnen mit:",
|
||||
"vfl-m3-lauf-anfang-opt-offen": "\n 1 - Ohne Umlenkstation (offener Anfang, spaeter fortsetzen/verschmelzen)",
|
||||
"vfl-m3-lauf-anfang-opt-umlenk": "\n 2 - Umlenkstation direkt (kein GF1/Separator)",
|
||||
"vfl-m3-lauf-anfang-opt-umlenk-gf1": "\n 3 - Umlenkstation mit GF1 + Separator",
|
||||
"vfl-m3-lauf-anfang-offen-hinweis": "\n Anfang bleibt bewusst offen - keine Umlenkstation/GF1/Separator gebaut, spaeter fortsetzen oder per Vario_Kette_Merge verbinden.",
|
||||
"vfl-m3-lauf-abschluss-header": "\n\nDer VF-Lauf ist das Ende des gewaehlten Pfads. Lauf beenden mit:",
|
||||
"vfl-m3-lauf-abschluss-opt-offen": "\n 1 - Ohne Motorstation (offenes Ende, spaeter fortsetzen/verschmelzen)",
|
||||
"vfl-m3-lauf-abschluss-opt-motor": "\n 2 - Motorstation setzen (kein ES-Element)",
|
||||
"vfl-m3-lauf-abschluss-opt-motor-es": "\n 3 - Motorstation + ES-Element setzen (Kettenende)",
|
||||
"vfl-m3-lauf-abschluss-offen-hinweis": "\n Lauf bleibt bewusst offen - keine Motorstation/Separator/ES gebaut, spaeter fortsetzen oder per Vario_Kette_Merge verbinden.",
|
||||
"vfl-m3-gf-verteilung": "\n\n GF-Verteilung: 1 - alles am Einlauf (GF1) 2 - 1/2 GF1 + 1/2 GF2",
|
||||
"vfl-m3-gf-verteilung-alles-auslauf": "\n Kein GF1-Platz am Einlauf gewaehlt - komplette Kompensation wandert nach GF2 (Auslauf).",
|
||||
"vfl-m3-vert-halb": "1/2 GF1 + 1/2 GF2",
|
||||
"vfl-m3-vert-ganz": "alles GF1",
|
||||
"vfl-m3-vert-auslauf": "alles GF2 (Auslauf)",
|
||||
"vfl-m3-vario-ergebnis": "\n -> Vario %1 (%2), L_VF %3 mm, GF gesamt %4 mm, Verteilung %5 (GF2-Rest = Mess-Feinkorrektur)",
|
||||
"vfl-m3-warnung-gf2-negativ": "\n WARNUNG: Koerper klettert zu wenig - GF2<0 (fehlen %1 mm). Winkel zu flach; dZ nicht exakt.",
|
||||
"vfl-m3-gf2-ausgleich": "\n GF2 (gemessener Ausgleich): L=%1 mm",
|
||||
@@ -303,6 +333,26 @@
|
||||
"vfe-tabelle-zeile-fehler": "\n %1 --- --- FEHLER",
|
||||
"vfl-20m-hinweis": "\n >>> HINWEIS: Foerderer laenger als 20 m (%1 m) - Motorstation empfohlen!",
|
||||
"vfl-block-erstellt": "\n>>> Block '%1' (%2) erstellt und eingefuegt.",
|
||||
"vfl-fehler-rest-nicht-baubar-mit-vorschlag": "\n FEHLER: Bei Zielhoehe %1 mm (Strecke dL=%2 mm, Hoehendifferenz dH=%3 mm, %4) nicht baubar (zu steil/zu kurz fuer Schwanz Motor+GF2+Separator+ES). Baubare Zielhoehe waere ungefaehr:%5",
|
||||
"vfl-fehler-rest-nicht-baubar-ohne-vorschlag": "\n FEHLER: Bei Zielhoehe %1 mm (Strecke dL=%2 mm, Hoehendifferenz dH=%3 mm, %4) nicht baubar - bei dieser Streckenlaenge wurde auch keine alternative Zielhoehe gefunden. Bitte laenger zeichnen oder flacher planen.",
|
||||
"vfl-vorschlag-ab-auf": " Ab %1 mm oder Auf %2 mm",
|
||||
"vfl-vorschlag-nur-ab": " Ab %1 mm (Auf ist bei dieser Streckenlaenge nicht baubar)",
|
||||
"vfl-vorschlag-nur-auf": " Auf %1 mm (Ab ist bei dieser Streckenlaenge nicht baubar)",
|
||||
"vfl-alert-kettenende-p1": "1. Ziel △L=%1 mm, △H=%2 mm (%3): Auf/Ab-Foerderer (Winkel-Tabelle) nicht baubar.",
|
||||
"vfl-alert-kettenende-p2-beide": "\n\n2. Horizontal+GF nicht baubar - noetig waeren mindestens △L=%1 mm ODER mindestens △H=%2 mm.",
|
||||
"vfl-alert-kettenende-p2-nur-minh": "\n\n2. Horizontal+GF nicht baubar - noetig waere mindestens △H=%1 mm Hoehenaenderung.",
|
||||
"vfl-alert-kettenende-p2-nur-minl": "\n\n2. Horizontal+GF nicht baubar - noetig waere mindestens △L=%1 mm Streckenlaenge.",
|
||||
"vfl-stufe1-start": "\n\n[Diagnose Stufe 1 - VF-Winkel-Suche]",
|
||||
"vfl-stufe2-diagnose": "\n\n[Diagnose Stufe 2 - horizontal+GF] deltaL=%1 mm deltaH=%2 mm -> GF_total=%3 mm L_VF=%4 mm (%5)",
|
||||
"vfl-stufe2-diagnose-details": "\n [Details] schon-flach=%1 | aus-dx=%2 mm (Einlauf, sollte 0 sein) | ein-dx=%3 mm ein-dz=%4 mm (ES-Element) | bogen-x1=%5 mm bogen-z1=%6 mm (Eintrittsbogen 3->0 Grad, nur falls nicht schon-flach) | bogen-x2=%7 mm bogen-z2=%8 mm (Austrittsbogen 0->3 Grad, immer) | FESTE_HORIZONTAL=%9 mm (Separator+Motorstation)",
|
||||
"vfl-stufe2-fest-kettenende": "\n Motorstation+Separator+ES benoetigen: Laenge=%1 mm, Hoehenabsenkung=%2 mm (fest, unabhaengig vom Winkel)",
|
||||
"vfl-stufe2-fest-eingang": "\n Umlenkstation+Separator+Motorstation+ES benoetigen: Laenge=%1 mm, Hoehenabsenkung=%2 mm (fest, unabhaengig vom Winkel)",
|
||||
"vfl-stufe2-minl": "\n [Mindestwert 1] Ohne geraden VF-Anteil (GF nach Zielhoehe dimensioniert): mindestens %1 mm Streckenlaenge noetig (vorhanden: %2 mm)",
|
||||
"vfl-stufe2-minl-unmoeglich": "\n [Mindestwert 1] Nicht per Streckenlaenge loesbar: schon ohne GF-Bogen aendert sich die Hoehe um %1 mm - die Zielhoehe verlangt aber nur %2 mm (zu wenig Hoehenunterschied fuer die feste Neigung)",
|
||||
"vfl-stufe2-minh": "\n [Mindestwert 2] Ohne GF-Bogen (Rest als gerader VF-Anteil, der die Hoehe nicht aendert): mindestens %1 mm Hoehenaenderung noetig (vorhanden: %2 mm)",
|
||||
"vfl-stufe2-minh-unmoeglich": "\n [Mindestwert 2] Nicht per Zielhoehe loesbar: schon ohne geraden VF-Anteil und ohne GF-Bogen betraegt der feste Fussabdruck %1 mm - die Strecke bietet aber nur %2 mm",
|
||||
"vfl-stufe2-ungueltig": "\n Stufe 2 (horizontal+GF) war ungueltig - es wurde stattdessen Stufe 1 (VF-Winkel-Suche) versucht (siehe Tabelle oben).",
|
||||
"vfl-frage-gf2-minimum": "\n Berechnetes GF2=%1 mm liegt unter der ueblichen Mindestlaenge (%2 mm).\n Ja = mit den exakt berechneten %1 mm bauen (Zielpunkt wird exakt getroffen).\n Nein = auf %2 mm auffuellen (Zielpunkt verschiebt sich entsprechend weiter).",
|
||||
"vfl-fehler-rest-nicht-baubar": "\n FEHLER: Rest nicht baubar (zu steil/zu kurz fuer Schwanz Motor+GF2+Separator+ES). Bitte weiter zeichnen oder flacher planen.",
|
||||
"vfl-fuege-block-ein": "\n Fuege %1 ein ...",
|
||||
"vfl-hinweis-gf2-minimum": "\n HINWEIS: berechnetes GF2=%1 mm < Minimum %2 mm -> auf Minimum angehoben (ES endet dadurch etwas weiter; siehe Ist-Ziel-Report).",
|
||||
@@ -313,6 +363,13 @@
|
||||
"vfl-prompt-hoehe-kettenende": "\nHoehe (Z) des Kettenendes (ES-Element) [%1]: ",
|
||||
"vfl-prompt-hoehe-kettenende-2": "\nHoehe (Z) des Kettenendes (ES-Element) (Ab: %1 | Auf: %2) [%1]: ",
|
||||
"vfl-prompt-wahl-bis-n": "\nIhre Wahl (1-%1) [1]: ",
|
||||
"vfl-frage-auf-ab-richtung": "\n\nKette kommt flach an - keine Zielhoehe verfuegbar. Richtung waehlen:",
|
||||
"vfl-opt-richtung-auf": "\n 1 - Auf",
|
||||
"vfl-opt-richtung-ab": "\n 2 - Ab",
|
||||
"vfl-winkel-hoehen-header": "\n\nVerfuegbare Winkel und die damit erreichte Endhoehe - bitte waehlen:",
|
||||
"vfl-winkel-hoehen-option": "\n %1 - %2 Grad (Endhoehe: %3 mm)",
|
||||
"vfl-winkel-hoehen-zeile": "\n %1 Grad - Endhoehe: %2 mm",
|
||||
"vfl-winkel-hoehen-zeile-ungueltig": "\n %1 Grad - nicht baubar (Bogen passt nicht in die gewaehlte Strecke)",
|
||||
"vfl-segment-gf-nicht-erlaubt": "\n Segment waere GF (zu steil) oder nicht baubar - innerhalb einer VF-Einheit nicht erlaubt.\n Bitte flacher/steigend zeichnen oder Foerderer beenden.",
|
||||
"vfl-winkel-option": "\n %1 - %2 Grad (L_GF=%3 mm L_VF=%4 mm)",
|
||||
"vfs-as90-mass": "\n AS_90: dx=%1 dz=%2",
|
||||
|
||||
@@ -19,12 +19,20 @@
|
||||
"vfl-menu-horizontal-vf-3": "\n 3 - New VF with horizontal start (horizontal piece)",
|
||||
"vfl-menu-linie-ende-4": "\n 4 - New line TO chain end (then separator + ES element)",
|
||||
"vfl-prompt-wahl-1-4-def1": "\nYour choice (1-4) [1]: ",
|
||||
"vfl-menu-gf-bogen-ka-1": "\n 1 - GF arc (horizontal curve)",
|
||||
"vfl-menu-variokurve-ka-2": "\n 2 - Vario curve (horizontal curve, 30/60/90 degrees)",
|
||||
"vfl-menu-linie-gf-ka-3": "\n 3 - New line: GF (gravity section)",
|
||||
"vfl-menu-linie-vf-ka-4": "\n 4 - New line: down/up VF (VarioFoerderer unit)",
|
||||
"vfl-menu-horizontal-vf-ka-5": "\n 5 - New VF with horizontal start (horizontal piece)",
|
||||
"vfl-menu-linie-ende-ka-6": "\n 6 - New line TO chain end (then separator + ES element)",
|
||||
"vfl-prompt-wahl-1-6-def3": "\nYour choice (1-6) [3]: ",
|
||||
"vfl-fehler-horizontal-vf-kurz": "\nERROR: Horizontal VF needs >= 1000 mm (deflection + motor) - draw it longer.",
|
||||
"vfl-fehler-linie-zu-kurz": "\nERROR: Line too short (or against travel direction) - please pick again.",
|
||||
"vfl-fehler-vf-kurz": "\nERROR: VarioFoerderer needs >= 1000 mm (deflection + motor) - draw it longer or choose \"GF\".",
|
||||
"vfl-gefaelle-festlegen-header": "\nDefine slope:",
|
||||
"vfl-gefaelle-opt-hoehe": "\n 1 - Given height (target height)",
|
||||
"vfl-gefaelle-opt-winkel": "\n 2 - Enter incline angle",
|
||||
"vfl-gf-hinweis-laenge-berechnet": "(deltaL will be calculated and inserted)",
|
||||
"vfl-prompt-neigungswinkel": "\nIncline angle (degrees, 0 < angle <= %1) [%1]: ",
|
||||
"vfl-alert-winkel-ungueltig": "Incline angle invalid: %1 degrees. Allowed: 0 < angle <= %2 degrees.",
|
||||
"vfl-prompt-hoehe-linienendpunkt": "\nHeight (Z) of the line end point [%1]: ",
|
||||
@@ -42,6 +50,7 @@
|
||||
"vfl-alert-gf-steigend-falsche-richtung": "Rising gravity conveyor: the chosen target height is below the current height - please choose a higher target height or use the normal (falling) mode.",
|
||||
"vfl-sep-vor-gf-frage": "\n\nInsert separator BEFORE this gravity section?",
|
||||
"vfl-sep-nach-gf-frage": "\n\nInsert separator AFTER this gravity section?",
|
||||
"vfl-sep-gf-header": "Separator at this gravity section",
|
||||
"vfl-ist-kettenende-header": "\nIs this the chain end?",
|
||||
"vfl-kettenende-opt-ja-es": "\n 1 - Yes (place ES element)",
|
||||
"vfl-kettenende-opt-ja-ohne-es": "\n 2 - Yes (without placing ES element)",
|
||||
@@ -106,6 +115,10 @@
|
||||
"vfl-opt2-60grad": "\n 60 deg",
|
||||
"vfl-opt3-30grad": "\n 30 deg",
|
||||
"vfl-prompt-wahl-1-3-def1": "\nYour choice (1/2/3) [1]: ",
|
||||
"vfl-frage-startpunkt-typ": "\n\nNo clear GF/VF component was recognized at the starting point (a GF stretch and a VF horizontal stretch look structurally identical). How should the entry be built?",
|
||||
"vfl-opt-eingang-direkt": "\n 1 - Build idler station directly (no GF stretch)",
|
||||
"vfl-opt-eingang-mit-stumpf": "\n 2 - GF (%1 mm) + idler station",
|
||||
"vfl-opt-eingang-ohne-umlenk": "\n 3 - No idler station (VF continuation)",
|
||||
"vfl-variokurve-seite-header": "\nVario curve - choose side:",
|
||||
"vfl-variokurve-variante-header": "\nVario curve - choose variant:",
|
||||
"vfl-variante-aussen": "\n 1 - Outer",
|
||||
@@ -164,9 +177,26 @@
|
||||
"vfl-m3-junction-exakt": "\n Junction (exact): %1 mm",
|
||||
"vfl-m3-kletter-info": "\n Climb height %1 mm | climbers %2 | curves %3 | short VF %4",
|
||||
"vfl-m3-kein-winkel": "\n NO matching Vario angle -> infeasible (front already built).",
|
||||
"vfl-m3-kletter-zu-kurz-flach": "\n No climb angle fits (segment too short) -> run is built entirely flat, height is absorbed by GF1.",
|
||||
"vfl-m3-kletter-flach-gf": "\n Flat zone: GF compensation (GF1) = %1 mm",
|
||||
"vfl-m3-alert-vf-zu-lang": "VF run is %1 m long (limit %2 m) - please re-plan (e.g. insert an intermediate motor station).",
|
||||
"vfl-m3-warnung-fueller-eingang-zu-kurz": "\n WARNING: filler right after the reversing station is too short (%1 mm < minimum %2 mm) - only the minimum clearance was built, target position not reached exactly.",
|
||||
"vfl-m3-warnung-fueller-ausgang-zu-kurz": "\n WARNING: filler right before the motor station is too short (%1 mm < minimum %2 mm) - only the minimum clearance was built, target position not reached exactly.",
|
||||
"vfl-m3-lauf-anfang-header": "\n\nThe VF run is the start of the selected path. Start the run with:",
|
||||
"vfl-m3-lauf-anfang-opt-offen": "\n 1 - No reversing station (open start, continue/merge later)",
|
||||
"vfl-m3-lauf-anfang-opt-umlenk": "\n 2 - Reversing station directly (no GF1/separator)",
|
||||
"vfl-m3-lauf-anfang-opt-umlenk-gf1": "\n 3 - Reversing station with GF1 + separator",
|
||||
"vfl-m3-lauf-anfang-offen-hinweis": "\n Start deliberately left open - no reversing station/GF1/separator built; continue later or join with Vario_Kette_Merge.",
|
||||
"vfl-m3-lauf-abschluss-header": "\n\nThe VF run is the end of the selected path. End the run with:",
|
||||
"vfl-m3-lauf-abschluss-opt-offen": "\n 1 - No motor station (open end, continue/merge later)",
|
||||
"vfl-m3-lauf-abschluss-opt-motor": "\n 2 - Set motor station (no ES element)",
|
||||
"vfl-m3-lauf-abschluss-opt-motor-es": "\n 3 - Motor station + ES element (chain end)",
|
||||
"vfl-m3-lauf-abschluss-offen-hinweis": "\n Run deliberately left open - no motor station/separator/ES built; continue later or join with Vario_Kette_Merge.",
|
||||
"vfl-m3-gf-verteilung": "\n\n GF distribution: 1 - all at inlet (GF1) 2 - 1/2 GF1 + 1/2 GF2",
|
||||
"vfl-m3-gf-verteilung-alles-auslauf": "\n No GF1 room at the inlet chosen - full compensation moves to GF2 (outlet).",
|
||||
"vfl-m3-vert-halb": "1/2 GF1 + 1/2 GF2",
|
||||
"vfl-m3-vert-ganz": "all GF1",
|
||||
"vfl-m3-vert-auslauf": "all GF2 (outlet)",
|
||||
"vfl-m3-vario-ergebnis": "\n -> Vario %1 (%2), L_VF %3 mm, GF total %4 mm, distribution %5 (GF2 remainder = measured fine correction)",
|
||||
"vfl-m3-warnung-gf2-negativ": "\n WARNING: body climbs too little - GF2<0 (missing %1 mm). Angle too shallow; dZ not exact.",
|
||||
"vfl-m3-gf2-ausgleich": "\n GF2 (measured compensation): L=%1 mm",
|
||||
@@ -304,6 +334,26 @@
|
||||
"vfl-20m-hinweis": "\n >>> NOTE: conveyor longer than 20 m (%1 m) - motor station recommended!",
|
||||
"vfl-block-erstellt": "\n>>> Block '%1' (%2) created and inserted.",
|
||||
"vfl-fehler-rest-nicht-baubar": "\n ERROR: remainder cannot be built (too steep/too short for tail motor+GF2+separator+ES). Please continue drawing or plan flatter.",
|
||||
"vfl-fehler-rest-nicht-baubar-mit-vorschlag": "\n ERROR: not buildable at target height %1 mm (distance dL=%2 mm, height difference dH=%3 mm, %4) - too steep/too short for tail motor+GF2+separator+ES. An approximately buildable target height would be:%5",
|
||||
"vfl-fehler-rest-nicht-baubar-ohne-vorschlag": "\n ERROR: not buildable at target height %1 mm (distance dL=%2 mm, height difference dH=%3 mm, %4) - no alternative target height was found for this distance either. Please draw a longer distance or plan flatter.",
|
||||
"vfl-vorschlag-ab-auf": " down to %1 mm or up to %2 mm",
|
||||
"vfl-vorschlag-nur-ab": " down to %1 mm (up is not buildable at this distance)",
|
||||
"vfl-vorschlag-nur-auf": " up to %1 mm (down is not buildable at this distance)",
|
||||
"vfl-alert-kettenende-p1": "1. Target ΔL=%1 mm, ΔH=%2 mm (%3): angled Vario (angle table) not buildable.",
|
||||
"vfl-alert-kettenende-p2-beide": "\n\n2. Horizontal+GF not buildable - would need at least ΔL=%1 mm OR at least ΔH=%2 mm.",
|
||||
"vfl-alert-kettenende-p2-nur-minh": "\n\n2. Horizontal+GF not buildable - would need at least ΔH=%1 mm of height change.",
|
||||
"vfl-alert-kettenende-p2-nur-minl": "\n\n2. Horizontal+GF not buildable - would need at least ΔL=%1 mm of distance.",
|
||||
"vfl-stufe1-start": "\n\n[Diagnosis stage 1 - VF angle search]",
|
||||
"vfl-stufe2-diagnose": "\n\n[Diagnosis stage 2 - horizontal+GF] deltaL=%1 mm deltaH=%2 mm -> GF_total=%3 mm L_VF=%4 mm (%5)",
|
||||
"vfl-stufe2-diagnose-details": "\n [Details] already-flat=%1 | aus-dx=%2 mm (entry, should be 0) | ein-dx=%3 mm ein-dz=%4 mm (ES element) | bogen-x1=%5 mm bogen-z1=%6 mm (entry bend 3->0 deg, only if not already-flat) | bogen-x2=%7 mm bogen-z2=%8 mm (exit bend 0->3 deg, always) | FESTE_HORIZONTAL=%9 mm (separator+motor station)",
|
||||
"vfl-stufe2-fest-kettenende": "\n Motor station+separator+ES require: length=%1 mm, height drop=%2 mm (fixed, independent of angle)",
|
||||
"vfl-stufe2-fest-eingang": "\n Reversing station+separator+motor station+ES require: length=%1 mm, height drop=%2 mm (fixed, independent of angle)",
|
||||
"vfl-stufe2-minl": "\n [Minimum 1] Without a straight VF section (GF sized to the target height): at least %1 mm of distance needed (available: %2 mm)",
|
||||
"vfl-stufe2-minl-unmoeglich": "\n [Minimum 1] Not solvable via distance: even without a GF bend the height already changes by %1 mm - the target only calls for %2 mm (not enough height difference for the fixed incline)",
|
||||
"vfl-stufe2-minh": "\n [Minimum 2] Without a GF bend (remainder as a straight VF section, which does not change height): at least %1 mm of height change needed (available: %2 mm)",
|
||||
"vfl-stufe2-minh-unmoeglich": "\n [Minimum 2] Not solvable via target height: even without a straight VF section and without a GF bend, the fixed footprint is already %1 mm - the distance only offers %2 mm",
|
||||
"vfl-stufe2-ungueltig": "\n Stage 2 (horizontal+GF) was invalid - stage 1 (VF angle search) was tried instead (see table above).",
|
||||
"vfl-frage-gf2-minimum": "\n Calculated GF2=%1 mm is below the usual minimum length (%2 mm).\n Yes = build with the exact calculated %1 mm (hits the target point exactly).\n No = pad up to %2 mm (target point shifts further accordingly).",
|
||||
"vfl-fuege-block-ein": "\n Inserting %1 ...",
|
||||
"vfl-hinweis-gf2-minimum": "\n NOTE: calculated GF2=%1 mm < minimum %2 mm -> raised to minimum (ES therefore ends a bit further on; see actual-vs-target report).",
|
||||
"vfl-horizontale-zwischenstrecke": "\n\nHorizontal intermediate section (0 deg, L=%1 mm)",
|
||||
@@ -313,6 +363,13 @@
|
||||
"vfl-prompt-hoehe-kettenende": "\nHeight (Z) of the chain end (ES element) [%1]: ",
|
||||
"vfl-prompt-hoehe-kettenende-2": "\nHeight (Z) of the chain end (ES element) (down: %1 | up: %2) [%1]: ",
|
||||
"vfl-prompt-wahl-bis-n": "\nYour choice (1-%1) [1]: ",
|
||||
"vfl-frage-auf-ab-richtung": "\n\nChain arrives flat - no target height available. Choose direction:",
|
||||
"vfl-opt-richtung-auf": "\n 1 - Up",
|
||||
"vfl-opt-richtung-ab": "\n 2 - Down",
|
||||
"vfl-winkel-hoehen-header": "\n\nAvailable angles and the resulting end height - please choose:",
|
||||
"vfl-winkel-hoehen-option": "\n %1 - %2 deg (end height: %3 mm)",
|
||||
"vfl-winkel-hoehen-zeile": "\n %1 deg - end height: %2 mm",
|
||||
"vfl-winkel-hoehen-zeile-ungueltig": "\n %1 deg - not buildable (bend does not fit into the chosen distance)",
|
||||
"vfl-segment-gf-nicht-erlaubt": "\n Segment would be GF (too steep) or not buildable - not allowed within a VF unit.\n Please draw flatter/rising or end the conveyor.",
|
||||
"vfl-winkel-option": "\n %1 - %2 deg (L_GF=%3 mm L_VF=%4 mm)",
|
||||
"vfs-as90-mass": "\n AS_90: dx=%1 dz=%2",
|
||||
|
||||
+12
-2
@@ -430,6 +430,14 @@ class SpecSchreiber(object):
|
||||
raise ValueError("%s: Feld %r fehlt" % (self.wo, name))
|
||||
return None
|
||||
|
||||
def richtung(self, quelle):
|
||||
# Reine Richtungswahl OHNE Laenge (vfl-in-richtung: nur REAL, kein
|
||||
# DL-Token) - fuer den Kettenanfang-Fall von Linie-GF modus="hoehe"/
|
||||
# "steigend"+"hoehe", wo die Laenge erst aus Hoehe/Winkel berechnet
|
||||
# wird. Nur relevant, wenn dies das erste Segment der Kette ist.
|
||||
self.zahl("REAL", self.feld(quelle, "hz"))
|
||||
self.erster_dl = False
|
||||
|
||||
def linie(self, quelle):
|
||||
self.zahl("DL", self.feld(quelle, "dl"))
|
||||
if self.erster_dl:
|
||||
@@ -516,14 +524,16 @@ class SpecSchreiber(object):
|
||||
or "endpunkt")
|
||||
self.raus("STR", _code(GF_LAENGE_MODUS, smodus,
|
||||
"steigend_modus"))
|
||||
if smodus == "endpunkt" or self.erster_dl:
|
||||
if smodus == "endpunkt":
|
||||
self.linie(sek)
|
||||
elif self.erster_dl:
|
||||
self.richtung(sek)
|
||||
if smodus == "hoehe":
|
||||
self.zahl("REAL", self.feld(sek, "hoehe"))
|
||||
self.zahl("REAL", self.feld(sek, "winkel"))
|
||||
elif modus == "hoehe":
|
||||
if self.erster_dl:
|
||||
self.linie(sek)
|
||||
self.richtung(sek)
|
||||
self.raus("STR", _ja_code(self.feld(sek, "sep_vor",
|
||||
pflicht=False)))
|
||||
self.raus("STR", _ja_code(self.feld(sek, "sep_nach",
|
||||
|
||||
+26
-5
@@ -146,12 +146,14 @@
|
||||
(vsp-journal spec))
|
||||
|
||||
;; --- Linie-GF, Zielhoehe zuerst (laenge_modus "hoehe") ---
|
||||
;; Kein Separator-Paar VOR der Hoehen-/Winkel-Eingabe wie im Endpunkt-Zweig
|
||||
;; - hier stehen sie NACH DL(+hz), aber vor Hoehe/Winkel (siehe
|
||||
;; vf-linienzug-modus, Zweig B).
|
||||
;; Kettenanfang braucht nur eine REINE Richtungswahl (vfl-in-richtung: nur
|
||||
;; REAL, KEIN DL-Token - die Laenge ist hier ja noch unbekannt, sie ergibt
|
||||
;; sich erst aus Hoehe/Winkel). Kein Separator-Paar VOR der Hoehen-/Winkel-
|
||||
;; Eingabe wie im Endpunkt-Zweig - hier stehen sie NACH der Richtung, aber
|
||||
;; vor Hoehe/Winkel (siehe vf-linienzug-modus, Zweig B).
|
||||
(setq spec (tsp-spec T (list
|
||||
(tsp-sek (list (cons "glied" "Linie-GF") (cons "laenge_modus" "hoehe")
|
||||
(cons "dl" 100.0) (cons "hz" 0.0)
|
||||
(cons "hz" 0.0)
|
||||
(cons "sep_vor" 1) (cons "sep_nach" 0)
|
||||
(cons "hoehe" 1800.0) (cons "winkel" 3.0)
|
||||
(cons "ende" "nein")) nil))))
|
||||
@@ -159,7 +161,7 @@
|
||||
(append (tsp-pre-mit-as)
|
||||
(list (cons "STEP" "Linie-GF") (cons "STR" "1")
|
||||
(cons "STR" "2") ; laenge_modus: hoehe
|
||||
(cons "DL" 100.0) (cons "REAL" 0.0)
|
||||
(cons "REAL" 0.0) ; reine Richtungswahl, kein DL
|
||||
(cons "STR" "1") (cons "STR" "2") ; Separator vor(ja)/nach(nein)
|
||||
(cons "REAL" 1800.0) (cons "REAL" 3.0)
|
||||
(cons "STR" "3")))
|
||||
@@ -182,6 +184,25 @@
|
||||
(cons "STR" "3")))
|
||||
(vsp-journal spec))
|
||||
|
||||
;; --- Linie-GF, Sonderfall Steigend, Zielhoehe-Unterwahl ---
|
||||
;; Wie "hoehe" oben: nur reine Richtungswahl (REAL, kein DL) am
|
||||
;; Kettenanfang - KEIN Separator-Feld.
|
||||
(setq spec (tsp-spec T (list
|
||||
(tsp-sek (list (cons "glied" "Linie-GF") (cons "laenge_modus" "steigend")
|
||||
(cons "steigend_modus" "hoehe")
|
||||
(cons "hz" 0.0)
|
||||
(cons "hoehe" 1810.0) (cons "winkel" 1.5)
|
||||
(cons "ende" "nein")) nil))))
|
||||
(tsp-journal-eq "Linie-GF, Steigend + Zielhoehe"
|
||||
(append (tsp-pre-mit-as)
|
||||
(list (cons "STEP" "Linie-GF") (cons "STR" "1")
|
||||
(cons "STR" "3") ; laenge_modus: steigend
|
||||
(cons "STR" "2") ; steigend_modus: hoehe
|
||||
(cons "REAL" 0.0) ; reine Richtungswahl, kein DL
|
||||
(cons "REAL" 1810.0) (cons "REAL" 1.5)
|
||||
(cons "STR" "3")))
|
||||
(vsp-journal spec))
|
||||
|
||||
;; --- Horizontal-VF: horizontaler Erstkoerper ---
|
||||
;; Nur hier stehen Separator vor/nach VOR der Endpunkt-Antwort
|
||||
;; (vfl-baue-horizontal-koerper im Ziel-Modus).
|
||||
|
||||
@@ -342,7 +342,7 @@ LISP_FAELLE = {
|
||||
"start": _start(),
|
||||
"sektionen": [
|
||||
{"glied": "Linie-GF", "laenge_modus": "hoehe",
|
||||
"dl": 100.0, "hz": 0.0, "sep_vor": True, "sep_nach": False,
|
||||
"hz": 0.0, "sep_vor": True, "sep_nach": False,
|
||||
"hoehe": 1800.0, "winkel": 3.0, "ende": "nein"}]},
|
||||
"Linie-GF, Steigend + Endpunkt": {
|
||||
"start": _start(),
|
||||
@@ -350,6 +350,12 @@ LISP_FAELLE = {
|
||||
{"glied": "Linie-GF", "laenge_modus": "steigend",
|
||||
"steigend_modus": "endpunkt",
|
||||
"dl": 800.0, "hz": 0.0, "winkel": 2.0, "ende": "nein"}]},
|
||||
"Linie-GF, Steigend + Zielhoehe": {
|
||||
"start": _start(),
|
||||
"sektionen": [
|
||||
{"glied": "Linie-GF", "laenge_modus": "steigend",
|
||||
"steigend_modus": "hoehe",
|
||||
"hz": 0.0, "hoehe": 1810.0, "winkel": 1.5, "ende": "nein"}]},
|
||||
"Horizontal-VF + Motorstation + ES": {
|
||||
"start": _start(),
|
||||
"sektionen": [
|
||||
@@ -453,8 +459,8 @@ class TestLispErwartungen:
|
||||
|
||||
def test_alle_faelle_gefunden(self):
|
||||
erwartungen = _lisp_erwartungen()
|
||||
assert len(erwartungen) == 9, \
|
||||
f"9 tsp-journal-eq-Faelle erwartet, {len(erwartungen)} gefunden: " \
|
||||
assert len(erwartungen) == 10, \
|
||||
f"10 tsp-journal-eq-Faelle erwartet, {len(erwartungen)} gefunden: " \
|
||||
f"{sorted(erwartungen)}"
|
||||
|
||||
@pytest.mark.parametrize("praefix", sorted(LISP_FAELLE))
|
||||
|
||||
Reference in New Issue
Block a user