Merge remote-tracking branch 'origin/master'

This commit is contained in:
2026-10-08 15:12:50 +02:00
16 changed files with 5051 additions and 4452 deletions
+46 -64
View File
@@ -80,6 +80,11 @@
;; Von den Menue-Wrappern gesetzt, damit die Konsolen-/Dialog-Frage
;; entfaellt. nil = interaktiv fragen (Direktaufruf VarioFoerderer).
(if (null *vf-vorauswahl-eingabemodus*) (setq *vf-vorauswahl-eingabemodus* nil))
;; Vorauswahl des Linienzug-Modus (1-5): von jedem der fuenf Linienzug-
;; Menue-Wrapper (c:LinienzugVarioFoerdererManuell/-Zielhoehe/-Stueckweise,
;; c:QcLinieMitGf/-UForm) gesetzt - der frueher hier noetige Modus-Dialog/
;; Konsolen-Fallback ist dadurch komplett entfallen (siehe c:VarioFoerderer).
(if (null *vf-vorauswahl-linienzug-modus*) (setq *vf-vorauswahl-linienzug-modus* nil))
;; Registriert einen Foerderanlagen-Typ.
;; berechne-fn: '(lambda (deltaL deltaH richtung seite) ...)
@@ -1172,14 +1177,14 @@
)
;; ============================================================
;; TEIL 11b: DIALOG-AUSWAHL FUER TYP/LINIENZUG-MODUS (Radio-Buttons)
;; TEIL 11b: DIALOG-AUSWAHL FUER TYP (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-
;; Ersetzt die Konsolen-Liste am Anfang von c:VarioFoerderer durch einen
;; Radio-Button-Dialog (dcl/variofoerderer.dcl, vfc_typ) - 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
;; Kommentar). Die Funktion gibt 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
@@ -1225,47 +1230,11 @@
)
)
;; "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)
((= (get_tile \"modus_4\") \"1\") 4)
((= (get_tile \"modus_5\") \"1\") 5)
(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
;; ============================================================
;; Erzwungener QC-Modus (Linienzug-Modus 4/5, vfc-dialog-linienzug-modus-
;; waehlen/Konsolen-Fallback unten): "4"/"5" waehrend des naechsten
;; Erzwungener QC-Modus (Linienzug-Modus 4/5, siehe *vf-vorauswahl-linienzug-
;; modus* oben/c:QcLinieMitGf*): "4"/"5" waehrend des naechsten
;; vf-linienzug-modus-Laufs, sonst nil. Von vf-linienzug-modus (vf_linienzug.
;; lsp, spaeter geladen) gelesen/geleert - globale Vorab-Deklaration hier,
;; damit sie unabhaengig von der Lade-Reihenfolge existiert.
@@ -1277,7 +1246,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 dlg-typ dlg-modus zurueck-zu-typ)
staustrecke-basis vf-insert dlg-typ zurueck-zu-typ)
(princ "\n=========================================")
(princ (ssg-text "vfc-banner-titel"))
@@ -1336,24 +1305,13 @@
;; 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.
;; Jeder Aufrufer (Menue-Wrapper c:LinienzugVarioFoerderer*/c:QcLinieMitGf*)
;; setzt *vf-vorauswahl-linienzug-modus* VOR dem Aufruf - der frueher
;; hier gefuehrte Modus-Dialog/Konsolen-Fallback ist dadurch entfallen.
(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"))
(princ (ssg-text "vfc-linienzug-modus-4"))
(princ (ssg-text "vfc-linienzug-modus-5"))
(setq wahl (getint (ssg-text "prompt-wahl-1-5")))
)
)
(setq wahl *vf-vorauswahl-linienzug-modus*
*vf-vorauswahl-linienzug-modus* nil)
(if (not zurueck-zu-typ)
(progn
;; Konsolen-Nummer -> interne Funktion:
@@ -1604,7 +1562,6 @@
;; Menue-Wrapper: jeder feste Endpunkt der VarioFoerderer-Erzeugung ist
;; direkt aufrufbar (Typ + Eingabemodus vorbelegt, keine Rueckfrage).
;; Nur der Linienzug fragt intern noch Modus 1/2/3 (komplexer Fall).
;; Eingabemodus-Vorauswahl: "2" = Werte manuell (DCL-Dialog),
;; "1" = aus 3D-Linie (Linie picken).
@@ -1632,9 +1589,34 @@
(c:VarioFoerderer)
)
;; --- Linienzug (bleibt interaktiv: fragt Modus 1/2/3) ---
(defun c:LinienzugVarioFoerderer ()
(setq *vf-vorauswahl-typ* "linienzug")
;; --- Linienzug/Streckengruppe (Modus 1/2/3, Typ+Modus vorbelegt) ---
(defun c:LinienzugVarioFoerdererManuell ()
(setq *vf-vorauswahl-typ* "linienzug"
*vf-vorauswahl-linienzug-modus* 1)
(c:VarioFoerderer)
)
(defun c:LinienzugVarioFoerdererZielhoehe ()
(setq *vf-vorauswahl-typ* "linienzug"
*vf-vorauswahl-linienzug-modus* 2)
(c:VarioFoerderer)
)
(defun c:LinienzugVarioFoerdererStueckweise ()
(setq *vf-vorauswahl-typ* "linienzug"
*vf-vorauswahl-linienzug-modus* 3)
(c:VarioFoerderer)
)
;; --- QC-Linie (Linienzug-Modus 4/5, Typ+Modus vorbelegt) ---
;; Menue: ILS -> Gefaellestrecke (gehoeren inhaltlich dorthin, technisch
;; weiterhin ueber den Linienzug-Ablauf/*vfl-forciere-qc-modus* gebaut).
(defun c:QcLinieMitGf ()
(setq *vf-vorauswahl-typ* "linienzug"
*vf-vorauswahl-linienzug-modus* 4)
(c:VarioFoerderer)
)
(defun c:QcLinieMitGfUForm ()
(setq *vf-vorauswahl-typ* "linienzug"
*vf-vorauswahl-linienzug-modus* 5)
(c:VarioFoerderer)
)
+34 -11
View File
@@ -1527,11 +1527,11 @@
(princ))
;; "Naechstes Element waehlen" - Hauptmenue des Linienzug-Aufbaus (Modus 1).
;; Kettenanfang (frame=nil): alle 6 Optionen waehlbar, Vario-Kurve inklusive
;; (kann nur als allererstes Kettenglied gewaehlt werden - siehe Kommentar an
;; der Aufrufstelle). Sonst (Frame vorhanden): Vario-Kurve per mode_tile
;; deaktiviert, die uebrigen 5 Optionen behalten dieselbe Reihenfolge/
;; Bedeutung wie im Konsolen-Menue, nur ohne die Luecke. Pusht die
;; Kettenanfang (frame=nil): alle 5 Radio-Optionen waehlbar, Vario-Kurve
;; inklusive (kann nur als allererstes Kettenglied gewaehlt werden - siehe
;; Kommentar an der Aufrufstelle). Sonst (Frame vorhanden): Vario-Kurve per
;; mode_tile deaktiviert, die uebrigen 4 Optionen behalten dieselbe
;; Reihenfolge/Bedeutung wie im Konsolen-Menue, nur ohne die Luecke. Pusht die
;; POSITIONELLE Antwort ("1".."6" bzw. "1".."5"), identisch zur bisherigen
;; Konsolen-Nummerierung, damit Journal/Replay unveraendert bleiben - die
;; Radio-Buttons selbst tragen daher STABILE, kontextunabhaengige Keys
@@ -1542,9 +1542,20 @@
;; - eindeutig als VF erkannt (Startpunkt liegt auf einer bestehenden
;; VF-Kette) macht "GF-Bogen"/"Neue Linie: GF" als DIREKTE Fortsetzung keinen
;; Sinn (kein GF-Baustein wird an dieser Stelle einfach an ein VF-Teil
;; angeflanscht) - diese beiden Optionen werden dann ausgegraut. "Neue Linie
;; BIS Kettenende" bleibt immer waehlbar (hat ihre eigene GF/VF-Erkennung).
(defun vflw-gruppe-naechstes-element-impl (kettenanfang familie / dat ergebnis slot gwahl)
;; angeflanscht) - diese beiden Optionen werden dann ausgegraut.
;; as-eben-eingefuegt: T, wenn der Anwender die AS-Frage ("AS-Element
;; setzen?") explizit mit Ja beantwortet hat (as-vorhanden in
;; vf-linienzug-modus) - das AS-Element braucht danach zuerst ein GERADES
;; Segment (Linie-GF/Linie-VF/Horizontal-VF), eine horizontale Kurve direkt
;; im Anschluss (GF-Bogen/Vario-Kurve) ergibt keinen Sinn und wird ebenfalls
;; ausgegraut. Greift nur, wenn familie nicht schon "VF" ist (dort ist
;; wahl_gfbogen bereits deaktiviert); nil, wenn der Startpunkt automatisch
;; auf einer bestehenden Kette erkannt wurde (as-vorhanden dann ohnehin nil).
;; "Neue Linie BIS Kettenende" ist kein Radio mehr, sondern der eigene Button
;; "abschliessen" (done_dialog 3) - er setzt slot direkt auf 6 und ignoriert
;; die aktuelle Radio-Auswahl (hat ihre eigene GF/VF-Erkennung, bleibt daher
;; immer waehlbar, auch wenn GF-Bogen/Neue Linie: GF ausgegraut sind).
(defun vflw-gruppe-naechstes-element-impl (kettenanfang familie as-eben-eingefuegt / dat ergebnis slot gwahl)
(setq dat (load_dialog (vflw-dcl-pfad)))
(if (not (new_dialog "vflw_naechstes_element" dat))
(if (and dat (>= dat 0)) (unload_dialog dat))
@@ -1557,20 +1568,31 @@
(mode_tile "wahl_gfbogen" 1)
(mode_tile "wahl_liniegf" 1)
(set_tile "wahl_variokurve" "1")))
;; Unmittelbar nach einem explizit eingefuegten AS-Element ergibt eine
;; horizontale Kurve (GF-Bogen/Vario-Kurve) als DIREKTE Fortsetzung
;; keinen Sinn - das AS-Element braucht zuerst ein gerades Segment
;; (Linie-GF/Linie-VF/Horizontal-VF). Nur relevant am Kettenanfang und
;; nur, wenn nicht schon durch familie="VF" abgedeckt (dort ist
;; wahl_gfbogen bereits deaktiviert).
(if (and kettenanfang as-eben-eingefuegt (not (equal familie "VF")))
(progn
(mode_tile "wahl_gfbogen" 1)
(mode_tile "wahl_variokurve" 1)
(set_tile "wahl_liniegf" "1")))
(action_tile "accept"
"(setq slot (cond ((= (get_tile \"wahl_gfbogen\") \"1\") 1)
((= (get_tile \"wahl_variokurve\") \"1\") 2)
((= (get_tile \"wahl_linievf\") \"1\") 4)
((= (get_tile \"wahl_horizontalvf\") \"1\") 5)
((= (get_tile \"wahl_linieende\") \"1\") 6)
(t 3)))
(done_dialog 1)")
(action_tile "abschliessen" "(setq slot 6) (done_dialog 3)")
(action_tile "cancel" "(done_dialog 0)")
(action_tile "back" "(done_dialog 2)")
(setq ergebnis (start_dialog))
(unload_dialog dat)
(cond
((= ergebnis 1)
((or (= ergebnis 1) (= ergebnis 3))
(setq gwahl (if (or kettenanfang (<= slot 2)) slot (1- slot)))
(vflw-pending-push-all (list (itoa gwahl))))
((= ergebnis 2) (setq *vfl-wizard-abbruch-grund* "zurueck"))
@@ -6605,7 +6627,8 @@
(progn
(if (vfl-wizard-aktiv)
(vl-catch-all-apply 'vflw-gruppe-naechstes-element-impl
(list (null frame) (if (null frame) startpunkt-familie nil))))
(list (null frame) (if (null frame) startpunkt-familie nil)
(if (null frame) as-vorhanden nil))))
(if frame
(progn
(princ (ssg-text "vfl-menu-gf-bogen-1"))
+54 -151
View File
@@ -863,8 +863,8 @@
;; Eintrag in "labels" (Tile-Keys "<prefix>_0".."<prefix>_(n-1)"). labels
;; sind bereits fertige, uebersetzte Strings (ssg-text/ssg-textf) - werden
;; hier nur noch fuer die DCL-Syntax escaped (ssg-dcl-label-escape).
;; Gemeinsam genutzt von vfs-dialog-eingabe-basis-radio UND
;; vfs-dialog-winkel-verteilung-radio.
;; Genutzt von vfs-dialog-eingabe-basis-radio fuer die drei verbleibenden
;; Radio-Gruppen (Seite, Motorseite, Geruestoption).
(defun vfs-dcl-radio-gruppe-zeilen (prefix box-label labels / zeilen i)
(setq zeilen (list
": boxed_radio_column {"
@@ -1048,9 +1048,13 @@
)
)
;; Basis-Eingabe (Dialog 1, Radio-Button-Variante) - siehe Kopfkommentar
;; des DCL-DIALOG-Abschnitts. Gleiche prefill-Struktur/Rueckgabe wie
;; -popup; 'FEHLER bei technischem Fehler (Dispatcher faellt dann zurueck).
;; Basis-Eingabe (Dialog 1, dynamische Variante) - siehe Kopfkommentar
;; des DCL-DIALOG-Abschnitts. Nur "Seite", "Motorseite" und "Geruestoption"
;; bleiben als Radio-Button-Gruppen (alle Optionen sofort sichtbar); alle
;; anderen Felder (Foerderrichtung, Fahrtrichtung, Darstellung 2D/3D) sind
;; wieder Comboboxen (popup_list), wie der uebrige Dialog. Gleiche
;; prefill-Struktur/Rueckgabe wie -popup; 'FEHLER bei technischem Fehler
;; (Dispatcher faellt dann zurueck).
(defun vfs-dialog-eingabe-basis-radio (prefill / zeilen dcl-pfad dat ergebnis
dlg-deltal dlg-deltah dlg-hoehe
dlg-richtung-idx dlg-fahrt-idx dlg-seite-idx
@@ -1089,31 +1093,26 @@
" label = \"Geometrie\";"
" : row {"
" : edit_box { key = \"deltal\"; label = \"Horizontale Distanz deltaL (mm):\"; edit_width = 10; }"
" : popup_list { key = \"richtung\"; label = \"Foerderrichtung:\"; width = 16; }"
" }"
" : row {"
" : edit_box { key = \"einfuegehoehe\"; label = \"Einfuegehoehe (mm):\"; edit_width = 10; }"
" : edit_box { key = \"deltah\"; label = \"Hoehenunterschied deltaH (mm):\"; edit_width = 10; }"
" }"))
(setq zeilen (append zeilen
(vfs-dcl-radio-gruppe-zeilen "richtung" "Foerderrichtung:"
(list (ssg-text "vfs-dlg-richtung-auf") (ssg-text "vfs-dlg-richtung-ab")))))
(setq zeilen (append zeilen (list
" : edit_box { key = \"einfuegehoehe\"; label = \"Einfuegehoehe (mm):\"; edit_width = 10; }"
" }"
" }"
" : boxed_column {"
" label = \"Ausrichtung\";")))
(setq zeilen (append zeilen
(vfs-dcl-radio-gruppe-zeilen "fahrtrichtung" "Fahrtrichtung:"
(list (ssg-textf "gf-dlg-richtung-0" (list grad-zeichen))
(ssg-textf "gf-dlg-richtung-90" (list grad-zeichen))
(ssg-textf "gf-dlg-richtung-180" (list grad-zeichen))
(ssg-textf "gf-dlg-richtung-270" (list grad-zeichen))))))
" label = \"Ausrichtung\";"
" : popup_list { key = \"fahrtrichtung\"; label = \"Fahrtrichtung:\"; width = 30; }"
" : row {"))
(setq zeilen (append zeilen
(vfs-dcl-radio-gruppe-zeilen "seite" "Seite:"
(list (ssg-text "gf-dlg-rechts") (ssg-text "gf-dlg-links")))))
(setq zeilen (append zeilen
(vfs-dcl-radio-gruppe-zeilen "motorseite" "Motorseite:"
(list (ssg-text "gf-dlg-rechts") (ssg-text "gf-dlg-links")))))
(setq zeilen (append zeilen
(vfs-dcl-radio-gruppe-zeilen "dimension" "Darstellung (2D/3D):" (list "3D" "2D"))))
(setq zeilen (append zeilen (list
" }"
" : popup_list { key = \"dimension\"; label = \"Darstellung (2D/3D):\"; width = 20; }"
" }"
" : boxed_column {"
" label = \"Geruest\";"
@@ -1141,11 +1140,30 @@
(set_tile "deltal" (if prefill (rtos (cdr (assoc "deltaL" prefill)) 2 0) "15000"))
(set_tile "deltah" (if prefill (rtos (cdr (assoc "deltaH" prefill)) 2 0) "3000"))
(set_tile "einfuegehoehe" (if prefill (rtos (cdr (assoc "einfuegehoehe" prefill)) 2 1) "0"))
(set_tile (strcat "richtung_" (itoa sel-richtung)) "1")
(set_tile (strcat "fahrtrichtung_" (itoa sel-fahrt)) "1")
(start_list "richtung")
(add_list (ssg-text "vfs-dlg-richtung-auf"))
(add_list (ssg-text "vfs-dlg-richtung-ab"))
(end_list)
(set_tile "richtung" (itoa sel-richtung))
(start_list "fahrtrichtung")
(add_list (ssg-textf "gf-dlg-richtung-0" (list grad-zeichen)))
(add_list (ssg-textf "gf-dlg-richtung-90" (list grad-zeichen)))
(add_list (ssg-textf "gf-dlg-richtung-180" (list grad-zeichen)))
(add_list (ssg-textf "gf-dlg-richtung-270" (list grad-zeichen)))
(end_list)
(set_tile "fahrtrichtung" (itoa sel-fahrt))
(set_tile (strcat "seite_" (itoa sel-seite)) "1")
(set_tile (strcat "motorseite_" (itoa sel-motorseite)) "1")
(set_tile (strcat "dimension_" (itoa sel-dim)) "1")
(start_list "dimension")
(add_list "3D")
(add_list "2D")
(end_list)
(set_tile "dimension" (itoa sel-dim))
(set_tile "geruest_einzelmodul"
(if (or (null prefill) (equal (cdr (assoc "geruest-einzelmodul" prefill)) "1")) "1" "0"))
(set_tile (strcat "geruest_typ_" (itoa sel-geruest-typ)) "1")
@@ -1155,11 +1173,11 @@
"(setq dlg-deltal (get_tile \"deltal\"))"
"(setq dlg-deltah (get_tile \"deltah\"))"
"(setq dlg-hoehe (get_tile \"einfuegehoehe\"))"
"(setq dlg-richtung-idx " (vfs-dcl-radio-idx-cond "richtung" 2) ")"
"(setq dlg-fahrt-idx " (vfs-dcl-radio-idx-cond "fahrtrichtung" 4) ")"
"(setq dlg-richtung-idx (atoi (get_tile \"richtung\")))"
"(setq dlg-fahrt-idx (atoi (get_tile \"fahrtrichtung\")))"
"(setq dlg-seite-idx " (vfs-dcl-radio-idx-cond "seite" 2) ")"
"(setq dlg-motorseite-idx " (vfs-dcl-radio-idx-cond "motorseite" 2) ")"
"(setq dlg-dim-idx " (vfs-dcl-radio-idx-cond "dimension" 2) ")"
"(setq dlg-dim-idx (atoi (get_tile \"dimension\")))"
"(setq dlg-geruest-einzelmodul (get_tile \"geruest_einzelmodul\"))"
"(setq dlg-geruest-typ-idx " (vfs-dcl-radio-idx-cond "geruest_typ" n-geruest-typ) ")"
"(done_dialog 1)"
@@ -1193,8 +1211,10 @@
)
)
;; Dispatcher: bevorzugt die Radio-Button-Variante (siehe Kopfkommentar des
;; DCL-DIALOG-Abschnitts), Rueckfall auf -popup nur bei technischem Fehler.
;; Dispatcher: bevorzugt die dynamisch generierte Variante (Seite/
;; Motorseite/Geruestoption als Radio, Rest als Combobox - siehe
;; Kopfkommentar des DCL-DIALOG-Abschnitts), Rueckfall auf die reine
;; Popup-Variante nur bei technischem Fehler.
(defun vfs-dialog-eingabe-basis (prefill / ergebnis)
(setq ergebnis (vfs-dialog-eingabe-basis-radio prefill))
(if (eq ergebnis 'FEHLER) (vfs-dialog-eingabe-basis-popup prefill) ergebnis)
@@ -1289,129 +1309,12 @@
)
)
;; Winkel/Verteilung-Eingabe (Dialog 2, Radio-Button-Variante) - siehe
;; Kopfkommentar des DCL-DIALOG-Abschnitts. Gleiche prefill-Struktur/
;; Rueckgabe wie -popup; 'FEHLER bei technischem Fehler.
(defun vfs-dialog-winkel-verteilung-radio (gueltige-winkel ergebnis-liste staustrecke-basis prefill /
zeilen dcl-pfad dat ergebnis w eintrag labels
sel-winkel sel-verteilung idx toggle-zeile i
dlg-winkel-idx dlg-verteilung-idx dlg-lgf1
best-winkel L_GF L_VF verteilung-modus L_GF1 L_GF2 lgf-paar)
;; Winkel-Labels vorab aufloesen - gleiche Texte wie im Popup.
(setq labels nil)
(foreach w gueltige-winkel
(setq eintrag (assoc w ergebnis-liste))
(setq labels (append labels (list
(if (= w 0)
(ssg-textf "vfs-dlg-winkel-horizontal"
(list (rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1)))
(ssg-textf "vfs-dlg-winkel-option"
(list (itoa w) grad-zeichen (rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1)))
)))
)
)
;; Vorbelegung: Winkel aus prefill (falls noch gueltig), sonst erster
;; (kleinster) gueltiger Winkel - analog der automatischen Konsolen-Wahl.
(setq sel-winkel 0 idx 0)
(if prefill
(foreach w gueltige-winkel
(if (equal w (cdr (assoc "winkel" prefill))) (setq sel-winkel idx))
(setq idx (1+ idx))
)
)
(setq sel-verteilung
(if prefill (atoi (cdr (assoc "verteilung-idx" prefill))) 0))
(setq zeilen (list
"vfs_winkel_dyn : dialog {"
" label = \"VarioFoerderer (Standard) - Winkel / Verteilung\";"
" : column {"))
(setq zeilen (append zeilen (vfs-dcl-radio-gruppe-zeilen "winkel" "Winkel:" labels)))
(setq zeilen (append zeilen (list
" : boxed_column {"
" label = \"Verteilung Gefaellestrecken (vorne/hinten)\";")))
(setq zeilen (append zeilen
(vfs-dcl-radio-gruppe-zeilen "verteilung" "Modus:"
(list (ssg-text "vfs-dlg-verteilung-1") (ssg-text "vfs-dlg-verteilung-2")
(ssg-text "vfs-dlg-verteilung-3") (ssg-text "vfs-dlg-verteilung-4")))))
(setq zeilen (append zeilen (list
" : edit_box { key = \"lgf1_manuell\"; label = \"L_GF1 vorne (mm):\"; edit_width = 10; }"
" }"
" }"
" ok_cancel;"
"}")))
(setq dcl-pfad (ssg-dcl-temp-schreiben "vfswinkel" zeilen))
(if (null dcl-pfad)
'FEHLER
(progn
(setq dat (load_dialog dcl-pfad))
(if (not (new_dialog "vfs_winkel_dyn" dat))
(progn
(if (and dat (>= dat 0)) (unload_dialog dat))
(vl-file-delete dcl-pfad)
'FEHLER
)
(progn
(set_tile (strcat "winkel_" (itoa sel-winkel)) "1")
(set_tile (strcat "verteilung_" (itoa sel-verteilung)) "1")
(set_tile "lgf1_manuell"
(if (and prefill (cdr (assoc "lgf1" prefill)))
(rtos (cdr (assoc "lgf1" prefill)) 2 1) "0"))
(mode_tile "lgf1_manuell" (if (= sel-verteilung 3) 0 1))
;; Jedes der 4 Verteilung-Radio-Tiles braucht sein EIGENES
;; action_tile (haengt bei Radio-Buttons nicht am Gruppen-Key wie
;; bisher am popup_list-Key "verteilung").
(setq toggle-zeile
"(mode_tile \"lgf1_manuell\" (if (= (get_tile \"verteilung_3\") \"1\") 0 1))")
(setq i 0)
(while (< i 4)
(action_tile (strcat "verteilung_" (itoa i)) toggle-zeile)
(setq i (1+ i))
)
(action_tile "accept"
(strcat
"(setq dlg-winkel-idx " (vfs-dcl-radio-idx-cond "winkel" (length gueltige-winkel)) ")"
"(setq dlg-verteilung-idx " (vfs-dcl-radio-idx-cond "verteilung" 4) ")"
"(setq dlg-lgf1 (get_tile \"lgf1_manuell\"))"
"(done_dialog 1)"
)
)
(action_tile "cancel" "(done_dialog 0)")
(setq ergebnis (start_dialog))
(unload_dialog dat)
(vl-file-delete dcl-pfad)
(if (= ergebnis 1)
(progn
(setq best-winkel (nth dlg-winkel-idx gueltige-winkel))
(setq eintrag (assoc best-winkel ergebnis-liste))
(setq L_GF (nth 1 eintrag) L_VF (nth 2 eintrag))
(setq verteilung-modus (itoa dlg-verteilung-idx))
(setq lgf-paar (vfs-verteilung-berechnen verteilung-modus L_GF staustrecke-basis dlg-lgf1))
(setq L_GF1 (car lgf-paar) L_GF2 (cadr lgf-paar))
(list best-winkel L_GF L_VF L_GF1 L_GF2 verteilung-modus)
)
nil
)
)
)
)
)
)
;; Dispatcher: bevorzugt die Radio-Button-Variante (siehe Kopfkommentar des
;; DCL-DIALOG-Abschnitts), Rueckfall auf -popup nur bei technischem Fehler.
(defun vfs-dialog-winkel-verteilung (gueltige-winkel ergebnis-liste staustrecke-basis prefill / ergebnis)
(setq ergebnis (vfs-dialog-winkel-verteilung-radio gueltige-winkel ergebnis-liste staustrecke-basis prefill))
(if (eq ergebnis 'FEHLER)
(vfs-dialog-winkel-verteilung-popup gueltige-winkel ergebnis-liste staustrecke-basis prefill)
ergebnis
)
;; Winkel/Verteilung-Eingabe: Dialog nutzt durchgaengig Comboboxen
;; (variofoerderer_winkel in dcl/variofoerderer.dcl) - keine Radio-Variante
;; mehr noetig, da weder "winkel" noch "verteilung" als Radio bleiben
;; (siehe Kopfkommentar des DCL-DIALOG-Abschnitts).
(defun vfs-dialog-winkel-verteilung (gueltige-winkel ergebnis-liste staustrecke-basis prefill)
(vfs-dialog-winkel-verteilung-popup gueltige-winkel ergebnis-liste staustrecke-basis prefill)
)
;; ============================================================
+36 -72
View File
@@ -3,8 +3,7 @@
// 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.
// Labels FEST auf Deutsch.
// vfc_startpunkt: Startpunkt der Anlage picken (Punktwahl-Button +
// X/Y/Z-Anzeige) - ersetzt den reinen Konsolen-getpoint fuer
// Standard UND Etage (vfc-dialog-startpunkt-waehlen, vf_core.lsp).
@@ -12,14 +11,21 @@
// der Werteingabe (deltaL, deltaH, Foerderrichtung, Einfuegehoehe,
// Fahrtrichtung, Seite, Motorseite, Dimension, Geruest, Winkel,
// GF-Verteilung) - gemeinsam genutzt von Standard UND Etage. Die
// bevorzugten Radio-Button-Varianten (vfs_basis_dyn/vfs_winkel_dyn)
// werden zur Laufzeit generiert (vfs-dialog-eingabe-basis-radio/
// vfs-dialog-winkel-verteilung-radio in vf_standard.lsp) und stehen
// NICHT in dieser Datei - diese beiden Dialoge hier sind nur noch der
// Fallback, falls das Schreiben/Laden der Temp-DCL-Datei mal scheitert.
// Die 3D-Linie-Eingabe (Modus "3D-Linie") und die Linienzug-Kette selbst
// (nach der Modus-Wahl) bleiben interaktiv (Kommandozeile bzw. eigener
// Wizard in vf_linienzug_wizard.dcl).
// bevorzugte Variante (vfs_basis_dyn) wird zur Laufzeit generiert
// (vfs-dialog-eingabe-basis-radio in vf_standard.lsp) und steht NICHT
// in dieser Datei - NUR "Seite", "Motorseite" und "Geruestoption"
// bleiben dort Radio-Button-Gruppen (sofort sichtbare Optionen), alle
// anderen Felder sind Comboboxen wie hier. variofoerderer_basis hier
// ist nur noch der Fallback, falls das Schreiben/Laden der Temp-DCL
// mal scheitert. variofoerderer_winkel (Winkel/Verteilung) hat KEINE
// generierte Variante mehr und wird direkt verwendet (komplett
// Combobox, siehe vfs-dialog-winkel-verteilung in vf_standard.lsp).
// Die 3D-Linie-Eingabe (Modus "3D-Linie"), der Etage-Typ und die
// Linienzug-Kette selbst bleiben interaktiv (Kommandozeile bzw. eigener
// Wizard in vf_linienzug_wizard.dcl). Der Linienzug-Modus (1/2/3/4/5) wird
// seit den Menue-Wrappern c:LinienzugVarioFoerderer*/c:QcLinieMitGf* nicht
// mehr per Dialog erfragt, sondern ist je Menuepunkt fest vorbelegt - der
// frueher hier gefuehrte Dialog vfc_linienzug_modus ist dadurch entfallen.
// ============================================================
// Anlagen-Typ waehlen (Standard/Etage/Linienzug). Radio-Buttons statt
@@ -48,7 +54,7 @@ vfc_typ : dialog {
}
: radio_button {
key = "typ_linienzug";
label = "3D-Linienzug (gemischte GF/VF-Kette)";
label = "Streckengruppe (gemischte GF/VF-Kette)";
}
}
@@ -66,50 +72,6 @@ vfc_typ : dialog {
}
}
// 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)";
}
: radio_button {
key = "modus_4";
label = "QC Linie mit GF (automatische Auf-Ab-Berechnung)";
}
: radio_button {
key = "modus_5";
label = "QC Linie mit GF und U-Form";
}
}
// "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; }
}
}
// Startpunkt der Anlage waehlen - Punktwahl-Button + Anzeige, analog
// vflw_punkt_zahl (dcl/vf_linienzug_wizard.dcl): der Button schliesst den
// Dialog (done_dialog 2), DANACH laeuft getpoint auf der Kommandozeile
@@ -163,24 +125,24 @@ variofoerderer_basis : dialog {
label = "Horizontale Distanz deltaL (mm):";
edit_width = 10;
}
: edit_box {
key = "deltah";
label = "Hoehenunterschied deltaH (mm):";
edit_width = 10;
}
}
: row {
: popup_list {
key = "richtung";
label = "Foerderrichtung:";
width = 16;
}
}
: row {
: edit_box {
key = "einfuegehoehe";
label = "Einfuegehoehe (mm):";
edit_width = 10;
}
: edit_box {
key = "deltah";
label = "Hoehenunterschied deltaH (mm):";
edit_width = 10;
}
}
}
@@ -192,15 +154,17 @@ variofoerderer_basis : dialog {
label = "Fahrtrichtung:";
width = 30;
}
: popup_list {
key = "seite";
label = "Seite:";
width = 16;
}
: popup_list {
key = "motorseite";
label = "Motorseite:";
width = 16;
: row {
: popup_list {
key = "seite";
label = "Seite:";
width = 16;
}
: popup_list {
key = "motorseite";
label = "Motorseite:";
width = 16;
}
}
: popup_list {
key = "dimension";
+18 -10
View File
@@ -523,12 +523,18 @@ vflw_horizontal : dialog {
}
// "Naechstes Element waehlen" - Hauptmenue des Linienzug-Aufbaus (Modus 1).
// IMMER alle 6 Optionen im Dialog vorhanden (stabile Keys) - "Vario-Kurve"
// IMMER alle 5 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).
// braucht es keine Zifferneingabe). GF-Optionen stehen zuerst, VF-Optionen
// danach (nur Reihenfolge, kein echtes 2-Spalten-Layout: radio_button-Tiles
// muessen DIREKTE Kinder EINES Clusters sein, sonst ist die gegenseitige
// Ausschliesslichkeit kaputt - siehe Warnung bei vflw_winkel_hoehen unten,
// per Test bestaetigt). "Neue Linie BIS Kettenende" ist kein Radio mehr,
// sondern der eigene Button "OK und Abschliessen" unten (ruft direkt Slot 6
// auf, ohne vorher eine Radio-Auswahl zu verlangen).
vflw_naechstes_element : dialog {
label = "VarioFoerderer Assistent";
@@ -542,27 +548,29 @@ vflw_naechstes_element : dialog {
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_variokurve"; label = "Vario-Kurve (horizontale Kurve, 30/60/90 Grad)"; }
: 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
// ok_cancel durch eine eigene 4-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
// (unveraendert, is_default), 2=Zurueck (verwirft das zuletzt gebaute
// Kettenglied und fragt es neu ab, siehe vflw-gruppe-naechstes-element-impl/
// vfl-modus-abbruch-sichern).
// vfl-modus-abbruch-sichern), NEU 3=Abschliessen (entspricht der fruehen
// Radio-Option "Neue Linie BIS Kettenende" - ignoriert die Radio-Auswahl).
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
: 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; }
: 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; }
: button { key = "abschliessen"; label = "OK und Abschliessen"; fixed_width = true; width = 18; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
+41 -1
View File
@@ -136,6 +136,12 @@ Durch einen Doppelklick auf den Kreisel und der Eingabe des neuen Abstands im Be
## 2. Gefällestrecke
- einfach
- aus 3D Linie
- aus Linienzug
- QC mit 30 Grad ES/AS
- QC mit 90 Grad ES/AS
### 2.1 Zusammensetzung, Abhängigkeiten, Randbedingungen
#### Zusammensetzung einer Gefällestrecke
@@ -187,6 +193,29 @@ Durch einen Doppelklick auf die Gefällestrecke und Eingabe der neuen Länge im
## 3. Varioförderer
Varioförderer können auf verschiedene Arten gebaut werden:
1. Standard
2. Etage
3. Variabel
- Manuelle Eingabe
- 3D-OBjekte mit Ziel-höhe
- 3D Objekte Stückweise (wird gerade noch implementiert bzw. ist expirementell)
Der **"Standard Förderer"** ist die Verbindung von zwei Kreiseln mit einem definierten Abstand und (wenn nötig) einer Höhendifferenz. (z.B. für eine Umschleusung in einem Gefällepuffer)
Ein **Etagenförderer** hat 30° Aussschleuselemente und wird verwendet, um zwei Kreisel über eine Etage zu verbinden. Diese beiden Kreisel müssen dabei übereinander liegen.
Standard und Etage können aufgerufen werden mit _"Werte manuell"_ oder _"3D - Linie"_.
- Bei "Werte Manuell" definiert man den Verlauf durch Höhe und Länge über die Eingabe in einer Oberfläche.
- bei "3D Linie" ist die Auswahl einer Gerade im Raum möglich. Damit wird Richtung, Länge und Höhendifferenz angegeben. Dadurch werden diese Werte in die Oberfläche übernommen. Der beliebige Winkel in der Ebene kann durch die Linie festgelegt werden und ist nicht auf die Raster 0,90,270 Grad festgelegt
Die **Variablen Förderer** könne auf drei verschiedene Arten definiert werden:
- die manuelle Eingabe frägt nach der Definition des AS Elementes ab, ob man abwechselnd eine GF oder einen VF definieren möchte. Mit einem Knopf unten kann man den Assistenten abschliessen und das ES erzeugen
- Eine 3D Linie muss aus Geraden und Bögen (Winkel 30° mit dem Radius 500mm) bestehen. Wenn eine 3D Linie für Verlauf mit der korrekten Zielhöhe existiert, kann man iterativ die Einzelelemente (oder auch mehrere) dieser Einzellinien Linie anwählen, um den nächsten Förderer oder den nöchsten Gefälle-Anteil zu definieren.
### 3.1 Zusammensetzung, Abhängigkeiten, Randbedingungen
#### Zusammensetzung eines Varioförderer mit allen möglichen Komponenten
@@ -229,7 +258,7 @@ Unter *ILS -> Foerderer* stehen folgende Einfügemodi zur Verfügung:
- **Standard -> Werte manuell**: alle Werte (Längen, Winkel, Höhen) werden über einen Dialog abgefragt.
- **Standard -> aus 3D-Linie**: wie Standard, aber entlang einer vorgezeichneten 3D-Linie.
- **Etage -> Werte manuell** / **Etage -> aus 3D-Linie**: wie Standard, jedoch mit Etagen-Schrägsektion/-Bögen statt gerader AS-/ES-Elemente.
- **3D-Linienzug**: frei aus der Zeichnung gebaute Kette, Schritt für Schritt über Dialoge/Konsole abgefragt (AS-Element, Bögen, Vario-Kurven, horizontale/geneigte Abschnitte, ES-Element).
- **Streckengruppe**: frei aus der Zeichnung gebaute Kette, Schritt für Schritt über Dialoge/Konsole abgefragt (AS-Element, Bögen, Vario-Kurven, horizontale/geneigte Abschnitte, ES-Element).
![Variofoerderer dialog1](images/vf-gui1.png)
*Abbildung: Varioförderer Dialog zur Erzeugung*
@@ -239,15 +268,26 @@ Unter *ILS -> Foerderer* stehen folgende Einfügemodi zur Verfügung:
#### Wie baue ich einen VF in einem Puffer mit Gefällestrecken als Umschleusung?
Ich baue eine Gefällestrecke und kann dann mit einem Klick einen Varioförderer daneben bauen.
![Variofoerderer dialog2](images/gf-vf-kombination.png)
*Abbildung: Erzeugung eines Varioförderers passend zur Gefällestrecke*
#### Wie baue ich einen VF zur Anfahrung einer bestimmten Höhe (Arbeitsplatz)?
Das macht man aus einer Streckengruppe aus aus mindestens einer GF und einer VF und den entsprechend nötigen Bögen. Eventuell noch die Verwendung eines horizontalen Anteils beim Varioförderer, um die Zielhöhe zu erreichen.
#### Wie baue ich einen VF als Übergang zwischen zwei verschiedenen Kreiseln (unterschiedliche Höhe und Position x/y/z)
Standardfall. Höhenunterschiede und Einfügehöhe einfach in Interface angeben.
#### Wie baue ich einen Förderer zu Ebenenüberquerung zwischen zwei Pufferblöcken, welche übereinander positioniert sind?
Dafür ist der sogenannte Etagenförderer vorgesehen.
#### Wie baue ich eine Strecke mit mehreren VF und Gefällestrecken hintereinander zur Überbrückung von großen Entfernungen?
Dies kann nur Stückweise erfolgen, indem man ausprobiert, welche GF VF Kombination welche Länge erreicht und dabei eine gewünschte Höhe nicht überschreitet. Danach kann man die einzelnen Einheiten zu einem Mergen.
## 4. Scanner und Separator
### 4.1 Zusammensetzung, Abhängigkeiten, Randbedingungen
+4742 -4120
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 21 KiB

+5 -1
View File
@@ -48,7 +48,11 @@ Gross-/Kleinschreibung spielt an der Kommandozeile keine Rolle.
| `StandardVarioFoerderer3D` | Standardtyp aus einer gewaehlten 3D-Linie |
| `EtageVarioFoerderer` | Etagentyp (AS/ES 30 Grad), Werte per DCL-Dialog |
| `EtageVarioFoerderer3D` | Etagentyp aus einer gewaehlten 3D-Linie |
| `LinienzugVarioFoerderer` | Linienzug, fragt Modus 1/2/3 ab |
| `LinienzugVarioFoerdererManuell` | Streckengruppe, Modus 1 (manuelle Eingabe, Punkte klicken) |
| `LinienzugVarioFoerdererZielhoehe` | Streckengruppe, Modus 2 (3D-Objekte + Ziel-Hoehe, Randwert-Solver) |
| `LinienzugVarioFoerdererStueckweise` | Streckengruppe, Modus 3 (3D-Objekte stueckweise, in Arbeit) |
| `QcLinieMitGf` | Streckengruppe Modus 4 (QC-Linie mit GF, automatische Auf-Ab-Berechnung); Menue unter Gefaellestrecke |
| `QcLinieMitGfUForm` | Streckengruppe Modus 5 (QC-Linie mit GF und U-Form); Menue unter Gefaellestrecke |
| `VARIOFOERDERER_EDIT` | VF_n-Block editieren (dispatcht per XDATA-Marker auf Standard/Etage/Linienzug); auch per Doppelklick |
| `VARIOFOERDERER_NACHRUESTEN` / `VF_NACHRUESTEN` | Altbestand-VF_n-Bloecke ohne `SSG_VF_EDIT`-Marker editierbar machen |
| `Vario_Kette_Merge` | Mehrere einzeln gebaute VF_n-Bloecke ab einem Start-Baustein zu einem Gesamt-Block zusammenfuehren |
+1 -1
View File
@@ -23,7 +23,7 @@ Einheiten: mm und Grad. `hz` = Fahrtrichtung in der XY-Ebene, 0 = +X,
| Eckrad | `ILS_Eckrad` | `ils-eckrad-insert` | `ECKRAD_n` | `KreiselInsert.lsp` |
| VF Standard | `StandardVarioFoerderer`, `FOERDERANLAGE` | `berechne-standard` + `variofoerderer-einfuegen` + `vf-block-erstellen` | `VF_n` | `vf_standard.lsp`, `vf_core.lsp` |
| VF Etage | `EtageVarioFoerderer` | `berechne-etage` + `etage-foerderanlage-einfuegen` + `vf-block-erstellen` | `VF_n` | `vf_etage.lsp`, `vf_core.lsp` |
| VF Linienzug | `LinienzugVarioFoerderer` | `vsp-bau-aus-spec` (Spec) bzw. `vfl-journal-replay-start` + `vf-linienzug-modus` | `VF_n` | `vf_linienzug.lsp`, `vf_spec.lsp` |
| VF Linienzug | `LinienzugVarioFoerdererManuell`/`-Zielhoehe`/`-Stueckweise`, `QcLinieMitGf`/`-UForm` | `vsp-bau-aus-spec` (Spec) bzw. `vfl-journal-replay-start` + `vf-linienzug-modus` | `VF_n` | `vf_linienzug.lsp`, `vf_spec.lsp` |
| Gefaellestrecke | `GEFAELLESTRECKE_EINFACH`/`_3DLINIE` | `gf-rebuild` bzw. `gefaellestrecke-einfuegen` | `GF_n` | `Gefaellestrecke.lsp` |
| Gefaellestrecke Linienzug | `GEFAELLESTRECKE_LINIENZUG` | - (nur interaktiv; Kern `gf-linienzug-einfuegen` braucht analysierte Segmente) | `GF_n` | `Gefaellestrecke.lsp` |
| Separator, Scanner | `ILS_SEPARATOR_INSERT`, `ILS_SCANNER_INSERT` | - (Schleife mit `getpoint`); Kern: `ssg-ils-block-laden` + `_.INSERT` | Einzelblock | `SSG_LIB_Commands.lsp`, `ssg_core.lsp` |
+2 -4
View File
@@ -950,13 +950,11 @@
"vfc-linienzug-modus-1": "\n 1 - Manuelle Eingabe (Punkte klicken)",
"vfc-linienzug-modus-2": "\n 2 - 3D-Objekte + Ziel-Hoehe (Randwert-Solver, fertig)",
"vfc-linienzug-modus-3": "\n 3 - 3D-Objekte stueckweise (Vorwaerts-Nachbau, in Arbeit)",
"vfc-linienzug-modus-4": "\n 4 - QC Linie mit GF (automatische Auf-Ab-Berechnung)",
"vfc-linienzug-modus-5": "\n 5 - QC Linie mit GF und U-Form",
"prompt-wahl-1-5": "\nIhre Wahl (1/2/3/4/5) [1]: ",
"prompt-wahl-1-3": "\nIhre Wahl (1/2/3) [1]: ",
"vfl-qc-uform-nicht-implementiert": "\nFEHLER: 'QC Linie mit GF und U-Form' ist noch nicht implementiert - bitte Option 4 oder einen anderen Modus waehlen.",
"vfc-typ-standard-beschreibung": "Standard VarioFoerderer (AS/ES 90 Grad, horizontal versetzt)",
"vfc-typ-etage-beschreibung": "Etage VarioFoerderer (AS/ES 30 Grad, direkt uebereinander)",
"vfc-typ-linienzug-beschreibung": "3D-Linienzug (gemischte GF/VF-Kette; Modus 1 manuell / Modus 2 Ziel-Hoehe fertig / Modus 3 stueckweise in Arbeit)",
"vfc-typ-linienzug-beschreibung": "Streckengruppe (gemischte GF/VF-Kette; Modus 1 manuell / Modus 2 Ziel-Hoehe fertig / Modus 3 stueckweise in Arbeit)",
"vfs-schritt6-horizontal": "\n\n6/11: Horizontale Zwischenstrecke (0 Grad, L=%1 mm)",
"vfs-schritt6-steigung": "\n\n6/11: Steigungsstrecke (%1 Grad, L=%2 mm)",
"vfs-schritt6-gefaelle": "\n\n6/11: Gefaellestrecke (%1 Grad, L=%2 mm)",
+2 -4
View File
@@ -950,13 +950,11 @@
"vfc-linienzug-modus-1": "\n 1 - Manual entry (click points)",
"vfc-linienzug-modus-2": "\n 2 - 3D objects + target height (boundary-value solver, finished)",
"vfc-linienzug-modus-3": "\n 3 - 3D objects step by step (forward reconstruction, work in progress)",
"vfc-linienzug-modus-4": "\n 4 - QC line with GF (automatic up/down calculation)",
"vfc-linienzug-modus-5": "\n 5 - QC line with GF and U-shape",
"prompt-wahl-1-5": "\nYour choice (1/2/3/4/5) [1]: ",
"prompt-wahl-1-3": "\nYour choice (1/2/3) [1]: ",
"vfl-qc-uform-nicht-implementiert": "\nERROR: 'QC line with GF and U-shape' is not yet implemented - please choose option 4 or a different mode.",
"vfc-typ-standard-beschreibung": "Standard VarioFoerderer (AS/ES 90 degrees, offset horizontally)",
"vfc-typ-etage-beschreibung": "Etage VarioFoerderer (AS/ES 30 degrees, directly stacked)",
"vfc-typ-linienzug-beschreibung": "3D line path (mixed GF/VF chain; mode 1 manual / mode 2 target height finished / mode 3 step by step work in progress)",
"vfc-typ-linienzug-beschreibung": "Route group (mixed GF/VF chain; mode 1 manual / mode 2 target height finished / mode 3 step by step work in progress)",
"vfs-schritt6-horizontal": "\n\n6/11: Horizontal intermediate section (0 deg, L=%1 mm)",
"vfs-schritt6-steigung": "\n\n6/11: Incline section (%1 deg, L=%2 mm)",
"vfs-schritt6-gefaelle": "\n\n6/11: Slope section (%1 deg, L=%2 mm)",
+61 -9
View File
@@ -92,10 +92,22 @@
<Command>^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer3D</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00024">
<MenuMacro UID="MM_00191">
<Macro>
<Name>3D-Linienzug</Name>
<Command>^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerderer</Command>
<Name>Werte manuell</Name>
<Command>^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerdererManuell</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00192">
<Macro>
<Name>aus 3D Linie mit Zielhoehe</Name>
<Command>^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerdererZielhoehe</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00193">
<Macro>
<Name>3D Objekte stueckweise (in Arbeit)</Name>
<Command>^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerdererStueckweise</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00025">
@@ -128,6 +140,18 @@
<Command>^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_LINIENZUG</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00188">
<Macro>
<Name>QC Linie mit GF (automatische Auf-Ab-Berechnung)</Name>
<Command>^C^C(ssg-ensure "VarioFoerderer") QcLinieMitGf</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00189">
<Macro>
<Name>QC Linie mit GF und U-Form</Name>
<Command>^C^C(ssg-ensure "VarioFoerderer") QcLinieMitGfUForm</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00033">
<Macro>
<Name>90</Name>
@@ -920,12 +944,7 @@
<Name>Foerderer</Name>
<PopMenuRef pUID="PM_00018"/>
<PopMenuRef pUID="PM_00021"/>
<PopMenuItem>
<NameRef>3D-Linienzug</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00024"/>
</MenuItem>
</PopMenuItem>
<PopMenuRef pUID="PM_00190"/>
<PopMenuItem>
<NameRef>Vario_Kette_Merge</NameRef>
<MenuItem>
@@ -969,6 +988,27 @@
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00190">
<Name>Streckengruppe</Name>
<PopMenuItem>
<NameRef>Werte manuell</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00191"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>aus 3D Linie mit Zielhoehe</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00192"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>3D Objekte stueckweise (in Arbeit)</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00193"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00027">
<Name>Gefaellestrecke</Name>
<PopMenuItem>
@@ -989,6 +1029,18 @@
<MacroRef MenuMacroID="MM_00030"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>QC Linie mit GF (automatische Auf-Ab-Berechnung)</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00188"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>QC Linie mit GF und U-Form</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00189"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00031">
<Name>Omniflo</Name>
+7 -2
View File
@@ -21,13 +21,18 @@
[->Etage]
[Werte manuell]^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer
[<-aus 3D-Linie]^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer3D
[3D-Linienzug]^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerderer
[->Streckengruppe]
[Werte manuell]^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerdererManuell
[aus 3D Linie mit Zielhoehe]^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerdererZielhoehe
[<-3D Objekte stueckweise (in Arbeit)]^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerdererStueckweise
[Vario_Kette_Merge]^C^C(ssg-ensure "VarioFoerderer") Vario_Kette_Merge
[<-VarioFoerderer nachruesten (Marker)]^C^C(ssg-ensure "VarioFoerderer") VARIOFOERDERER_NACHRUESTEN
[->Gefaellestrecke]
[einfach]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_EINFACH
[aus 3D-Linie]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_3DLINIE
[<-<-aus Linienzug (LINE + ARC)]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_LINIENZUG
[aus Linienzug (LINE + ARC)]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_LINIENZUG
[QC Linie mit GF (automatische Auf-Ab-Berechnung)]^C^C(ssg-ensure "VarioFoerderer") QcLinieMitGf
[<-QC Linie mit GF und U-Form]^C^C(ssg-ensure "VarioFoerderer") QcLinieMitGfUForm
[->Omniflo]
[->Boegen APB110]
[90]^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_630_90
+2 -2
View File
@@ -9,7 +9,7 @@
"rotation": 90.0,
"typ": "STANDARD",
"darstellung": "2D",
"drehrichtung": "UZS",
"drehrichtung": "GUZ",
"comment": "aus DXF: Radmitte AN8 (Layer 1ANTR-800) (26997.93, 3466.40) -> SP8 (Layer 1SP-800) (26997.93, 12498.90), Mittenabstand 9032.50, rotation 90.00 Grad; x/y = AN8-Mitte minus Radius. ACHTUNG hoehe=11039.9 ist NICHT belegt: AN8/SP8 sind flache 2D-Symbole auf Z=0 und nur 0 3D-Nachbarn in 3000 mm - zu wenige fuer eine belegbare Hoehe. Hoehe 2226.4 vom Anwender.",
"hoehe_quelle": "Anwender"
},
@@ -23,7 +23,7 @@
"rotation": 90.0,
"typ": "STANDARD",
"darstellung": "2D",
"drehrichtung": "GUZ",
"drehrichtung": "UZS",
"comment": "aus DXF: Radmitte AN8 (Layer 1ANTR-800) (26997.93, 13298.90) -> SP8 (Layer 1SP-800) (26997.93, 16298.90), Mittenabstand 3000.00, rotation 90.00 Grad; x/y = AN8-Mitte minus Radius. ACHTUNG hoehe=11039.9 ist NICHT belegt: AN8/SP8 sind flache 2D-Symbole auf Z=0 und nur 0 3D-Nachbarn in 3000 mm - zu wenige fuer eine belegbare Hoehe. Hoehe 2226.4 vom Anwender.",
"hoehe_quelle": "Anwender"
},