Wizard mit Oberflächenstückwerk für den Mode 3 für den VF gebaut

This commit is contained in:
2026-08-26 11:33:19 +02:00
parent 5cb0b00ce5
commit e3dbaceb24
10 changed files with 1651 additions and 183 deletions
+268
View File
@@ -0,0 +1,268 @@
// ============================================================
// vf_linienzug_wizard.dcl - VF Linienzug Assistent (Modus 1)
// Zwei GENERISCHE Einzel-Dialoge (vflw_zahl/vflw_wahl) fuer alle Fragen, die
// im Ablauf isoliert stehen, PLUS mehrere GRUPPEN-Dialoge weiter unten, die
// Fragen zusammenfassen, die immer unmittelbar hintereinander kommen (z.B.
// Startpunkt+Starthoehe, AS-Element Ja/Nein+Winkel+Seite). Kopfzeilen/
// Optionslisten werden zur Laufzeit befuellt, siehe vf_linienzug.lsp,
// Abschnitte "WIZARD-EINGABE" und "GRUPPEN-DIALOGE".
// Die ORIGINALEN Konsolen-Fragen (princ + getstring/getreal/getint) bleiben
// im Code stehen (de/en ueber ssg-text/lang/*.json) - Umschalten zurueck auf
// reine Konsole: (setq *vfl-wizard-mode* nil) bzw. Befehl VF_WIZARD_AUS.
// Bricht der Nutzer einen Gruppen-Dialog ab, fallen die betroffenen Fragen
// automatisch auf die Einzel-Dialoge (vflw_zahl/vflw_wahl) zurueck.
// ============================================================
// Zahlen-Eingabe (ersetzt getreal/getint). "kopf" zeigt den kompletten
// Original-Prompt-Text (inkl. Default in eckigen Klammern) als Label.
vflw_zahl : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: edit_box {
key = "wert";
label = "";
edit_width = 16;
}
}
ok_cancel;
}
// Mehrfachauswahl (ersetzt eine princ-Menue-Liste + getstring/getint).
// "opts" wird zur Laufzeit per start_list/add_list mit den (bereits
// lokalisierten) Optionstexten befuellt - ein einziger Dialog fuer jede
// Options-Anzahl (2-5), analog zum bestehenden Muster in
// dcl/variofoerderer.dcl und dcl/vfl_edit.dcl.
vflw_wahl : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: popup_list {
key = "opts";
label = "";
width = 50;
}
}
ok_cancel;
}
// ============================================================
// GRUPPEN-DIALOGE - fassen mehrere Fragen, die im Ablauf IMMER
// unmittelbar hintereinander kommen, in EINEM Bildschirm zusammen (statt je
// einem vflw_zahl/vflw_wahl-Dialog pro Frage). Aufgerufen aus den
// vflw-gruppe-*-Funktionen in vf_linienzug.lsp (Abschnitt "GRUPPEN-DIALOGE").
// Punktwahl-Zeile (Button + Anzeige) NUR in vflw_punkt_zahl, wo tatsaechlich
// live gepickt wird: der Button schliesst den Dialog (done_dialog 2), DANACH
// laeuft (getpoint) auf der Kommandozeile - (getpoint) direkt aus einem
// action_tile-Callback heraus (Dialog bleibt offen) funktioniert in BricsCAD
// NICHT (kein Fokuswechsel zur Zeichnung, per Test bestaetigt). Die uebrigen
// Gruppen-Dialoge (Gefaelle, Ziel-Hoehe, Horizontal-Stueck) picken KEINEN
// Punkt - der Endpunkt ist an ihrer Aufrufstelle bereits ueber
// vfl-neue-linie-messen gemessen (nur X/Y, fuer die Segmentlaenge; die Hoehe
// dort ist ein unabhaengiger Zahlenwert) - sie zeigen deshalb bewusst KEINE
// Punkt-Zeile, die faelschlich eine hier moegliche Punktwahl suggerieren
// wuerde.
// ============================================================
// Punkt + EIN Zahlenfeld, mit Punktwahl-Button (siehe oben). Nur fuer
// "Kettenstart" (Startpunkt + Starthoehe, Modus 1) und Modus 2s
// Start-/Endpunkt - "kopf"/"wlabel" werden je Aufruf per set_tile passend
// beschriftet.
vflw_punkt_zahl : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: row {
: button {
key = "pick";
label = "Punkt waehlen...";
fixed_width = true;
width = 18;
}
: text {
key = "pt_anzeige";
label = "(kein Punkt gewaehlt)";
}
}
: text {
key = "wlabel";
label = "";
}
: edit_box {
key = "wert";
label = "";
edit_width = 10;
}
}
ok_cancel;
}
// AS-/ES-Element (Kettenanfang bzw. -ende): Ja/Nein-Toggle + Winkel + Seite
// in einem Bildschirm - "kopf" traegt die konkrete Frage (AS oder ES),
// "setzen" bleibt bewusst generisch beschriftet, damit derselbe Dialog fuer
// beide Faelle passt. Winkel/Seite werden deaktiviert, solange der Toggle
// aus ist.
vflw_as : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: toggle {
key = "setzen";
label = "Ja, setzen";
}
: popup_list {
key = "winkel";
label = "Winkel:";
width = 20;
}
: popup_list {
key = "seite";
label = "Seite:";
width = 20;
}
}
ok_cancel;
}
// Winkel + Seite. Wiederverwendet fuer GF-Bogen (3 Winkel-Optionen) UND
// ES-Element am Kettenende (2 Winkel-Optionen) - die Optionsliste wird pro
// Aufruf zur Laufzeit befuellt, die Feld-Anzahl ist in beiden Faellen gleich.
vflw_winkel_seite : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: popup_list {
key = "winkel";
label = "Winkel:";
width = 20;
}
: popup_list {
key = "seite";
label = "Seite:";
width = 20;
}
}
ok_cancel;
}
// Vario-Kurve: Winkel + Seite + Variante (aussen/innen) in einem Bildschirm.
vflw_variokurve : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: popup_list {
key = "winkel";
label = "Winkel:";
width = 20;
}
: popup_list {
key = "seite";
label = "Seite:";
width = 20;
}
: popup_list {
key = "variante";
label = "Variante:";
width = 20;
}
}
ok_cancel;
}
// Gefaelle festlegen (Linie GF): Modus (Hoehe/Winkel) + EIN Wertfeld, dessen
// Beschriftung sich je nach Modus umschaltet (Action-Tile auf "modus", siehe
// vflw-gruppe-gefaelle-impl in vf_linienzug.lsp). Kein Punkt-Feld - siehe
// Kopfkommentar oben.
vflw_gefaelle : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: popup_list {
key = "modus";
label = "Eingabe als:";
width = 40;
}
: text {
key = "wlabel";
label = "";
}
: edit_box {
key = "wert";
label = "";
edit_width = 10;
}
}
ok_cancel;
}
// Horizontales Stueck: Separator-vor + Separator-nach + "Foerderer-Ende?"
// (3 Optionen) in einem Bildschirm. Kein Punkt-Feld - siehe Kopfkommentar
// oben.
vflw_horizontal : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: toggle {
key = "sepvor";
label = "Separator VOR dem Stueck";
}
: toggle {
key = "sepnach";
label = "Separator NACH dem Stueck";
}
: popup_list {
key = "istende";
label = "Foerderer-Ende:";
width = 45;
}
}
ok_cancel;
}