[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 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 11:59:18 +02:00
parent 9a7907ab00
commit 57bb1e9057
3 changed files with 84 additions and 2 deletions
+40 -2
View File
@@ -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))))
+32
View File
@@ -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;
}
+12
View File
@@ -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 |