[CHANGE] VarioFoerderer Standard/Etage: 3D-Linie-Eingabemodus laeuft jetzt ueber den bestehenden Basis-Dialog statt komplett interaktiv auf der Konsole
Die Linie wird weiterhin gepickt (vfc-3dlinie-erfassen, aus vf-eingabe-abfragen herausgezogen), liefert aber deltaL/deltaH/Richtung/Einfuegehoehe/Fahrtrichtung nur noch als Prefill fuer vfs-dialog-eingabe-basis - Seite/Motorseite/Darstellung/Geruest bleiben wie bisher ueber die GUI einstellbar. c:VarioFoerderer dispatcht Standard/Etage dadurch immer in vfs-standard-dialog-ablauf/vfe-etage-dialog-ablauf; der alte rein konsolenbasierte Fallback-Pfad (Schritte 3-11, vf-eingabe-abfragen) ist als toter Code entfernt. Dead-Code-Aufraeumung: 35 nur noch vom entfernten Pfad genutzte Sprachschluessel aus lang/de_DE.json + lang/en_GB.json entfernt (Paritaet geprueft). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+111
-303
@@ -708,37 +708,23 @@
|
||||
(setq i (1+ i)))
|
||||
eingabe)
|
||||
|
||||
(defun vf-eingabe-abfragen ( / eingabe-modus line-points startpunkt endpunkt differenz
|
||||
deltaL deltaH deltaX deltaY richtung antwort hz-winkel
|
||||
hoehe-override)
|
||||
;; Eingabemodus: von einem Menue-Wrapper vorbelegt (dann keine Frage) oder
|
||||
;; interaktiv. Die Vorauswahl gilt nur EINMAL und wird hier verbraucht,
|
||||
;; damit ein spaeterer Direktaufruf wieder fragt.
|
||||
(if *vf-vorauswahl-eingabemodus*
|
||||
(setq antwort *vf-vorauswahl-eingabemodus*
|
||||
*vf-vorauswahl-eingabemodus* nil)
|
||||
;; 3D-Linie picken und daraus deltaL/deltaH/richtung/hz/startpunkt (inkl. Z)
|
||||
;; ableiten - fuer den GUI-Ablauf (vf-dialog-ablauf): ersetzt dort die
|
||||
;; separate Startpunkt-Auswahl UND liefert die Geometrie-Felder als Prefill
|
||||
;; fuer den Basis-Dialog (vfs-dialog-eingabe-basis). Rueckgabe: (deltaL
|
||||
;; deltaH richtung startpunkt hz) oder nil, wenn keine gueltige Linie
|
||||
;; gewaehlt wurde (Aufrufer bricht dann ab, statt wie frueher per (exit)
|
||||
;; die ganze Befehlssitzung zu beenden).
|
||||
(defun vfc-3dlinie-erfassen ( / line-points startpunkt endpunkt differenz
|
||||
deltaL deltaH deltaX deltaY richtung hz-winkel)
|
||||
(princ (ssg-text "vfc-modus-3dlinie-header"))
|
||||
(command "BKS" "W")
|
||||
(princ (ssg-text "vfc-bks-weltkoordinaten"))
|
||||
(setq line-points
|
||||
(get-line-start-end-points (ssg-text "vfc-bitte-3dlinie-foerderstrecke")))
|
||||
(if (null line-points)
|
||||
(progn (alert (ssg-text "vfc-alert-keine-gueltige-linie")) nil)
|
||||
(progn
|
||||
(princ (ssg-text "vfc-eingabemodus-header"))
|
||||
(princ (ssg-text "vfc-eingabemodus-3dlinie"))
|
||||
(princ (ssg-text "vfc-eingabemodus-werte"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((= antwort "1") (setq eingabe-modus "Linie"))
|
||||
((= antwort "2") (setq eingabe-modus "Wert"))
|
||||
(t (setq eingabe-modus "Linie") (princ (ssg-text "vfc-modus-3dlinie-fallback")))
|
||||
)
|
||||
(if (= eingabe-modus "Linie")
|
||||
(progn
|
||||
(princ (ssg-text "vfc-modus-3dlinie-header"))
|
||||
(command "BKS" "W")
|
||||
(princ (ssg-text "vfc-bks-weltkoordinaten"))
|
||||
(setq line-points
|
||||
(get-line-start-end-points (ssg-text "vfc-bitte-3dlinie-foerderstrecke")))
|
||||
(if (null line-points)
|
||||
(progn (alert (ssg-text "vfc-alert-keine-gueltige-linie")) (exit))
|
||||
)
|
||||
(setq startpunkt (car line-points)
|
||||
endpunkt (cadr line-points))
|
||||
(setq differenz (punkt-differenz startpunkt endpunkt))
|
||||
@@ -756,52 +742,14 @@
|
||||
(progn (setq richtung "Ab") (setq deltaH (abs deltaH))
|
||||
(princ (ssg-text "vfc-foerderrichtung-ab")))
|
||||
)
|
||||
;; Einfuegehoehe explizit abfragbar - ueberschreibt NUR die absolute
|
||||
;; Z-Hoehe des Startpunkts (Vorschlag = Z des Linien-Startpunkts,
|
||||
;; Enter uebernimmt ihn unveraendert). deltaH/Steigung bleiben davon
|
||||
;; unberuehrt, die kommen weiterhin aus der Geometrie der gepickten
|
||||
;; Linie selbst - nur WO die Anlage absolut eingefuegt wird, ist
|
||||
;; jetzt eingebbar (bisher ausschliesslich aus der Linie abgeleitet).
|
||||
(setq hoehe-override
|
||||
(getreal (ssg-textf "vfc-prompt-einfuegehoehe-3dlinie"
|
||||
(list (rtos (caddr startpunkt) 2 1)))))
|
||||
(if hoehe-override
|
||||
(setq startpunkt (list (car startpunkt) (cadr startpunkt) hoehe-override)))
|
||||
)
|
||||
(progn
|
||||
(princ (ssg-text "vfc-modus-werteingabe-header"))
|
||||
(setq deltaL (getreal (ssg-textf "vfc-prompt-delta-l" (list (chr 916)))))
|
||||
(if (null deltaL) (setq deltaL 15000))
|
||||
(setq deltaH (getreal (ssg-textf "vfc-prompt-delta-h" (list (chr 916)))))
|
||||
(if (null deltaH) (setq deltaH 3000))
|
||||
;; Foerderrichtung bleibt eine einfache Auf/Ab-Frage - die horizontale
|
||||
;; Zwischenstrecke ist geometrisch NUR bei "Ab" ueberhaupt erreichbar
|
||||
;; (die festen 3-Grad-Elemente wirken immer absenkend) und wird daher
|
||||
;; erst SPAETER, nach Bibliotheks-Init, als Zusatzoption in der
|
||||
;; Winkel-Auswahl angeboten (siehe c:VarioFoerderer) - einheitlich fuer
|
||||
;; Werteingabe UND 3D-Linie.
|
||||
(princ (ssg-text "vfc-foerderrichtung-menu"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
(if (= antwort "2") (setq richtung "Ab") (setq richtung "Auf"))
|
||||
(setq startpunkt (getpoint (ssg-text "vfc-prompt-startpunkt-aus")))
|
||||
(if (null startpunkt) (setq startpunkt '(0 0 0)))
|
||||
;; Horizontale Fahrtrichtung waehlen (analog Gefaellestrecke Modus 1)
|
||||
(princ (ssg-text "vfc-fahrtrichtung-header"))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-0" (list grad-zeichen)))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-90" (list grad-zeichen)))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-180" (list grad-zeichen)))
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-270" (list grad-zeichen)))
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2-3-4")))
|
||||
(cond
|
||||
((= antwort "2") (setq hz-winkel 90.0))
|
||||
((= antwort "3") (setq hz-winkel 180.0))
|
||||
((= antwort "4") (setq hz-winkel 270.0))
|
||||
(t (setq hz-winkel 0.0))
|
||||
)
|
||||
(princ (ssg-textf "vfc-fahrtrichtung-ergebnis" (list (rtos hz-winkel 2 1) grad-zeichen)))
|
||||
;; Einfuegehoehe (Z des Startpunkts) wird NICHT mehr hier auf der
|
||||
;; Konsole abgefragt - sie geht als Prefill "einfuegehoehe" in den
|
||||
;; Basis-Dialog (vfs-dialog-eingabe-basis) ein, der dasselbe Feld
|
||||
;; ohnehin per GUI anzeigt und ueberschreibbar macht (Vorschlag = Z
|
||||
;; des Linien-Startpunkts, wie zuvor beim getreal-Prompt).
|
||||
(list deltaL deltaH richtung startpunkt hz-winkel)
|
||||
)
|
||||
)
|
||||
(list deltaL deltaH richtung startpunkt hz-winkel eingabe-modus)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
@@ -1122,28 +1070,83 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; Neuanlage (Menue/Konsole -> Dialog) fuer einen Registry-Typ: Startpunkt
|
||||
;; (X/Y) picken, Basis-Dialog, dann vf-dialog-berechnen-einfuegen.
|
||||
;; Neuanlage (Menue/Konsole -> Dialog) fuer einen Registry-Typ. Zwei
|
||||
;; Eingabemodi fuer die Geometrie (deltaL/deltaH/richtung/hz/Startpunkt):
|
||||
;; "1" 3D-Linie: Linie picken (vfc-3dlinie-erfassen), die abgeleiteten
|
||||
;; Werte gehen als Prefill in den Basis-Dialog - NUR Seite/
|
||||
;; Motorseite/Darstellung/Geruest bleiben dort fuer den Anwender offen.
|
||||
;; "2" Werte: wie bisher Startpunkt (X/Y) picken, Basis-Dialog ohne
|
||||
;; Geometrie-Prefill (Defaults).
|
||||
;; Eingabemodus kommt per Vorauswahl (Menue-Wrapper c:StandardVarioFoerderer3D
|
||||
;; / c:EtageVarioFoerderer3D setzen *vf-vorauswahl-eingabemodus* "1"/"2") oder
|
||||
;; wird - wie zuvor im Konsolen-Ablauf - interaktiv erfragt; die Vorauswahl
|
||||
;; gilt nur einmal. Ersetzt den frueheren Rueckfall auf den rein interaktiven
|
||||
;; Konsolen-Ablauf (vf-eingabe-abfragen, entfernt) fuer die 3D-Linie: dieser
|
||||
;; lief komplett an der GUI vorbei und fragte Seite/Fahrtrichtung/etc. erneut
|
||||
;; auf der Kommandozeile ab, obwohl der Basis-Dialog dieselben Felder laengst
|
||||
;; per GUI anbietet.
|
||||
(defun vf-dialog-ablauf (typ vf-nummer horizontal-p / eingabe deltaL deltaH richtung
|
||||
z-start hz seite startpunkt startpunkt-xy dim
|
||||
geruest-einzelmodul geruest-typ motorseite)
|
||||
(setq startpunkt-xy (vfc-dialog-startpunkt-waehlen "vfc-prompt-startpunkt-aus"))
|
||||
(if (null startpunkt-xy)
|
||||
(setq startpunkt-xy (getpoint (ssg-text "vfc-prompt-startpunkt-aus"))))
|
||||
(if (null startpunkt-xy) (setq startpunkt-xy '(0 0 0)))
|
||||
(setq eingabe (vfs-dialog-eingabe-basis nil))
|
||||
(if (null eingabe)
|
||||
geruest-einzelmodul geruest-typ motorseite
|
||||
antwort linie-erg basis-prefill abbruch)
|
||||
(if *vf-vorauswahl-eingabemodus*
|
||||
(setq antwort *vf-vorauswahl-eingabemodus*
|
||||
*vf-vorauswahl-eingabemodus* nil)
|
||||
(progn
|
||||
(princ (ssg-text "vfc-eingabemodus-header"))
|
||||
(princ (ssg-text "vfc-eingabemodus-3dlinie"))
|
||||
(princ (ssg-text "vfc-eingabemodus-werte"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
)
|
||||
)
|
||||
(setq abbruch nil)
|
||||
(if (= antwort "1")
|
||||
(progn
|
||||
(setq linie-erg (vfc-3dlinie-erfassen))
|
||||
(if (null linie-erg)
|
||||
(setq abbruch t)
|
||||
(progn
|
||||
(setq deltaL (nth 0 linie-erg)
|
||||
deltaH (nth 1 linie-erg)
|
||||
richtung (nth 2 linie-erg)
|
||||
startpunkt (nth 3 linie-erg)
|
||||
hz (nth 4 linie-erg))
|
||||
(setq basis-prefill
|
||||
(list (cons "deltaL" deltaL) (cons "deltaH" deltaH) (cons "richtung" richtung)
|
||||
(cons "einfuegehoehe" (caddr startpunkt)) (cons "hz" hz)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(setq startpunkt-xy (vfc-dialog-startpunkt-waehlen "vfc-prompt-startpunkt-aus"))
|
||||
(if (null startpunkt-xy)
|
||||
(setq startpunkt-xy (getpoint (ssg-text "vfc-prompt-startpunkt-aus"))))
|
||||
(if (null startpunkt-xy) (setq startpunkt-xy '(0 0 0)))
|
||||
(setq startpunkt startpunkt-xy)
|
||||
(setq basis-prefill nil)
|
||||
)
|
||||
)
|
||||
(if abbruch
|
||||
(princ (ssg-text "vfc-vorgang-abgebrochen"))
|
||||
(progn
|
||||
(vf-basis-eingabe-entpacken eingabe)
|
||||
(setq startpunkt (list (car startpunkt-xy) (cadr startpunkt-xy) z-start))
|
||||
;; Gewaehlte Dimension (2D/3D) + Motorseite fuer den Bau erzwingen, danach zurueck.
|
||||
(setq *ssg-ils-dim* dim)
|
||||
(setq *vf-motorseite* motorseite)
|
||||
(vf-dialog-berechnen-einfuegen typ vf-nummer deltaL deltaH richtung startpunkt hz seite nil
|
||||
geruest-einzelmodul geruest-typ horizontal-p)
|
||||
(setq *ssg-ils-dim* nil)
|
||||
(setq *vf-motorseite* nil)
|
||||
(setq eingabe (vfs-dialog-eingabe-basis basis-prefill))
|
||||
(if (null eingabe)
|
||||
(princ (ssg-text "vfc-vorgang-abgebrochen"))
|
||||
(progn
|
||||
(vf-basis-eingabe-entpacken eingabe)
|
||||
;; X/Y kommen aus dem Linien-Startpunkt (Modus 1) oder der
|
||||
;; separaten Punktwahl (Modus 2); Z immer aus dem Basis-Dialog
|
||||
;; (dort vorbelegt, aber ueberschreibbar).
|
||||
(setq startpunkt (list (car startpunkt) (cadr startpunkt) z-start))
|
||||
;; Gewaehlte Dimension (2D/3D) + Motorseite fuer den Bau erzwingen, danach zurueck.
|
||||
(setq *ssg-ils-dim* dim)
|
||||
(setq *vf-motorseite* motorseite)
|
||||
(vf-dialog-berechnen-einfuegen typ vf-nummer deltaL deltaH richtung startpunkt hz seite nil
|
||||
geruest-einzelmodul geruest-typ horizontal-p)
|
||||
(setq *ssg-ils-dim* nil)
|
||||
(setq *vf-motorseite* nil)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1240,13 +1243,7 @@
|
||||
;; damit sie unabhaengig von der Lade-Reihenfolge existiert.
|
||||
(if (not (boundp '*vfl-forciere-qc-modus*)) (setq *vfl-forciere-qc-modus* nil))
|
||||
(defun c:VarioFoerderer ( / typ-eintr anlage-typ berechne-fn einfuege-fn
|
||||
eingabe deltaL deltaH richtung startpunkt seite hz
|
||||
eingabe-modus ergebnis ergebnis-liste gueltige-winkel
|
||||
horizontal-info
|
||||
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 zurueck-zu-typ)
|
||||
idx wahl vf-nummer dlg-typ zurueck-zu-typ)
|
||||
|
||||
(princ "\n=========================================")
|
||||
(princ (ssg-text "vfc-banner-titel"))
|
||||
@@ -1343,215 +1340,26 @@
|
||||
(setq vf-nummer (vf-next-number))
|
||||
(princ (ssg-textf "vfc-naechste-vf-nummer" (list (itoa vf-nummer))))
|
||||
|
||||
;; 2b. Standard- ODER Etage-Typ + Werteingabe -> DCL-Dialog
|
||||
;; (dcl/variofoerderer.dcl; Standard: vfs-standard-dialog-ablauf in
|
||||
;; vf_standard.lsp, Etage: vfe-etage-dialog-ablauf in vf_etage.lsp - beide
|
||||
;; nutzen dieselben Dialoge vfs-dialog-eingabe-basis/-winkel-verteilung).
|
||||
;; 3D-Linie-Eingabe und der Typ Linienzug bleiben unveraendert interaktiv
|
||||
;; (fallen unten in den Konsolen-Ablauf, der die Eingabemodus-Frage erneut
|
||||
;; stellt - siehe vf-eingabe-abfragen).
|
||||
;; 2b. Standard- ODER Etage-Typ -> DCL-Dialog (dcl/variofoerderer.dcl;
|
||||
;; Standard: vfs-standard-dialog-ablauf in vf_standard.lsp, Etage:
|
||||
;; vfe-etage-dialog-ablauf in vf_etage.lsp - beide duenne Wrapper um
|
||||
;; vf-dialog-ablauf). Die Eingabemodus-Frage (3D-Linie vs. Werte) stellt
|
||||
;; vf-dialog-ablauf selbst, VOR dem Basis-Dialog - bei 3D-Linie gehen
|
||||
;; deltaL/deltaH/Richtung/Einfuegehoehe als Prefill in denselben
|
||||
;; Basis-Dialog ein, den auch die Werteingabe nutzt (siehe dortiger
|
||||
;; Kopfkommentar). Damit entfaellt der fruehere rein interaktive
|
||||
;; Konsolen-Ablauf (Schritte 3-11, vf-eingabe-abfragen) komplett - er lief
|
||||
;; bei 3D-Linie an der GUI vorbei und fragte Seite/Fahrtrichtung/Verteilung
|
||||
;; erneut auf der Kommandozeile ab, obwohl der Dialog dieselben Felder
|
||||
;; laengst per GUI anbietet.
|
||||
(if (member anlage-typ '("standard" "etage"))
|
||||
(progn
|
||||
;; Eingabemodus: Vorauswahl (Menue-Wrapper) hat Vorrang, sonst fragen.
|
||||
(if *vf-vorauswahl-eingabemodus*
|
||||
(setq antwort *vf-vorauswahl-eingabemodus*)
|
||||
(progn
|
||||
(princ (ssg-text "vfc-eingabemodus-header"))
|
||||
(princ (ssg-text "vfc-eingabemodus-3dlinie"))
|
||||
(princ (ssg-text "vfc-eingabemodus-werte"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
)
|
||||
)
|
||||
(if (= antwort "2")
|
||||
(progn
|
||||
(if (= anlage-typ "etage")
|
||||
(vfe-etage-dialog-ablauf vf-nummer)
|
||||
(vfs-standard-dialog-ablauf vf-nummer))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; 3. Gemeinsame Eingabe (deltaL, deltaH, richtung, startpunkt) - richtung
|
||||
;; steht bei beiden Eingabemodi (Werteingabe UND 3D-Linie) bereits fest.
|
||||
(setq eingabe (vf-eingabe-abfragen))
|
||||
(setq deltaL (nth 0 eingabe)
|
||||
deltaH (nth 1 eingabe)
|
||||
richtung (nth 2 eingabe)
|
||||
startpunkt (nth 3 eingabe)
|
||||
hz (nth 4 eingabe)
|
||||
eingabe-modus (nth 5 eingabe))
|
||||
|
||||
;; 4. Seite-Auswahl (vor Berechnung, weil Etage-Typ sie fuer Geometrie braucht)
|
||||
(princ (ssg-text "vfc-seite-header"))
|
||||
(princ (ssg-text "vfc-seite-rechts"))
|
||||
(princ (ssg-text "vfc-seite-links"))
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2")))
|
||||
(if (= antwort "2") (setq seite "links") (setq seite "rechts"))
|
||||
(princ (ssg-textf "vfc-seite-gewaehlt" (list seite)))
|
||||
|
||||
;; 5. Typ-spezifische Berechnung (init + Winkelsuche)
|
||||
(setq ergebnis (apply berechne-fn (list deltaL deltaH richtung seite)))
|
||||
(setq ergebnis-liste (cadddr ergebnis))
|
||||
|
||||
;; 5b. Horizontale Zwischenstrecke als Zusatzoption: geometrisch NUR bei
|
||||
;; "Ab" ueberhaupt erreichbar (die festen 3-Grad-Elemente wirken immer
|
||||
;; absenkend) - "Auf" wird deshalb gar nicht erst geprueft. Gilt einheitlich
|
||||
;; fuer Werteingabe UND 3D-Linie, da richtung hier in jedem Fall feststeht.
|
||||
;; 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" nil))
|
||||
(if (and horizontal-info (caddr horizontal-info))
|
||||
(progn
|
||||
(setq ergebnis-liste
|
||||
(append ergebnis-liste
|
||||
(list (list 0 (car horizontal-info) (cadr horizontal-info) T))))
|
||||
(princ (ssg-textf "vfc-hinweis-horizontal-moeglich" (list (chr 176) (chr 916))))
|
||||
)
|
||||
(setq horizontal-info nil)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; Konfiguration (nach ssg_core-Init verfuegbar).
|
||||
(setq staustrecke-basis (ssg-cfg-or "vario" "staustrecke_basis" 1000))
|
||||
|
||||
;; 7. Gueltige Winkel ermitteln
|
||||
(setq gueltige-winkel
|
||||
(mapcar 'car
|
||||
(vl-remove-if-not
|
||||
(function (lambda (e) (and (nth 3 e)
|
||||
(numberp (nth 1 e)) (numberp (nth 2 e))
|
||||
(>= (nth 1 e) 0) (>= (nth 2 e) 0))))
|
||||
ergebnis-liste)))
|
||||
(if (null gueltige-winkel)
|
||||
(progn
|
||||
(alert (ssg-textf "vfc-alert-kein-winkel"
|
||||
(list (chr 916) (rtos deltaL 2 0) (rtos deltaH 2 0) richtung)))
|
||||
(if (= anlage-typ "etage")
|
||||
(vfe-etage-dialog-ablauf vf-nummer)
|
||||
(vfs-standard-dialog-ablauf vf-nummer))
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
|
||||
;; 8. Winkelauswahl (automatisch oder interaktiv)
|
||||
;; Sentinel-Winkel 0 = horizontale Zwischenstrecke (Schritt 6/11 bei 0
|
||||
;; Grad, Boegen fest auf_3/ab_3) - siehe berechne-horizontale-mitte.
|
||||
(if (= (length gueltige-winkel) 1)
|
||||
(progn
|
||||
(setq best-winkel (car gueltige-winkel))
|
||||
(setq eintrag (assoc best-winkel ergebnis-liste))
|
||||
(setq L_GF (nth 1 eintrag) L_VF (nth 2 eintrag))
|
||||
(if (= best-winkel 0)
|
||||
(princ (ssg-text "vfc-einzige-variante-horizontal"))
|
||||
(princ (ssg-textf "vfc-einziger-winkel" (list (itoa best-winkel) (chr 176))))
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(princ (ssg-text "vfc-mehrere-winkel-header"))
|
||||
(setq idx 1)
|
||||
(foreach w gueltige-winkel
|
||||
(setq eintrag (assoc w ergebnis-liste))
|
||||
(if (= w 0)
|
||||
(princ (ssg-textf "vfc-winkel-option-horizontal"
|
||||
(list idx (chr 176)
|
||||
(rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1))))
|
||||
(princ (ssg-textf "vfc-winkel-option"
|
||||
(list idx (itoa w) (chr 176)
|
||||
(rtos (nth 1 eintrag) 2 1) (rtos (nth 2 eintrag) 2 1))))
|
||||
)
|
||||
(setq idx (1+ idx))
|
||||
)
|
||||
(setq wahl (getint (ssg-textf "vfc-prompt-winkel-waehlen"
|
||||
(list (length gueltige-winkel)))))
|
||||
(if (or (null wahl) (< wahl 1) (> wahl (length gueltige-winkel)))
|
||||
(setq wahl 1))
|
||||
(setq best-winkel (nth (1- wahl) gueltige-winkel))
|
||||
(setq eintrag (assoc best-winkel ergebnis-liste))
|
||||
(setq L_GF (nth 1 eintrag) L_VF (nth 2 eintrag))
|
||||
)
|
||||
)
|
||||
(princ "\n\n=========================================")
|
||||
(if (= best-winkel 0)
|
||||
(princ (ssg-textf "vfc-zus-horizontal"
|
||||
(list (rtos L_GF 2 2) (rtos L_VF 2 2))))
|
||||
(princ (ssg-textf "vfc-zus-winkel"
|
||||
(list (itoa best-winkel) (chr 176) (rtos L_GF 2 2) (rtos L_VF 2 2))))
|
||||
)
|
||||
(princ "\n=========================================")
|
||||
|
||||
;; 9. L_GF Verteilung
|
||||
(princ (ssg-text "vfc-gf-verteilung-header"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-1"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-2"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-3"))
|
||||
(princ (ssg-text "vfc-gf-verteilung-4"))
|
||||
(setq verteilung-modus (getstring (ssg-text "prompt-wahl-1-2-3-4")))
|
||||
(if (= verteilung-modus "") (setq verteilung-modus "1"))
|
||||
(cond
|
||||
((= verteilung-modus "1")
|
||||
(setq L_GF1 (/ L_GF 2.0) L_GF2 (/ L_GF 2.0)))
|
||||
((= verteilung-modus "2")
|
||||
(setq L_GF1 (float staustrecke-basis))
|
||||
(setq L_GF2 (max 0.0 (- L_GF (float staustrecke-basis)))))
|
||||
((= verteilung-modus "3")
|
||||
(setq L_GF2 (float staustrecke-basis))
|
||||
(setq L_GF1 (max 0.0 (- L_GF (float staustrecke-basis)))))
|
||||
((= verteilung-modus "4")
|
||||
(setq L_GF1 (getreal (ssg-textf "vfc-prompt-lgf1-vorne"
|
||||
(list (rtos (/ L_GF 2.0) 2 2)))))
|
||||
(if (null L_GF1) (setq L_GF1 (/ L_GF 2.0)))
|
||||
(setq L_GF2 (max 0.0 (- L_GF L_GF1)))
|
||||
(princ (ssg-textf "vfc-lgf2-hinten" (list (rtos L_GF2 2 2)))))
|
||||
(t (setq L_GF1 (/ L_GF 2.0) L_GF2 (/ L_GF 2.0)))
|
||||
)
|
||||
(princ (ssg-textf "vfc-zus-lgf" (list (rtos L_GF1 2 2) (rtos L_GF2 2 2))))
|
||||
|
||||
;; Scanner-Anzahl wird nicht mehr abgefragt (Attribut ANZAHL_SCANNER bleibt 0).
|
||||
(setq n-scanner 0)
|
||||
|
||||
;; 11. Bestaetigung
|
||||
(princ (ssg-text "vfc-einfuegen-frage"))
|
||||
(princ (ssg-text "vfc-einfuegen-optionen"))
|
||||
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default")))
|
||||
|
||||
(if (= antwort "1")
|
||||
(progn
|
||||
;; Hoehenangaben fuer Attribute und Beschriftung
|
||||
(setq hoehe-von (caddr startpunkt))
|
||||
(setq hoehe-bis (cond
|
||||
((= richtung "Auf") (+ hoehe-von deltaH))
|
||||
((= richtung "Ab") (- hoehe-von deltaH))
|
||||
(t hoehe-von)))
|
||||
|
||||
;; lastEnt VOR der Einfuegung merken
|
||||
(setq lastEnt (ssg-lastent-ohne-attribute))
|
||||
|
||||
;; Typ-spezifische Einfuegung
|
||||
(apply einfuege-fn
|
||||
(list deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt seite hz))
|
||||
|
||||
;; Gemeinsame VF_*-Block-Erstellung
|
||||
;; Geruest fuer Einzelmodul/Geruestoption sind in diesem interaktiven
|
||||
;; Konsolen-Ablauf (Etage/Linienzug) nicht abfragbar - bleiben auf
|
||||
;; Schema-Default (analog Kreisel: nur ueber Dialog editierbar).
|
||||
(setq vf-insert
|
||||
(vf-block-erstellen anlage-typ seite vf-nummer n-scanner
|
||||
hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2
|
||||
richtung best-winkel startpunkt lastEnt hz
|
||||
"0" "Schoenenberger Geruest"))
|
||||
|
||||
;; Standard- UND Etage-Bloecke aus dem interaktiven Konsolen-Ablauf mit der
|
||||
;; SSG_VF_EDIT-XDATA markieren - sie sind (wie die Dialog-Variante) aus
|
||||
;; Attributen + hz verlustfrei rekonstruierbar, also per Doppelklick
|
||||
;; (c:VARIOFOERDERER_EDIT) editierbar. Linienzug bleibt unmarkiert.
|
||||
(if (and vf-insert (member anlage-typ '("standard" "etage")))
|
||||
(vf-edit-xdata-schreiben vf-insert anlage-typ hz))
|
||||
|
||||
(princ "\n=========================================")
|
||||
)
|
||||
(princ (ssg-text "vfc-vorgang-abgebrochen"))
|
||||
)
|
||||
nil
|
||||
)
|
||||
|
||||
|
||||
@@ -803,11 +803,13 @@
|
||||
|
||||
;; ============================================================
|
||||
;; DCL-DIALOG (Standardfall) - dcl/variofoerderer.dcl
|
||||
;; Ersetzt die interaktive Werteingabe aus vf-eingabe-abfragen
|
||||
;; (Konsolen-Modus "Werteingabe") fuer anlage-typ "standard" durch
|
||||
;; zwei DCL-Dialoge: Basis-Eingabe und Winkel/Verteilung. Die
|
||||
;; 3D-Linie-Eingabe sowie die Typen "etage"/"linienzug" bleiben
|
||||
;; unveraendert interaktiv (siehe Verzweigung in c:VarioFoerderer).
|
||||
;; Ersetzt die frueher komplett interaktive Werteingabe fuer anlage-typ
|
||||
;; "standard" durch zwei DCL-Dialoge: Basis-Eingabe und Winkel/Verteilung.
|
||||
;; Beide Eingabemodi (3D-Linie UND Werteingabe, siehe vf-dialog-ablauf in
|
||||
;; vf_core.lsp) laufen seitdem ueber denselben Basis-Dialog - bei 3D-Linie
|
||||
;; nur mit deltaL/deltaH/Richtung/Einfuegehoehe vorbelegt. Nur der Typ
|
||||
;; "linienzug" bleibt unveraendert interaktiv (siehe Verzweigung in
|
||||
;; c:VarioFoerderer).
|
||||
;;
|
||||
;; Beide Dialoge existieren je in zwei Varianten:
|
||||
;; -popup (Dropdowns, urspruengliche Implementierung, unveraendert) und
|
||||
|
||||
Reference in New Issue
Block a user