diff --git a/Lisp/vf_standard.lsp b/Lisp/vf_standard.lsp index b5e10f0..658bf1f 100644 --- a/Lisp/vf_standard.lsp +++ b/Lisp/vf_standard.lsp @@ -1553,6 +1553,38 @@ ;; Neuanlage 0). Wer hz nicht kennt: der Wert steht in der urspruenglichen ;; Bau-Eingabe (z.B. mubea.json "hz") bzw. ergibt sich aus der Ausrichtung. ;; Bereits markierte Bloecke und Nicht-VF-Bloecke werden uebersprungen. + +;; Baurichtung (hz) fuer EINEN Fund per Dialog abfragen - ersetzt den +;; frueheren getreal-Prompt in c:VARIOFOERDERER_NACHRUESTEN. "kopf" per +;; set_tile aus ssg-text befuellt (Blockname + erkannter Typ), deshalb +;; sprachunabhaengig. Rueckgabe: hz (Real) bei OK, 'ABBRUCH wenn der Nutzer +;; bewusst abbricht (Aufrufer uebernimmt dann default-hz, OHNE nochmal auf +;; der Konsole zu fragen), nil wenn der Dialog gar nicht gezeigt werden +;; konnte/durfte (GUI aus) - NUR dann faellt der Aufrufer auf den alten +;; getreal-Prompt zurueck. +(defun vfs-dialog-nachruesten-hz (bname typ default-hz / dcl-pfad dat ergebnis hz) + (if (or (not (car (atoms-family 1 '("SSG-GUI-P")))) (ssg-gui-p)) + (progn + (setq dcl-pfad (strcat (getenv "DXFM_DCL") "/variofoerderer.dcl")) + (setq dat (load_dialog dcl-pfad)) + (if (not (new_dialog "vfs_nachruesten_hz" dat)) + (progn (if (and dat (>= dat 0)) (unload_dialog dat)) nil) + (progn + (set_tile "kopf" (ssg-textf "vfs-nachruesten-erkannt" (list bname typ))) + (set_tile "hz" (rtos default-hz 2 1)) + (action_tile "accept" + "(setq hz (distof (get_tile \"hz\") 2)) (done_dialog 1)") + (action_tile "cancel" "(done_dialog 0)") + (setq ergebnis (start_dialog)) + (unload_dialog dat) + (cond ((and (= ergebnis 1) hz) hz) (t 'ABBRUCH)) + ) + ) + ) + nil + ) +) + (defun c:VARIOFOERDERER_NACHRUESTEN ( / ss i ent ed bname attribs xd typ hz n-neu n-skip default-hz) (ssg-start "VARIOFOERDERER_NACHRUESTEN" nil) @@ -1580,8 +1612,14 @@ (if (or (assoc "GF_Bogen_R_60" attribs) (assoc "GF_Bogen_L_60" attribs)) "etage" "standard")) (princ (ssg-textf "vfs-nachruesten-erkannt" (list bname typ))) - (setq hz (getreal (ssg-textf "vfs-nachruesten-prompt-hz" (list (rtos default-hz 2 1))))) - (if (null hz) (setq hz default-hz)) + (setq hz (vfs-dialog-nachruesten-hz bname typ default-hz)) + (cond + ((eq hz 'ABBRUCH) (setq hz default-hz)) + ((null hz) + (setq hz (getreal (ssg-textf "vfs-nachruesten-prompt-hz" (list (rtos default-hz 2 1))))) + (if (null hz) (setq hz default-hz)) + ) + ) (setq default-hz hz) (vf-edit-xdata-schreiben ent typ hz) (princ (ssg-textf "vfs-nachruesten-markiert" (list (rtos hz 2 1)))) diff --git a/dcl/variofoerderer.dcl b/dcl/variofoerderer.dcl index 084aefe..6af94de 100644 --- a/dcl/variofoerderer.dcl +++ b/dcl/variofoerderer.dcl @@ -34,6 +34,16 @@ // 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. +// +// Dialog fuer c:VARIOFOERDERER_NACHRUESTEN (vf_standard.lsp): +// vfs_nachruesten_hz: Baurichtung (hz) je unmarkiertem VF_n-Fund abfragen +// - ersetzt den fruehren getreal-Prompt. Die Objektauswahl selbst +// (ssget) bleibt Zeichnung/Konsole; je Fund OHNE SSG_VF_EDIT-Marker +// zeigt der Befehl diesen Dialog einmal, mit dem zuletzt eingegebenen +// Wert als Vorgabe (vfs-dialog-nachruesten-hz in vf_standard.lsp). +// "Abbrechen" uebernimmt fuer diesen Fund den Vorgabewert, OHNE auf die +// alte Konsolenfrage zurueckzufallen (die bleibt reiner Rueckfall fuer +// den Fall, dass der Dialog gar nicht gezeigt werden kann/darf). // ============================================================ // Anlagen-Typ waehlen (Standard/Etage/Linienzug). Radio-Buttons statt @@ -261,3 +271,25 @@ variofoerderer_winkel : dialog { ok_cancel; } + +// Baurichtung (hz) je unmarkiertem VF_n-Fund abfragen (VARIOFOERDERER_ +// NACHRUESTEN). "kopf" per set_tile aus ssg-text befuellt (Blockname + +// erkannter Typ), deshalb sprachunabhaengig nutzbar - Button-Chrome bleibt +// hart deutsch wie der Rest dieser Datei. "Abbrechen" bricht nur den +// aktuellen Fund ab: der vorbelegte default-hz wird fuer DIESEN Fund +// uebernommen (Aufrufer sieht 'ABBRUCH, kein Rueckfall auf die Konsole) - +// die ganze Nachruesten-Schleife laeuft weiter, kein Gesamtabbruch. +vfs_nachruesten_hz : dialog { + label = "VarioFoerderer nachruesten - Baurichtung"; + + : column { + : text { key = "kopf"; label = ""; width = 50; } + : edit_box { + key = "hz"; + label = "Baurichtung hz (Grad):"; + edit_width = 10; + } + } + + ok_cancel; +} diff --git a/doc/variofoerderer.md b/doc/variofoerderer.md index 9cf8146..3d8a9aa 100644 --- a/doc/variofoerderer.md +++ b/doc/variofoerderer.md @@ -383,6 +383,18 @@ interaktive Linienzug-Ablauf weiter (Abschnitt 5). Einzige Eingabe — Rest laeuft automatisch (Attribute aggregiert, Luecken werden gemeldet). +**VARIOFOERDERER_NACHRUESTEN / VF_NACHRUESTEN** + +| Feld | Steuerelement | Werte | +|---|---|---| +| VF_n-Bloecke | Objektauswahl (`ssget`) | Altbestand ohne `SSG_VF_EDIT`-Marker | +| Baurichtung hz je Fund | Dialog `vfs_nachruesten_hz` (Zahl, Grad) | Vorgabe = zuletzt eingegebener Wert; Rueckfall auf Konsole nur, wenn der Dialog nicht gezeigt werden kann/darf | + +Typ (Standard/Etage) wird automatisch aus den Attributen erkannt +(`GF_Bogen_R/L_60` -> Etage). Nur die Baurichtung ist nicht rekonstruierbar +und wird je unmarkiertem Fund abgefragt; "Abbrechen" im Dialog uebernimmt +fuer diesen Fund den Vorgabewert, ohne die ganze Schleife abzubrechen. + **VF_SEKTION_RESTORE — lose Kette aus der Zeichnung wiederherstellen** | Feld | Steuerelement | Werte |