[CHANGE] VF Standard/Etage 3D-Linie-Eingabemodus per Dialog statt Konsole (Teil A der GUI-Umstellung)

Neuer Dialog vfc_eingabemodus (dcl/variofoerderer.dcl) + vfc-dialog-eingabemodus-waehlen (Lisp/vf_core.lsp), analog zum bestehenden vfc_typ-Muster: Radio-Buttons "3D-Linie auswaehlen" / "Werte manuell eingeben" ersetzen die fruehere getstring-Konsolenabfrage in vf-dialog-ablauf. Betrifft StandardVarioFoerderer3D und EtageVarioFoerderer3D (beide rufen denselben Ablauf).

Die 3D-Linie-Objektauswahl selbst (vfc-3dlinie-erfassen) bleibt bewusst Zeichnung/Konsole - eine Linie laesst sich nicht durch ein Formularfeld ersetzen. Alle daraus abgeleiteten Werte (deltaL/deltaH/hz/Einfuegehoehe) gehen als Prefill in den bereits bestehenden Basis-Dialog (variofoerderer_basis), der sie ueberschreibbar anzeigt - identisch zum "Werte manuell"-Pfad.

Rueckfall auf die alte Konsolenabfrage bleibt erhalten (GUI abgeschaltet, DXFM_LANG=en_GB), wie bei vfc_typ. doc/variofoerderer.md (Abschnitt 2, 8, Entscheidungsbaum) und CLAUDE.md entsprechend aktualisiert.

Manuell in BricsCAD getestet (StandardVarioFoerderer3D + EtageVarioFoerderer3D, beide Dialogzweige inkl. Abbruch) - laeuft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 11:38:15 +02:00
parent 2ef8f319ab
commit 9a7907ab00
4 changed files with 139 additions and 57 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+44 -2
View File
@@ -1088,18 +1088,28 @@
(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
antwort linie-erg basis-prefill abbruch)
antwort dlg-modus linie-erg basis-prefill abbruch)
(setq abbruch nil)
(if *vf-vorauswahl-eingabemodus*
(setq antwort *vf-vorauswahl-eingabemodus*
*vf-vorauswahl-eingabemodus* nil)
(progn
(setq dlg-modus (vfc-dialog-eingabemodus-waehlen))
(cond
((eq dlg-modus 'ABBRUCH) (setq antwort "2" abbruch t))
(dlg-modus (setq antwort dlg-modus))
(t
;; Dialog nicht verfuegbar/nicht erlaubt (GUI aus, andere Sprache)
;; - alte Konsolen-Abfrage unveraendert.
(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 (not abbruch)
(if (= antwort "1")
(progn
(setq linie-erg (vfc-3dlinie-erfassen))
@@ -1126,6 +1136,7 @@
(setq basis-prefill nil)
)
)
)
(if abbruch
(princ (ssg-text "vfc-vorgang-abgebrochen"))
(progn
@@ -1233,6 +1244,37 @@
)
)
;; Eingabemodus (3D-Linie / Werte manuell) per Dialog waehlen - ersetzt die
;; fruehere getstring-Konsolenabfrage in vf-dialog-ablauf. Gleiches Muster/
;; gleiche Einschraenkung wie vfc-dialog-typ-waehlen: nur bei aktiver GUI und
;; Deutsch, sonst nil (Aufrufer faellt dann auf die alte Konsolen-Abfrage
;; zurueck). Keine "Zurueck"-Taste noetig (direkt nach der Typ-Wahl, die
;; selbst schon ein "Zurueck" hat). Rueckgabe: "1" (3D-Linie), "2" (Werte)
;; oder 'ABBRUCH.
(defun vfc-dialog-eingabemodus-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_eingabemodus" dat))
(progn (if (and dat (>= dat 0)) (unload_dialog dat)) nil)
(progn
(set_tile "modus_3dlinie" "1")
(action_tile "accept"
"(setq gmodus (if (= (get_tile \"modus_werte\") \"1\") \"2\" \"1\"))
(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq ergebnis (start_dialog))
(unload_dialog dat)
(if (= ergebnis 1) gmodus 'ABBRUCH)
)
)
)
nil
)
)
;; ============================================================
;; TEIL 12: DISPATCHER c:VarioFoerderer
;; ============================================================
+44 -6
View File
@@ -20,12 +20,20 @@
// 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.
// vfc_eingabemodus: Eingabemodus (3D-Linie / Werte manuell) waehlen -
// ersetzt die Konsolen-Abfrage am Anfang von vf-dialog-ablauf fuer
// Standard UND Etage (vfc-dialog-eingabemodus-waehlen, vf_core.lsp).
// Die 3D-Linie SELBST (Objektauswahl) bleibt danach Zeichnung/Konsole
// (get-line-start-end-points) - eine Linie laesst sich nicht durch ein
// Formularfeld ersetzen; alle abgeleiteten Werte (deltaL/deltaH/hz/
// Einfuegehoehe) landen danach als Prefill im bestehenden Basis-Dialog
// (variofoerderer_basis), der sie ganz normal ueberschreibbar anzeigt.
// 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
@@ -72,6 +80,36 @@ vfc_typ : dialog {
}
}
// Eingabemodus waehlen (3D-Linie / Werte manuell) - Radio-Buttons, gleiches
// Muster und dieselbe Sprach-/GUI-Einschraenkung wie vfc_typ oben (Labels
// hart deutsch, Rueckfall auf Konsolen-Liste bei DXFM_LANG=en_GB oder
// abgeschalteter GUI - siehe vfc-dialog-eingabemodus-waehlen, vf_core.lsp).
vfc_eingabemodus : dialog {
label = "VarioFoerderer - Eingabemodus";
: boxed_radio_column {
label = "Eingabemodus waehlen:";
key = "modus";
: radio_button {
key = "modus_3dlinie";
label = "3D-Linie auswaehlen (Start- und Endpunkt mit Hoehe)";
value = "1";
}
: radio_button {
key = "modus_werte";
label = "Werte manuell eingeben";
}
}
: row {
alignment = centered;
: 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
+23 -21
View File
@@ -185,12 +185,18 @@ Winkelberechnung befuellt, da seine Optionsliste von Dialog 1 abhaengt.
| Verteilung Staustrecken | `verteilung` | Dropdown | Gleichmaessig (L_GF1=L_GF2) / Vorne Minimum, hinten Rest / Hinten Minimum, vorne Rest / Eigene Werte | Gleichmaessig |
| L_GF1 vorne (manuell) | `lgf1_manuell` | Zahl (mm) | nur aktiv bei Verteilung "Eigene Werte" | L_GF / 2 |
Vorgelagert (Konsole, vor Dialog 1): Eingabemodus-Frage "3D-Linie" vs. "Werte
manuell" — nur bei Wahl "2" oeffnen sich obige Dialoge, sonst laeuft der
komplette [Legacy-Konsolen-Pfad](#8-legacy-konsolen-pfad). Direkt vor Dialog 1
wird zusaetzlich der Startpunkt (X/Y) per Punktwahl gewaehlt
(`vfs-standard-dialog-ablauf`, `Lisp/vf_standard.lsp:1069`); die Z-Hoehe kommt
aus dem Feld "Einfuegehoehe".
Vorgelagert: Eingabemodus-Frage "3D-Linie" vs. "Werte manuell" per DCL-Dialog
(`vfc_eingabemodus`, `vfc-dialog-eingabemodus-waehlen` in `Lisp/vf_core.lsp`;
Radio-Buttons wie `vfc_typ`, Rueckfall auf die alte Konsolenfrage bei
abgeschalteter GUI oder `DXFM_LANG=en_GB`). **Beide** Antworten fuehren zu
Dialog 1/2 oben: bei "3D-Linie" wird zuerst die Linie gewaehlt
(`vfc-3dlinie-erfassen`, Objektauswahl bleibt Zeichnung/Konsole — eine Linie
laesst sich nicht durch ein Formularfeld ersetzen) und deltaL/deltaH/hz/
Einfuegehoehe gehen als Prefill in Dialog 1; bei "Werte manuell" wird nur der
Startpunkt per Punktwahl-Dialog (`vfc-dialog-startpunkt-waehlen`) gewaehlt und
Dialog 1 startet ohne Geometrie-Prefill. Der
[Legacy-Konsolen-Pfad](#8-legacy-konsolen-pfad) existiert nur noch als
Rueckfall, wenn keiner der beiden Dialoge gezeigt werden kann/darf.
---
@@ -419,9 +425,11 @@ Wiederherstellungs-Daten gehoeren ausschliesslich in die XDATA der Zeichnung.
## 8. Legacy-Konsolen-Pfad
Wird bei Standard/Etage durchlaufen, wenn auf die Eingabemodus-Frage *nicht*
"2" getippt wird (Enter/leer faellt ebenfalls hierher zurueck) — also aktuell
noch der Vorgabe-Pfad. Zwei Untermodi:
Reiner Rueckfall fuer Standard/Etage: greift nur noch, wenn der Dialog
`vfc_eingabemodus` nicht gezeigt werden kann/darf (GUI abgeschaltet,
`DXFM_LANG=en_GB`) — im Normalfall (GUI an, Deutsch) laufen beide
Eingabemodi inzwischen ueber den Dialog (Abschnitt 2, "Vorgelagert"). Zwei
Untermodi:
**3D-Linie auswaehlen**
@@ -585,19 +593,13 @@ eine bereits genannte, kleinere Nummer (z.B. 34 -> 35 -> 34) sind Schleifen
|---|---|---|---|
| 1 | Befehl waehlen | FOERDERANLAGE / GEFAELLESTRECKE | 2, 40 |
| 2 | Anlagen-Typ | Standard / Etage / Linienzug | 3, 3, 30 |
| 3 | Eingabemodus (nur Standard/Etage) | Konsole / Dialog | 4, 10 |
| 4 | Startpunkt waehlen | Punktwahl | 5 |
| 3 | Eingabemodus (nur Standard/Etage) | Dialog `vfc_eingabemodus`: 3D-Linie / Werte manuell | 11, 4 |
| 4 | Startpunkt waehlen | Punktwahl-Dialog | 5 |
| 5 | Dialog "Basis" | DeltaL, DeltaH, Auf/Ab, Einfuegehoehe, Fahrtrichtung, Seite, Motorseite, 2D/3D, Geruest | 6 |
| 6 | Winkelberechnung (automatisch) | - | 7 |
| 7 | Dialog "Winkel/Verteilung" | Winkel, Verteilung, ggf. L_GF1 | 8 |
| 8 | Bau (automatisch) | - | ENDE |
| 10 | Eingabemodus Konsole | 3D-Linie / Werte | 11, 12 |
| 11 | 3D-Linie waehlen | Objektwahl -> DeltaL/DeltaH/Fahrtrichtung automatisch | 13 |
| 12 | Werte eingeben | DeltaL, DeltaH, Auf/Ab, Startpunkt, Fahrtrichtung | 13 |
| 13 | Seite waehlen | rechts/links | 14 |
| 14 | Winkel waehlen | automatisch bei 1 Treffer, sonst Liste | 16 |
| 16 | Staustrecken-Verteilung | 4 Optionen, ggf. L_GF1 manuell | 17 |
| 17 | Bestaetigung "Einfuegen?" | Ja/Nein | 8 |
| 11 | 3D-Linie waehlen | Objektwahl (Zeichnung) -> DeltaL/DeltaH/Fahrtrichtung automatisch, Prefill fuer Dialog 5 | 5 |
| 30 | Linienzug-Modus | Manuell / Pfad+Zielhoehe / Vorwaerts-Nachbau | 31, 50, 55 |
| 31 | Startpunkt + Starthoehe | Punktwahl + Zahl | 32 |
| 32 | AS-Element setzen? | Ja/Nein | 33, 34 |
@@ -645,9 +647,9 @@ eine bereits genannte, kleinere Nummer (z.B. 34 -> 35 -> 34) sind Schleifen
### Beispiel-Abfolgen
- Standard, Dialog-Pfad: `1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8`
- Standard, Legacy-Konsole mit 3D-Linie: `1 -> 2 -> 3 -> 10 -> 11 -> 13 -> 14 -> 16 -> 17 -> 8`
- Etage, Dialog-Pfad: `1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8`
- Standard, Werte manuell: `1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8`
- Standard, aus 3D-Linie: `1 -> 2 -> 3 -> 11 -> 5 -> 6 -> 7 -> 8`
- Etage, Werte manuell: `1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8`
- Linienzug — AS-Element, GF, Auf/Ab-VF mit Zwischenkurve, Kettenende:
`1 -> 2 -> 30 -> 31 -> 32 -> 33 -> 34 -> 36 -> 41 -> 34 -> 37 -> 42 -> 46 -> 42 -> 45`
- Linienzug — horizontaler Anfang direkt bis Kettenende: