From 57bb1e90570ec24ce39b56048ed7836ed8c04382 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 9 Oct 2026 11:59:18 +0200 Subject: [PATCH] [CHANGE] VARIOFOERDERER_NACHRUESTEN: Baurichtung per Dialog statt Konsole (Teil C der GUI-Umstellung) Neuer Dialog vfs_nachruesten_hz (dcl/variofoerderer.dcl) + vfs-dialog-nachruesten-hz (Lisp/vf_standard.lsp) ersetzt den fruehren getreal-Prompt. Zeigt pro unmarkiertem VF_n-Fund Blockname/erkannten Typ und ein hz-Feld, vorbelegt mit dem zuletzt eingegebenen Wert (identisches Default-Fortpflanzungs-Verhalten wie vorher). "Abbrechen" im Dialog uebernimmt bewusst nur den Vorgabewert fuer DIESEN Fund (Rueckgabe 'ABBRUCH), statt die ganze Nachruesten-Schleife abzubrechen oder auf die Konsole zurueckzufallen - echter Konsolen-Rueckfall bleibt ausschliesslich fuer den Fall, dass der Dialog gar nicht gezeigt werden kann (GUI abgeschaltet). Die Objektauswahl (ssget) selbst bleibt unveraendert Zeichnung/Konsole. doc/variofoerderer.md um den Befehl ergaenzt (war dort bisher gar nicht erwaehnt). Manuell in BricsCAD getestet (unmarkierter VF_4-Block, Dialog erscheint, hz=0 markiert) - laeuft. Co-Authored-By: Claude Sonnet 5 --- Lisp/vf_standard.lsp | 42 ++++++++++++++++++++++++++++++++++++++++-- dcl/variofoerderer.dcl | 32 ++++++++++++++++++++++++++++++++ doc/variofoerderer.md | 12 ++++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) 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 |