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
+3 -2
View File
@@ -93,7 +93,7 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`.
| `ssg_dialog.lsp` | - | DCL-Dialog-Vorlagen und Hilfsfunktionen |
| `ssg_layer.lsp` | - | Layer-Verwaltung |
| `KreiselInsert.lsp` | KreiselInsert, KreiselConnect, KreiselRedraw, KreiselQuick, KreiselEdit, KreiselParams, KreiselLabelSetup, KreiselLabelPos, KreiselLabelHoehe, ILS_Eckrad | ILS Kreisel und Eckrad komplett in AutoLISP |
| `VarioFoerderer.lsp` (Wrapper fuer `vf_core.lsp`/`vf_standard.lsp`/`vf_etage.lsp`/`vf_linienzug.lsp`) | FOERDERANLAGE, VARIOFOERDERER_EDIT, VARIOFOERDERER_NACHRUESTEN, Vario_Kette_Merge | Vario-Foerderanlagen Generator (Typen Standard/Etage/Linienzug); Standard- UND Etage-Typ: Werteingabe per DCL-Dialog (`vfs-standard-dialog-ablauf` in vf_standard.lsp bzw. `vfe-etage-dialog-ablauf` in vf_etage.lsp, beide nutzen dieselben Dialoge `vfs-dialog-eingabe-basis`/`vfs-dialog-winkel-verteilung`); Doppelklick auf VF_n-Block ruft VARIOFOERDERER_EDIT, das per SSG_VF_EDIT-XDATA-Marker ("standard"/"etage"/"linienzug") in den passenden Neuaufbau-Zweig dispatcht (`vfe-edit-ent` fuer Etage, `vfl-edit-ent` fuer Linienzug); Altbestand-Bloecke ohne Marker werden abgewiesen. Linienzug (Modus 1, `vf-linienzug-modus`) zeichnet jede interaktive Eingabe in einem Journal auf (`vfl-in-point`/`-string`/`-real`/`-int`) und schreibt es als XDATA auf den fertigen `VF_n`-Block; ein Abbruch (ESC) loescht dadurch nichts mehr, sondern wickelt die bis dahin gebaute Teil-Geometrie ebenso zu einem Block (`vfl-modus-abbruch-sichern`) - sie bleibt stehen und ist sofort per Doppelklick weiter editierbar/fortsetzbar. `vfl-edit-ent` liest das Journal, zeigt die Sektionen ueber einen DCL-Dialog (`vfl-dlg-position`, `dcl/vfl_edit.dcl`) an, kuerzt bei Bedarf auf eine gewaehlte Sektion (stummer Replay der behaltenen Eingaben) und baut danach interaktiv weiter; `Vario_Kette_Merge` (in vf_linienzug.lsp) fuehrt mehrere einzeln gebaute VF_n-Bloecke ab einem gewaehlten Start-Baustein ueber die reale KS_AUS->KS_EIN-Nachbarschaft zu einem Gesamt-Block zusammen (aggregierte Attribute, Luecken-Erkennung) |
| `VarioFoerderer.lsp` (Wrapper fuer `vf_core.lsp`/`vf_standard.lsp`/`vf_etage.lsp`/`vf_linienzug.lsp`) | FOERDERANLAGE, VARIOFOERDERER_EDIT, VARIOFOERDERER_NACHRUESTEN, Vario_Kette_Merge, VF_WIZARD_AN, VF_WIZARD_AUS | Vario-Foerderanlagen Generator (Typen Standard/Etage/Linienzug); Standard- UND Etage-Typ: Werteingabe per DCL-Dialog (`vfs-standard-dialog-ablauf` in vf_standard.lsp bzw. `vfe-etage-dialog-ablauf` in vf_etage.lsp, beide nutzen dieselben Dialoge `vfs-dialog-eingabe-basis`/`vfs-dialog-winkel-verteilung`); Doppelklick auf VF_n-Block ruft VARIOFOERDERER_EDIT, das per SSG_VF_EDIT-XDATA-Marker ("standard"/"etage"/"linienzug") in den passenden Neuaufbau-Zweig dispatcht (`vfe-edit-ent` fuer Etage, `vfl-edit-ent` fuer Linienzug); Altbestand-Bloecke ohne Marker werden abgewiesen. Linienzug (Modus 1, `vf-linienzug-modus`) zeichnet jede interaktive Eingabe in einem Journal auf (`vfl-in-point`/`-string`/`-real`/`-int`) und schreibt es als XDATA auf den fertigen `VF_n`-Block; ein Abbruch (ESC) loescht dadurch nichts mehr, sondern wickelt die bis dahin gebaute Teil-Geometrie ebenso zu einem Block (`vfl-modus-abbruch-sichern`) - sie bleibt stehen und ist sofort per Doppelklick weiter editierbar/fortsetzbar. Der komplette Linienzug-Hauptstrang (Menue-Fragen von AS-Element bis Kettenende, inkl. GF-Bogen/Vario-Kurve/VF-Einheit-Fortsetzung) laeuft per Default ueber DCL-Dialoge statt Konsole (`*vfl-wizard-mode*`, Befehle VF_WIZARD_AN/VF_WIZARD_AUS): `vfl-in-string`/`-int`/`-real` zeigen bei aktivem Wizard-Modus generische Dialoge aus `dcl/vf_linienzug_wizard.dcl` (Zahl-Eingabe bzw. Mehrfachauswahl aus `vfl-menu`/`vfl-menu-int`) statt `getstring`/`getint`/`getreal` aufzurufen; die ORIGINALEN Konsolen-Fragen (princ + get*, de/en ueber ssg-text) bleiben unveraendert im Code (Fallback bei Fehlern via `vl-catch-all-apply`, siehe `doc/variofoerderer.md`). `vfl-edit-ent` liest das Journal, zeigt die Sektionen ueber einen DCL-Dialog (`vfl-dlg-position`, `dcl/vfl_edit.dcl`) an, kuerzt bei Bedarf auf eine gewaehlte Sektion (stummer Replay der behaltenen Eingaben, umgeht den Wizard-Zweig komplett) und baut danach interaktiv weiter. Linienzug Modus 2 (Pfad+Zielhoehe-Solver, `vf-linienzug-modus2`) nutzt dieselben Wrapper PLUS die neue Objektauswahl-Wrapper-Funktion `vfl-in-selection` (Pfad-Objekte als stabile Entity-Handles journalisiert, neue Journal-Art `"OBJS"`) und schreibt sein Journal unter dem eigenen XDATA-Marker `"linienzug2"`; Doppelklick baut hier NICHT abschnittsweise, sondern per vollem Reset 1:1 aus dem Journal neu auf (`vfl-edit-ent2`, dispatcht aus `vfl-edit-ent` per Marker) - Modus 3 (Vorwaerts-Nachbau) bleibt bewusst reine Konsole (im Code selbst als Legacy/"wird umgebaut" markiert). `Vario_Kette_Merge` (in vf_linienzug.lsp) fuehrt mehrere einzeln gebaute VF_n-Bloecke ab einem gewaehlten Start-Baustein ueber die reale KS_AUS->KS_EIN-Nachbarschaft zu einem Gesamt-Block zusammen (aggregierte Attribute, Luecken-Erkennung). Details/Entscheidungsbaum: `doc/variofoerderer.md` |
| `Gefaellestrecke.lsp` | GEFAELLESTRECKE, GEFAELLESTRECKE_EDIT | Gefaelle-Foerderanlage (AUS -> Staustrecke skaliert -> Separator -> EIN); Modus 1 per DCL-Dialog (Einfuegehoehe, Element-Winkel 30/90); Doppelklick auf GF_n-Block ruft GEFAELLESTRECKE_EDIT (Dialog vorbelegt, Neuaufbau) |
| `export.lsp` | EXPORTSIVAS, EXPORTCSV, OMNI_UPDATE_ATTRIBS | JSON-Sammlung und Python-Export (Omniflo-Merkmale/Sum-Zeile via lib/export_csv.py) |
| `OmniModulInsert.lsp` | OMNI_LOAD, OMNI_APB_*, OMNI_W*_*, OMNI_AP60/AP110, OMNI_TEF_*, OMNI_TV_*, OMNI_APBW_*, OMNI_EDIT | Omniflo-Komponenten: Boegen, Weichen, Verbinder, Transferwagen, Edit-Dialog |
@@ -114,13 +114,14 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`.
| `tro_insert.dcl` | TRO_INSERT (Tro_Edit.lsp) |
| `tro_edit.dcl` | TRO_EDIT (Tro_Edit.lsp) |
| `vfl_edit.dcl` | Linienzug-Editieren/Fortsetzen (vf_linienzug.lsp, `vfl-dlg-position`, aufgerufen aus `vfl-edit-ent`) |
| `vf_linienzug_wizard.dcl` | Linienzug Modus 1 Assistent: zwei generische Einzel-Dialoge (Zahl-Eingabe, Mehrfachauswahl; `vflw-zahl`/`vflw-wahl`, aufgerufen aus `vfl-in-real`/`vfl-in-string`/`vfl-in-int` bei aktivem `*vfl-wizard-mode*`) PLUS sieben Gruppen-Dialoge, die mehrere immer unmittelbar aufeinanderfolgende Fragen in einem Bildschirm zusammenfassen (Kettenstart, AS-Element, GF-Bogen, ES-Element, Vario-Kurve, Gefaelle festlegen, Ziel-Hoehe, Horizontales Stueck - inkl. Punktwahl-Button mit X/Y/Z-Anzeige; `vflw-gruppe-*-impl` in vf_linienzug.lsp fuellen dafuer vorab eine kleine Pending-Queue `*vflw-pending*`, die einzelnen `vfl-in-*`-Aufrufe bleiben dabei unveraendert). Details: `doc/variofoerderer.md` |
## Menue (SSG_LIB.mnu + SSG_LIB.mnl)
- `SSG_LIB.mnu` - Menuedefinition mit Lazy-Loading (`(ssg-ensure "Modul") Befehl`)
- `SSG_LIB.mnl` - Automatisch geladen mit dem Menue, definiert `ssg-ensure` Loader
- `***MENUGROUP=SSG_LIB` - Menuegruppenname
- `***POP1` - Hauptmenue (ILS, Omniflo, Export, Konfiguration)
- `***POP1` - Hauptmenue (ILS, Omniflo, SPS [TRO, Connections], Export, Konfiguration)
- `***DOUBLECLICK` - Doppelklick auf INSERT-Bloecke ruft SSG_BLOCKEDIT auf
- `***POP501` - Rechtsklick-Kontextmenue (KreiselEdit, OMNI_EDIT, SSG_BLOCKEDIT)
+24 -5
View File
@@ -764,11 +764,30 @@
;; 30/90-Wahl fuer ein AS/ES-Element. Rueckgabe: "30" oder "90" (Vorgabe 90).
;; headerkey: i18n-Key fuer die Kopfzeile ("vf-winkel-aus-header" oder
;; "vf-winkel-ein-header"). Rueckgabe: "30" oder "90" (Default 90).
(defun vf-frage-element-winkel (headerkey)
(princ (ssg-text headerkey))
(princ (ssg-text "vf-winkel-90"))
(princ (ssg-text "vf-winkel-30"))
(if (= (getstring (ssg-text "prompt-wahl-1-2")) "2") "30" "90"))
;; Wizard: nutzt vflw-wahl (dcl/vf_linienzug_wizard.dcl, definiert in
;; vf_linienzug.lsp) falls dieses Modul geladen und *vfl-wizard-mode* aktiv
;; ist - sonst (oder bei jedem Fehler) unveraendert die Konsolen-Fragen
;; (princ + getstring, de/en ueber ssg-text). Gemeinsam genutzt von
;; Gefaellestrecke.lsp UND vf_linienzug.lsp.
(defun vf-frage-element-winkel (headerkey / antwort)
(if (and (boundp '*vfl-wizard-mode*) *vfl-wizard-mode*
(car (atoms-family 1 '("VFLW-WAHL"))))
(progn
(setq antwort
(vl-catch-all-apply 'vflw-wahl
(list (ssg-text headerkey)
(list (ssg-text "vf-winkel-90") (ssg-text "vf-winkel-30")) 1)))
(if (or (vl-catch-all-error-p antwort) (null antwort) (= antwort ""))
(setq antwort "1"))
)
(progn
(princ (ssg-text headerkey))
(princ (ssg-text "vf-winkel-90"))
(princ (ssg-text "vf-winkel-30"))
(setq antwort (getstring (ssg-text "prompt-wahl-1-2")))
)
)
(if (= antwort "2") "30" "90"))
;; AS-/ES-Masse-Globals (aus-dx/dy/dz bzw. ein-dx/dy/dz) fuer die gewaehlte
;; Winkel-/Seiten-Variante neu setzen (fuer berechne-alle-winkel, GF-Winkel,
+747 -84
View File
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -1197,10 +1197,11 @@
;; Marker (Linienzug/Altbestand) werden abgewiesen.
(if (= (car xd) "etage")
(progn (vfe-edit-ent ent) (ssg-end) (exit)))
;; Linienzug-Bloecke tragen als Marker "linienzug" + serialisiertes Eingabe-
;; Journal (vf_linienzug.lsp). Der Edit-Zweig laesst Glieder zuruecknehmen und
;; baut die Kette per Replay neu auf.
(if (= (car xd) "linienzug")
;; Linienzug-Bloecke tragen als Marker "linienzug" (Modus 1) oder
;; "linienzug2" (Modus 2) + serialisiertes Eingabe-Journal (vf_linienzug.lsp).
;; vfl-edit-ent liest den Marker selbst erneut und dispatcht intern weiter
;; (Modus 1: Glieder zuruecknehmen + Replay; Modus 2: voller Reset).
(if (member (car xd) '("linienzug" "linienzug2"))
(progn (vfl-edit-ent ent) (ssg-end) (exit)))
(if (/= (car xd) "standard")
(progn (alert (ssg-textf "vfs-edit-keine-xdata" (list bname))) (ssg-end) (exit)))
+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;
}
+500
View File
@@ -0,0 +1,500 @@
# VarioFoerderer / Gefaellestrecke — Eingabe-Inventar und Ablauf
Bestandsaufnahme aller Eingabemoeglichkeiten der Befehle `FOERDERANLAGE`
(`c:VarioFoerderer`, Typen Standard/Etage/Linienzug) und `GEFAELLESTRECKE`
(`c:GEFAELLESTRECKE`) — als Grundlage fuer eine GUI-Neugestaltung je Gruppe.
Stand: Code in `Lisp/vf_core.lsp`, `vf_standard.lsp`, `vf_etage.lsp`,
`vf_linienzug.lsp`, `Gefaellestrecke.lsp` und die zugehoerigen DCL-Dialoge
(`dcl/variofoerderer.dcl`, `dcl/gefaellestrecke.dcl`, `dcl/vfl_edit.dcl`,
`dcl/vf_linienzug_wizard.dcl`).
## Wizard-Status (Umsetzung des Entscheidungsbaums, Abschnitt 10)
Standard und Etage waren bereits DCL-Dialoge (Abschnitte 2-3). Der komplette
Linienzug-Hauptstrang (Blocke 31-46 in Abschnitt 10) laeuft jetzt ebenfalls
ueber DCL-Dialoge statt Konsole:
`dcl/vf_linienzug_wizard.dcl` stellt zwei generische Dialoge (Zahl-Eingabe,
Mehrfachauswahl) bereit, die von JEDER Konsolen-Frage in `vf_linienzug.lsp`
wiederverwendet werden (siehe dortiger Abschnitt "WIZARD-EINGABE"). Die
Original-Konsolen-Fragen (princ + getstring/getreal/getint, de/en ueber
`ssg-text`) bleiben unveraendert im Code stehen und sind die Grundlage der
Dialoge (Prompt-Text = Dialog-Kopfzeile, Menue-Optionen = Popup-Liste) - bei
Bedarf per Befehl `VF_WIZARD_AUS` (zurueck: `VF_WIZARD_AN`) sofort wieder
reine Konsole, ohne Codeaenderung. Journal-Replay (Editieren bestehender
Ketten ueber Doppelklick, `vfl-edit-ent`) ist davon unberuehrt: es liefert
seine Werte aus dem gespeicherten Journal, bevor der Wizard-Zweig ueberhaupt
erreicht wird. Jeder Wizard-Dialogaufruf ist zusaetzlich per
`vl-catch-all-apply` abgesichert und faellt bei jedem Fehler (fehlendes DCL,
falscher `DXFM_DCL`-Pfad etc.) automatisch auf die Konsolen-Frage zurueck.
Linienzug Modus 2 (Pfad+Zielhoehe-Solver, Blocke 50-57) laeuft seit Kurzem
ebenfalls ueber `vfl-in-point`/`-real`/`-string`/`-value` UND eine neue
Objektauswahl-Wrapper-Funktion `vfl-in-selection` (fuer die Pfad-Objekte,
Block 50) - dadurch schreibt auch Modus 2 jetzt ein Eingabe-Journal als XDATA
(Marker `"linienzug2"`) und reagiert auf Doppelklick. Anders als Modus 1
NICHT abschnittsweise editierbar (keine Glied-Marker in der Klassifizierungs-
Schleife) - Doppelklick baut die Kette stattdessen 1:1 aus dem gespeicherten
Journal neu auf ("voller Reset", `vfl-edit-ent2`), danach normal weiter
bearbeitbar/loeschbar. Die Pfad-Objektauswahl wird dabei als Liste stabiler
Entity-Handles gespeichert (neue Journal-Art `"OBJS"`) und beim Reset wieder
aufgeloest; wurden die urspruenglichen Linien/Boegen zwischenzeitlich
geloescht, meldet das der Reset klar statt eine unvollstaendige Kette zu
bauen. `vfl-in-selection` zeigt bewusst KEINEN Wizard-Dialog (Objektauswahl
braucht wie Punktwahl die Zeichnung).
**Ansicht-Refresh vor jedem Folge-Punkt** (Modus 1): `vfl-neue-linie-messen` -
die einzige Stelle, ueber die JEDE Endpunkt-Abfrage fuer ein neues Glied
laeuft (Haupt-Menue UND VF-Einheit-Fortsetzung) - schaltet vor dem Pick per
`vfl-view-refresh` auf Grundriss-Ansicht (`_PLAN` `_World`) und zoomt auf
alles Sichtbare (`_ZOOM` `_Extents`), damit das zuletzt gebaute Stueck immer
sichtbar und der naechste Punkt treffsicher anwaehlbar ist. Aendert nur die
Ansicht, nicht das aktive BKS; rein kosmetisch und per `vl-catch-all-apply`
abgesichert.
Nicht umgestellt (bleiben bewusst reine Konsole, siehe Abschnitt 6): Modus 3
(Vorwaerts-Nachbau, Legacy - im Code selbst als "wird umgebaut" markiert,
Aufwand fuer bald ersetzten Code waere nicht sinnvoll) sowie die
Gefaellestrecke-Konsolenmodi 2/3. Punktwahl (`getpoint`) bleibt ausserhalb
von Gruppen-Dialogen unveraendert Konsole/Zeichnung - eine Maus-Punktauswahl
braucht keinen eigenen Dialog, das BricsCAD-Prompt an der Eingabezeile
leistet bereits die vom Nutzer gewuenschte "Punkt waehlen"-Statusmeldung.
### Gruppen-Dialoge (mehrere Fragen in einem Bildschirm)
Fragen, die im Ablauf IMMER unmittelbar hintereinander kommen (kein
Zwischenschritt, keine Verzweigung dazwischen), werden nicht mehr einzeln
nacheinander abgefragt, sondern in EINEM Dialog gemeinsam erfasst. Sechs
Gruppen-Dialoge PLUS die beiden generischen Einzel-Dialoge (siehe
`dcl/vf_linienzug_wizard.dcl`, Abschnitte "GRUPPEN-DIALOGE"/oben):
| Gruppe | Felder in einem Bildschirm | Ersetzt (Einzel-Screens) |
|---|---|---|
| Kettenstart | Punkt (Button) + Starthoehe | Block 31 |
| AS-Element | Ja/Nein-Toggle + Winkel + Seite (Winkel/Seite deaktiviert, solange Toggle aus) | Block 32 (+33 bei Ja) |
| GF-Bogen | Winkel(30/60/90) + Seite | Block 35 |
| ES-Element (Kettenende) | Winkel(30/90) + Seite | Block 45 |
| Vario-Kurve | Winkel(90/60/30) + Seite + Variante(aussen/innen) | Teil von Block 46 |
| Gefaelle festlegen | Modus(Hoehe/Winkel) + EIN Wertfeld (Beschriftung wechselt mit dem Modus) | Teil von Block 36 |
| Ziel-Hoehe | Zielhoehe (generischer `vflw_zahl`-Dialog, an 4 Aufrufstellen wiederverwendet: Block 36 GF-Wechsel, 37, 41/vfl-body-abschluss, 42) | Je 1 Screen |
| Horizontales Stueck | Separator VOR + Separator NACH + Foerderer-Ende (3 Optionen) | Teil von Block 38 |
**Punktwahl-Button nur bei "Kettenstart"** (bzw. bei Modus 2s Start-/
Endpunkt): `(getpoint)` direkt aus einem offenen `action_tile`-Callback
heraus funktioniert in BricsCAD NICHT (kein Fokuswechsel zur Zeichnung, per
Test bestaetigt) - stattdessen schliesst der Button den Dialog
(`done_dialog 2`), `getpoint` laeuft danach ganz normal auf der
Kommandozeile, der Dialog wird mit dem Ergebnis neu geoeffnet
(`vflw-gruppe-punkt-hoehe-impl`, `(while (not fertig) ...)`-Schleife um
`new_dialog`/`start_dialog`). Die uebrigen Gruppen-Dialoge (Gefaelle,
Ziel-Hoehe, Horizontal-Stueck) zeigen bewusst KEINEN Punkt-Button: ihr
Endpunkt (nur X/Y, fuer die Segmentlaenge) ist an der jeweiligen
Aufrufstelle bereits VOR der Gruppe ueber `vfl-neue-linie-messen` gepickt -
dessen Z wird nirgends verwendet, die dort abgefragte Hoehe ist ein davon
unabhaengiger Zahlenwert (siehe Kommentar bei `vfl-neue-linie-messen`).
Technisch: die zugrunde liegende Aufruf-Reihenfolge in `vf-linienzug-modus`/
`vfl-*` bleibt woertlich unveraendert (weiterhin ein `vfl-in-point`/`-string`/
`-real`/`-int`/`-value`-Aufruf pro Wert, Journal-Aufzeichnung inklusive) - ein
Gruppen-Dialog fuellt vor dieser Sequenz nur eine kleine Pending-Queue
(`*vflw-pending*`), aus der jeder einzelne Aufruf transparent seinen Wert
zieht, statt live zu fragen. Bricht der Nutzer einen Gruppen-Dialog ab,
bleibt die Queue leer - die betroffenen Fragen fallen dann automatisch auf
die bestehenden Einzel-Dialoge (`vflw_zahl`/`vflw_wahl`) zurueck, kein
Sonderfall noetig.
Steuerelement-Kuerzel in den Tabellen:
| Kuerzel | Bedeutung |
|---|---|
| Dropdown | Combobox/Popup-Liste mit fester Werteliste |
| Zahl | Zahlenfeld (mm oder Grad) |
| Text | Freitextfeld |
| Toggle | Checkbox/Toggle |
| Punktwahl | Mausklick in der Zeichnung (`getpoint`/`entsel`) — laesst sich nicht durch ein reines Formularfeld ersetzen |
| Button | Aktions-Button innerhalb eines Dialogs |
| Legacy | Nur noch ueber die Kommandozeile erreichbar, kein DCL-Dialog |
---
## 1. Anlagen-Typ-Wahl (`FOERDERANLAGE`)
`c:VarioFoerderer` fragt zuerst den Typ ab, sofern keine Vorauswahl
(`*vf-vorauswahl-typ*`) gesetzt ist.
| Feld | Steuerelement | Werte | Default |
|---|---|---|---|
| Typ | Dropdown | Standard / Etage / Linienzug | Standard |
---
## 2. VF Standard (`dcl/variofoerderer.dcl`)
Zwei Dialoge nacheinander: erst Geometrie/Ausrichtung/Geruest (Dialog 1), danach
Winkel und Staustrecken-Verteilung (Dialog 2) — Dialog 2 wird erst nach der
Winkelberechnung befuellt, da seine Optionsliste von Dialog 1 abhaengt.
### Dialog 1 — Basis (`variofoerderer_basis`)
| Feld | Tile-Key | Steuerelement | Werte | Default |
|---|---|---|---|---|
| Horiz. Distanz DeltaL | `deltal` | Zahl (mm) | frei | 15000 |
| Hoehenunterschied DeltaH | `deltah` | Zahl (mm) | frei | 3000 |
| Foerderrichtung | `richtung` | Dropdown | Auf / Ab | Auf |
| Einfuegehoehe | `einfuegehoehe` | Zahl (mm) | frei | 0 |
| Fahrtrichtung | `fahrtrichtung` | Dropdown | 0 Grad (X+, Ost) / 90 Grad (Y+, Nord) / 180 Grad (X-, West) / 270 Grad (Y-, Sued) | 0 Grad |
| Seite | `seite` | Dropdown | Rechts / Links | Rechts |
| Motorseite | `motorseite` | Dropdown | Rechts / Links | Rechts |
| Darstellung | `dimension` | Dropdown | 3D / 2D | aktueller Modus |
| Geruest Einzelmodul | `geruest_einzelmodul` | Toggle | an / aus | an |
| Geruestoption | `geruest_typ` | Dropdown | siehe [Geruestoptionen](#9-wiederverwendete-bausteine) (4 Werte) | Schoenenberger Geruest |
### Dialog 2 — Winkel/Verteilung (`variofoerderer_winkel`)
| Feld | Tile-Key | Steuerelement | Werte | Default |
|---|---|---|---|---|
| Winkel | `winkel` | Dropdown | dynamisch berechnete, geometrisch gueltige Varianten (z.B. 3/6/.../horizontal), je mit L_GF/L_VF-Vorschau | kleinster gueltiger Winkel |
| 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".
---
## 3. VF Etage
Nutzt exakt dieselben Dialoge wie VF Standard (`variofoerderer_basis` und
`variofoerderer_winkel`, siehe Abschnitt 2) — nur die interne
Geometrieberechnung unterscheidet sich (Etagen-Boegen statt gerader AS/ES-
Elemente). Vorgelagert:
| Feld | Steuerelement | Werte | Default |
|---|---|---|---|
| Startpunkt (X/Y) | Punktwahl | Klick in der Zeichnung | 0,0,0 |
Die Hoehe (Z) des Startpunkts kommt wie bei Standard aus dem Feld
"Einfuegehoehe" von Dialog 1 (`vfe-etage-dialog-ablauf`,
`Lisp/vf_etage.lsp:894`).
---
## 4. Gefaellestrecke (GF) (`dcl/gefaellestrecke.dcl`)
Ein Dialog fuer den manuellen Modus 1 (analog Kreisel-Dialog).
### Dialog — Gefaellestrecke (`gefaellestrecke`)
| Feld | Tile-Key | Steuerelement | Werte | Default |
|---|---|---|---|---|
| Abstand DeltaL | `deltal` | Zahl (mm) | frei | - |
| Einfuegehoehe | `einfuegehoehe` | Zahl (mm) | frei | - |
| Gefaellewinkel | `winkel` | Zahl (Grad) | 0 < Winkel <= 3 Grad | - |
| Fahrtrichtung | `fahrtrichtung` | Dropdown | 0 / 90 / 180 / 270 Grad | 0 Grad |
| Darstellung | `dimension` | Dropdown | 3D / 2D | aktueller Modus |
| AUS-Element — Winkel | `aus_winkel` | Dropdown | 90 Grad / 30 Grad | 90 Grad |
| AUS-Element — Seite | `aus_seite` | Dropdown | Links / Rechts | Links |
| EIN-Element — Winkel | `ein_winkel` | Dropdown | 90 Grad / 30 Grad | 90 Grad |
| EIN-Element — Seite | `ein_seite` | Dropdown | Links / Rechts | Links |
| Geruest Einzelmodul | `geruest_einzelmodul` | Toggle | an / aus | an |
| Geruestoption | `geruest_typ` | Dropdown | 4 Werte, siehe [unten](#9-wiederverwendete-bausteine) | Schoenenberger Geruest |
| VarioFoerderer daneben bauen | `build_vf` | Button | baut parallel 2000 mm VF, gegenlaeufig, steigend — keine Zusatzwerte | - |
Das Winkel/Seite-Paar (`aus_winkel`/`aus_seite`, `ein_winkel`/`ein_seite`)
taucht identisch auch im Linienzug als AS-/ES-Element-Baustein auf (siehe
Abschnitt 5.2).
Zusaetzlich als Legacy-Konsole vorhanden (kein Dialog):
- **Modus 2** — Startpunkt/Endpunkt waehlen: 2x Punktwahl + Gefaellewinkel
(Zahl, aus DeltaH automatisch vorgeschlagen).
- **Modus 3** — Bestehenden Linienzug (Linien/Boegen) auswaehlen: Objektauswahl,
Winkel wird aus der Geometrie vorgeschlagen und kann per j/n bestaetigt oder
ueberschrieben werden.
---
## 5. VF Linienzug — Kette (Modus 1, frei zeichnend)
Kein Formular, sondern eine Serie von Konsolen-Abfragen, verzahnt mit
Punktwahl in der Zeichnung — der Nutzer baut die Kette Segment fuer Segment.
Enthaelt die Option "VF mit horizontalem Anfang". Fuer eine GUI heisst das: ein
Assistent/Wizard mit Zeichnungs-Interaktion, kein einmaliges Werteformular.
### 5.1 Ablauf
1. **Start**: Startpunkt der Kette (Punktwahl), Starthoehe (Zahl, Default = Z
des Punkts).
2. **AS-Element setzen?** Ja/Nein — bei Ja: Winkel (30/90 Grad) + Seite
(links/rechts), siehe Baustein 5.2.
3. **Naechstes Element waehlen** (wiederholt sich pro Segment), Menue mit bis
zu 5 Optionen:
- GF-Bogen (horizontale Kurve) -> Winkel 30/60/90 Grad + Seite links/rechts
- Neue Linie: GF (Gefaellestrecke) -> Endpunkt (Punktwahl), dann Zielhoehe
*oder* Neigungswinkel (siehe Baustein 5.2)
- Neue Linie: Ab/Auf VF (VarioFoerderer-Einheit) -> Endpunkt (Punktwahl) +
Zielhoehe (Zahl)
- Neue VF mit horizontalem Anfang (Horizontal-Stueck) -> Endpunkt
(Punktwahl) entlang der aktuellen Fahrtrichtung, danach Separator-vor/
-nach-Fragen
- Neue Linie BIS Kettenende (danach automatisch Separator + ES-Element)
4. **Innerhalb einer VF-Einheit** (nach dem ersten Koerper) wird pro
weiterem Teilstueck erneut gefragt: *Ist der Endpunkt der Foerderer?*
- Ja, nur Motorstation
- Nein, weiterbauen -> als naechstes: horizontaler Foerderer / Vario-Kurve
(30/60/90 Grad + Seite + aussen/innen) / Auf-Ab-Foerderer
- Ja, Motorstation + Kettenende -> ES-Element setzen? Ja/Nein
5. **Separator-Fragen** (bei horizontalem Stueck): zusaetzlichen Separator
VOR? Ja/Nein · NACH? Ja/Nein.
6. **Ist das Kettenende?** nach jedem GF-Segment: Ja (ES-Element) / Ja (ohne
ES) / Nein, weiterbauen.
7. **Kettenende**: ES-Element setzen? Bei Ja: Winkel 30/90 Grad + Seite
links/rechts (gleicher Baustein wie AS-Element).
Groessenlimits, die als Validierung statt als Eingabe wirken: VF-Einheit
< 1000 mm wird abgelehnt ("Umlenk + Motor"), Gesamtlaenge > 25 m wird
abgelehnt, GF-Neigung > 3 Grad wird abgelehnt bzw. auf 3 Grad begrenzt.
### 5.2 Wiederkehrende Bausteine
Diese vier Eingabegruppen tauchen mehrfach in der Kette auf (und teils auch in
GF/Standard) — lohnt sich als eigene GUI-Komponente.
**AS-/ES-Element**
| Feld | Steuerelement | Werte |
|---|---|---|
| Winkel | Dropdown | 90 Grad / 30 Grad |
| Seite | Dropdown | links / rechts |
**GF-Bogen**
| Feld | Steuerelement | Werte |
|---|---|---|
| Winkel | Dropdown | 30 / 60 / 90 Grad |
| Seite | Dropdown | links / rechts |
**Vario-Kurve**
| Feld | Steuerelement | Werte |
|---|---|---|
| Winkel | Dropdown | 90 / 60 / 30 Grad |
| Seite | Dropdown | links / rechts |
| Variante | Dropdown | Aussen / Innen |
**Gefaelle festlegen (Linie "GF")**
| Feld | Steuerelement | Werte |
|---|---|---|
| Endpunkt | Punktwahl | entlang Fahrtrichtung |
| Modus | Dropdown | Gegebene Zielhoehe / Neigungswinkel eingeben |
| -> Zielhoehe | Zahl (mm) | bei Modus "Zielhoehe" |
| -> Neigungswinkel | Zahl (Grad) | 0 < Winkel <= 3 Grad, bei Modus "Winkel" |
---
## 6. VF Linienzug — Modus 2 und 3 (fortgeschritten / Legacy)
Zwei alternative Einstiege in `c:VarioFoerderer` -> Typ "Linienzug". Beide
arbeiten auf bereits in der Zeichnung vorhandener Geometrie statt auf freier
Klick-Eingabe — fuer eine GUI eher Import/Solver-Werkzeuge als klassische
Formulare.
### Modus 2 — Pfad + Zielhoehe (Solver)
| Feld | Steuerelement | Werte |
|---|---|---|
| Pfad-Objekte | Objektauswahl | Linien + Boegen der geplanten Trasse |
| Startpunkt + Hoehe | Punktwahl + Zahl | hoehere Seite der Kette |
| Endpunkt + Zielhoehe | Punktwahl + Zahl | Ziel der Kette |
| Je gerades Segment: Typ | Dropdown | GF (Eingabe-Winkel) / VF (Bruecke) |
| -> GF-Neigung | Zahl (Grad) | Default 3 Grad, Maximum 3 Grad |
| Je Bogen-Segment: Typ | Dropdown | GF-Bogen / Vario-Kurve |
| -> Vario-Kurve-Variante | Dropdown | Aussen / Innen |
| GF-Verteilung | Dropdown | alles am Einlauf (GF1) / 1/2 GF1 + 1/2 GF2 |
### Modus 3 — Vorwaerts-Nachbau (Legacy, wird umgebaut)
| Feld | Steuerelement | Werte |
|---|---|---|
| Startpunkt (3D) | Punktwahl | KS_EIN AUS-Element / Kettenanfang |
| Gefaellewinkel | Zahl (Grad) | wird auch aus 2 gewaehlten 3D-Punkten vorgeschlagen |
| AUS-Element Seite | Dropdown | links / rechts |
| Separator vor EIN? | Dropdown | Ja/Nein |
| Einfuegen bestaetigen | Dropdown | Ja/Nein |
---
## 7. Editieren / Fortsetzen / Zusammenfuegen
**Linienzug editieren** (`dcl/vfl_edit.dcl`)
| Feld | Steuerelement | Werte |
|---|---|---|
| Zuruecksetzen zu Sektion | Dropdown | jedes Journal-Glied der Kette (GF-Bogen, GF, VF, horizontal-VF, Linie bis Ende, offen) |
Kuerzt die Kette stumm auf die gewaehlte Sektion, danach laeuft der normale
interaktive Linienzug-Ablauf weiter (Abschnitt 5).
**Vario_Kette_Merge**
| Feld | Steuerelement | Werte |
|---|---|---|
| Start-Block der Kette | Objektauswahl | ein VF_n/GF_n-Block, ab dem ueber KS_AUS->KS_EIN-Nachbarschaft zusammengefuehrt wird |
Einzige Eingabe — Rest laeuft automatisch (Attribute aggregiert, Luecken
werden gemeldet).
---
## 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:
**3D-Linie auswaehlen**
| Feld | Steuerelement | Werte |
|---|---|---|
| Linie/Polylinie | Objektauswahl | liefert DeltaL, DeltaH, Fahrtrichtung automatisch aus der Geometrie |
**Werte manuell eingeben**
| Feld | Steuerelement | Werte |
|---|---|---|
| DeltaL / DeltaH | Zahl (mm) | Defaults 15000 / 3000 |
| Foerderrichtung | Dropdown | Auf/Ab |
| Startpunkt | Punktwahl | - |
| Fahrtrichtung | Dropdown | 0 / 90 / 180 / 270 Grad |
Danach identisch fuer beide Untermodi: Seite (rechts/links) -> Winkelwahl,
falls mehrere gueltig sind (nummerierte Liste) -> Staustrecken-Verteilung (4
Optionen, bei "Eigene Werte" zusaetzlich L_GF1 als Zahl) -> Bestaetigung
"Einfuegen? Ja/Nein".
---
## 9. Wiederverwendete Bausteine
**Geruestoptionen** (`*ssg-geruest-optionen*` in `ssg_core.lsp`, auch bei
Kreisel/Eckrad verwendet)
| Feld | Steuerelement | Werte | Default |
|---|---|---|---|
| Geruest fuer Einzelmodul | Toggle | an / aus | an |
| Geruestoption | Dropdown | IPE-Geruest abgestuft / Obergeruest oben / Schoenenberger Geruest / nur Doppelrohrtraeger | Schoenenberger Geruest |
---
## 10. Entscheidungsbaum
Jeder Block ist ein moeglicher Wizard-Screen. "Weiter mit" listet die
Blocknummer(n), zu denen von hier aus verzweigt werden kann. Rueckverweise auf
eine bereits genannte, kleinere Nummer (z.B. 34 -> 35 -> 34) sind Schleifen
(iteratives Weiterbauen), keine Fehler in der Nummerierung.
### Baum A — Befehl `FOERDERANLAGE`
| Nr | Block | Eingaben | Weiter mit |
|---|---|---|---|
| 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 |
| 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 |
| 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 |
| 33 | AS-Element | Winkel 30/90, Seite | 34 |
| 34 | Naechstes Element waehlen | 5 Optionen | 35, 36, 37, 38, 39 |
| 35 | GF-Bogen | Winkel 30/60/90, Seite | 34 (Schleife) |
| 36 | GF | Endpunkt, Zielhoehe/Neigungswinkel | 41 |
| 37 | Auf/Ab-VF starten | Endpunkt, Zielhoehe | 42 |
| 38 | Horizontal-VF starten | Endpunkt (+ Separator vor/nach inline) | 42 |
| 39 | Bis Kettenende | Endpunkt | 45 |
| 41 | Kettenende-Frage (nach GF) | Ja+ES / Ja ohne ES / Nein | 45, ENDE, 34 (Schleife) |
| 42 | Ist Endpunkt der Foerderer? | nur Motor / weiterbauen / +Kettenende | 34, 46, 45 |
| 45 | ES-Element setzen | Winkel 30/90, Seite | ENDE |
| 46 | Sub-Element in VF-Einheit | horizontal / Vario-Kurve / Auf-Ab | 42 (Schleife) |
| 50 | Pfad-Objekte waehlen | Linien + Boegen | 51 |
| 51 | Startpunkt + Starthoehe | Punktwahl + Zahl | 52 |
| 52 | Endpunkt + Zielhoehe | Punktwahl + Zahl | 53 |
| 53 | je gerades Segment: Typ | GF/VF (+GF-Neigung) | 54 |
| 54 | je Bogen-Segment: Typ | GF-Bogen/Vario-Kurve (+aussen/innen) | 56 |
| 56 | GF-Verteilung | 2 Optionen | 57 |
| 57 | Bau (automatisch) | - | ENDE |
| 55 | Startpunkt | Punktwahl | 58 |
| 58 | Gefaellewinkel | Zahl, Vorschlag aus 2 Punkten | 59 |
| 59 | AUS-Element Seite | links/rechts | 60 |
| 60 | Separator vor EIN? | Ja/Nein | 61 |
| 61 | Bestaetigung "Einfuegen?" | Ja/Nein | ENDE |
### Baum B — Befehl `GEFAELLESTRECKE`
| Nr | Block | Eingaben | Weiter mit |
|---|---|---|---|
| 40 | GF-Modus | Dialog / Start+Endpunkt / Bestehenden Linienzug | 70, 75, 80 |
| 70 | Dialog "Gefaellestrecke" | DeltaL, Hoehe, Winkel, AUS/EIN Winkel+Seite, Geruest, Button "VF daneben bauen" | 71 |
| 71 | Bau (automatisch) | - | ENDE |
| 75 | Startpunkt | Punktwahl | 76 |
| 76 | Endpunkt | Punktwahl | 77 |
| 77 | AUS-Element | Winkel/Seite | 78 |
| 78 | EIN-Element | Winkel/Seite | 79 |
| 79 | Bestaetigung "Einfuegen?" | Ja/Nein | ENDE |
| 80 | Pfad-Objekte waehlen | Objektauswahl | 81 |
| 81 | Berechneten Winkel uebernehmen? | j/n (n -> Winkel-Zahl) | 82 |
| 82 | AUS-Element | Winkel/Seite | 83 |
| 83 | EIN-Element | Winkel/Seite | 84 |
| 84 | Bestaetigung "Einfuegen?" | Ja/Nein | ENDE |
### 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`
- 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:
`1 -> 2 -> 30 -> 31 -> 32 -> 34 -> 38 -> 42 -> 45`
- Gefaellestrecke per Dialog: `1 -> 40 -> 70 -> 71`
- Gefaellestrecke ueber Start-/Endpunkt: `1 -> 40 -> 75 -> 76 -> 77 -> 78 -> 79`
---
## 11. GUI-Konzept-Empfehlung (Assistent + Punktwahl)
- Ein einziger schrittweiser Assistent ist sinnvoll — die Blocknummern in
Abschnitt 10 sind bereits fast 1:1 die Wizard-Screens. Verzweigungen/
Schleifen (z.B. Linienzug 34<->35, 42<->46) werden zu bedingten Spruengen
zum passenden Screen statt einer starren linearen Abfolge. **Umgesetzt**
fuer den Linienzug-Hauptstrang (Blocke 31-46) — siehe "Wizard-Status" oben
und `dcl/vf_linienzug_wizard.dcl`.
- **Punktwahl-Integration**: ein Button pro Punkt-Feld, der im Ruhezustand
leer ist und nach Auswahl X/Y/Z daneben anzeigt. Klick aktiviert einen
"Punktwahl-Modus" mit Statuszeile/Hinweis am unteren Rand ("Punkt
waehlen..."), bis der Benutzer in die Zeichnung klickt — danach zurueck ins
Formular. Dieses Muster deckt alle "Punktwahl"-Felder im Entscheidungsbaum
ab. **Umsetzung:** bewusst NICHT als eigener DCL-Dialog gebaut — BricsCAD
zeigt den `getpoint`-Prompt bereits direkt am Fadenkreuz/an der
Befehlszeile, was exakt die gewuenschte "Punkt waehlen"-Statusmeldung ist;
ein zusaetzlicher Dialog wuerde hier nur im Weg stehen (siehe naechster
Punkt).
- **Einschraenkung**: Solange BricsCAD synchron auf `getpoint`/`entsel`
wartet, kann die Formular-Oberflaeche waehrend der Punktwahl nicht
gleichzeitig bedienbar sein — die Statuszeile ersetzt den heutigen
Konsolen-Prompt, das Formular selbst bleibt aber bis zur Auswahl gesperrt
(modal), genau wie heute die Kommandozeile blockiert.
+2
View File
@@ -55,6 +55,7 @@
"vfl-edit-kein-journal": "Dieser Linienzug-Block traegt kein Eingabe-Journal (Altbestand) und kann nicht schrittweise editiert werden.",
"vfl-edit-kette-header": "\n\nLinienzug mit %1 Glied(ern):",
"vfl-edit-abgespielt": "\n>>> %1 Glied(er) werden abgespielt, %2 zurueckgenommen - danach interaktiv weiter.",
"vfl-edit2-reset-info": "\n>>> Linienzug (Modus 2) wird mit den gespeicherten Angaben identisch neu aufgebaut...",
"omni-alle-winkel": "alle Winkel",
"omni-grad": " Grad",
"omni-bogen-keine-gefunden": "Keine Boegen fuer %1%2 gefunden.",
@@ -98,6 +99,7 @@
"vfl-m3-prompt-zielhoehe": "\nZiel-Hoehe (Z) des Endpunkts [%1]: ",
"vfl-m3-fehler-nicht-sortierbar": "\nFEHLER: Pfad nicht sortierbar (haengt er lueckenlos zusammen?).",
"vfl-m3-alert-eckwinkel": "Kein passender Bogen: Eck-Winkel %1 Grad ist nicht ~30/60/90.\nBitte die Winkel anpassen.",
"vfl-m3-alert-objekte-fehlen": "%1 der urspruenglich gewaehlten Pfad-Objekte wurden in der Zeichnung nicht mehr gefunden (vermutlich geloescht). Die Kette kann so nicht korrekt neu aufgebaut werden.",
"vfl-m3-seg-gerade": "\n\nSegment %1/%2: Gerade L=%3 mm hz=%4",
"vfl-m3-auto-vf": "\n (automatisch VF - Segment folgt direkt auf eine Vario-Kurve)",
"vfl-m3-typ-gerade": "\n Typ? 1 = GF (Eingabe-Winkel) 2 = VF (Bruecke)",
+2
View File
@@ -55,6 +55,7 @@
"vfl-edit-kein-journal": "This chain block carries no input journal (legacy) and cannot be edited step by step.",
"vfl-edit-kette-header": "\n\nChain with %1 segment(s):",
"vfl-edit-abgespielt": "\n>>> %1 segment(s) replayed, %2 undone - then continue interactively.",
"vfl-edit2-reset-info": "\n>>> Rebuilding this Modus-2 chain identically from the saved inputs...",
"omni-alle-winkel": "all angles",
"omni-grad": " deg",
"omni-bogen-keine-gefunden": "No arcs found for %1%2.",
@@ -98,6 +99,7 @@
"vfl-m3-prompt-zielhoehe": "\nTarget height (Z) of the end point [%1]: ",
"vfl-m3-fehler-nicht-sortierbar": "\nERROR: path cannot be sorted (is it connected without gaps?).",
"vfl-m3-alert-eckwinkel": "No matching arc: corner angle %1 deg is not ~30/60/90.\nPlease adjust the angles.",
"vfl-m3-alert-objekte-fehlen": "%1 of the originally selected path objects could no longer be found in the drawing (likely deleted). The chain cannot be rebuilt correctly like this.",
"vfl-m3-seg-gerade": "\n\nSegment %1/%2: straight L=%3 mm hz=%4",
"vfl-m3-auto-vf": "\n (automatic VF - segment follows directly after a Vario curve)",
"vfl-m3-typ-gerade": "\n Type? 1 = GF (input angle) 2 = VF (bridge)",
+98 -88
View File
@@ -620,175 +620,175 @@
<Command>^C^C(ssg-ensure "OmniModulInsert") OMNI_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00130">
<MenuMacro UID="MM_00131">
<Macro>
<Name>Marker einfuegen</Name>
<Command>^C^C(ssg-ensure "Tro_Edit") TRO_INSERT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00131">
<MenuMacro UID="MM_00132">
<Macro>
<Name>Marker bearbeiten</Name>
<Command>^C^C(ssg-ensure "Tro_Edit") TRO_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00132">
<MenuMacro UID="MM_00133">
<Macro>
<Name>Bearbeiten (Auto)</Name>
<Command>^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00134">
<MenuMacro UID="MM_00135">
<Macro>
<Name>Verbindung einfuegen</Name>
<Command>^C^C(ssg-ensure "Connection_Edit") CONNECTION_INSERT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00135">
<MenuMacro UID="MM_00136">
<Macro>
<Name>Verbindung bearbeiten</Name>
<Command>^C^C(ssg-ensure "Connection_Edit") CONNECTION_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00138">
<MenuMacro UID="MM_00140">
<Macro>
<Name>Export Sivas</Name>
<Command>^C^C(ssg-ensure "count_sep_scan") ZAEHLE_SEP_SCAN (ssg-ensure "export") EXPORTSIVAS</Command>
<Command>^C^C(ssg-ensure "export") EXPORTSIVAS</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00139">
<MenuMacro UID="MM_00141">
<Macro>
<Name>Export CSV</Name>
<Command>^C^C(ssg-ensure "export") EXPORTCSV</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00141">
<MenuMacro UID="MM_00143">
<Macro>
<Name>Umschalten 2D und 3D</Name>
<Command>^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_SWITCH</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00142">
<MenuMacro UID="MM_00144">
<Macro>
<Name>Alle Bloecke auf 2D</Name>
<Command>^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_ALL_2D</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00143">
<MenuMacro UID="MM_00145">
<Macro>
<Name>Alle Bloecke auf 3D</Name>
<Command>^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_ALL_3D</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00144">
<MenuMacro UID="MM_00146">
<Macro>
<Name>Sprache</Name>
<Command>^C^C(ssg-ensure "SSG_LIB_Commands") SSG_SPRACHE</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00147">
<MenuMacro UID="MM_00149">
<Macro>
<Name>Alle Tests ausfuehren</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00149">
<MenuMacro UID="MM_00151">
<Macro>
<Name>Kreisel</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp")) TEST_KREISEL</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00150">
<MenuMacro UID="MM_00152">
<Macro>
<Name>Foerderer</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_foerderer.lsp")) TEST_FOERDERER</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00151">
<MenuMacro UID="MM_00153">
<Macro>
<Name>Foerderer-Linienzug</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_linienzug.lsp")) TEST_LINIENZUG</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00152">
<MenuMacro UID="MM_00154">
<Macro>
<Name>Omniflo</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo.lsp")) TEST_OMNIFLO</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00153">
<MenuMacro UID="MM_00155">
<Macro>
<Name>Omniflo Strecke</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo_strecke.lsp")) TEST_OMNIFLO_STRECKE</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00154">
<MenuMacro UID="MM_00156">
<Macro>
<Name>Gefaellestrecke</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_gefaellestrecke.lsp")) TEST_GEFAELLESTRECKE</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00155">
<MenuMacro UID="MM_00157">
<Macro>
<Name>Mubea Gesamtmodell</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_mubea.lsp")) TEST_MUBEA</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00156">
<MenuMacro UID="MM_00158">
<Macro>
<Name>HundM05 Kreisel-Abschnitt</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) TEST_HUNDM05</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00157">
<MenuMacro UID="MM_00159">
<Macro>
<Name>KS 2D/3D pruefen (CSV)</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/Lisp/ks_pruefung.lsp")) KS_PRUEFEN</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00158">
<MenuMacro UID="MM_00160">
<Macro>
<Name>Export CSV/Sivas ALL</Name>
<Command>^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_export_all.lsp")) TEST_EXPORT_ALL</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00170">
<MenuMacro UID="MM_00172">
<Macro>
<Name>Kreisel bearbeiten</Name>
<Command>(ssg-ensure "KreiselInsert") KreiselEdit</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00171">
<MenuMacro UID="MM_00173">
<Macro>
<Name>Omniflo Element bearbeiten</Name>
<Command>(ssg-ensure "OmniModulInsert") OMNI_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00172">
<MenuMacro UID="MM_00174">
<Macro>
<Name>Gefaellestrecke bearbeiten</Name>
<Command>(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00173">
<MenuMacro UID="MM_00175">
<Macro>
<Name>VarioFoerderer bearbeiten</Name>
<Command>(ssg-ensure "VarioFoerderer") VARIOFOERDERER_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00174">
<MenuMacro UID="MM_00176">
<Macro>
<Name>TRO-Marker bearbeiten</Name>
<Command>(ssg-ensure "Tro_Edit") TRO_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00175">
<MenuMacro UID="MM_00177">
<Macro>
<Name>Verbindung bearbeiten</Name>
<Command>(ssg-ensure "Connection_Edit") CONNECTION_EDIT</Command>
</Macro>
</MenuMacro>
<MenuMacro UID="MM_00177">
<MenuMacro UID="MM_00179">
<Macro>
<Name>SSG Bearbeiten (Auto)</Name>
<Command>(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT</Command>
@@ -806,10 +806,9 @@
<PopMenuRef pUID="PM_00005"/>
<PopMenuRef pUID="PM_00047"/>
<PopMenuRef pUID="PM_00129"/>
<PopMenuRef pUID="PM_00133"/>
<PopMenuRef pUID="PM_00137"/>
<PopMenuRef pUID="PM_00140"/>
<PopMenuRef pUID="PM_00146"/>
<PopMenuRef pUID="PM_00139"/>
<PopMenuRef pUID="PM_00142"/>
<PopMenuRef pUID="PM_00148"/>
</PopMenu>
<PopMenu UID="PM_00005">
<Name>ILS</Name>
@@ -1488,88 +1487,99 @@
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00129">
<Name>SPS</Name>
<PopMenuRef pUID="PM_00130"/>
<PopMenuRef pUID="PM_00134"/>
<PopMenuItem>
<NameRef>SPS Schliessen</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00046"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00130">
<Name>TRO</Name>
<PopMenuItem>
<NameRef>Marker einfuegen</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00130"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Marker bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00131"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Bearbeiten (Auto)</NameRef>
<NameRef>Marker bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00132"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Bearbeiten (Auto)</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00133"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00133">
<PopMenu UID="PM_00134">
<Name>Connections</Name>
<PopMenuItem>
<NameRef>Verbindung einfuegen</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00134"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Verbindung bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00135"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Verbindung bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00136"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Bearbeiten (Auto)</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00132"/>
<MacroRef MenuMacroID="MM_00133"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00137">
<PopMenu UID="PM_00139">
<Name>Export</Name>
<PopMenuItem>
<NameRef>Export Sivas</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00138"/>
<MacroRef MenuMacroID="MM_00140"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Export CSV</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00139"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00140">
<Name>Konfiguration</Name>
<PopMenuItem>
<NameRef>Umschalten 2D und 3D</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00141"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00142">
<Name>Konfiguration</Name>
<PopMenuItem>
<NameRef>Alle Bloecke auf 2D</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00142"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Alle Bloecke auf 3D</NameRef>
<NameRef>Umschalten 2D und 3D</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00143"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Sprache</NameRef>
<NameRef>Alle Bloecke auf 2D</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00144"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Alle Bloecke auf 3D</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00145"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Sprache</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00146"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Konfiguration Schliessen</NameRef>
<MenuItem>
@@ -1577,120 +1587,120 @@
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00146">
<PopMenu UID="PM_00148">
<Name>Tests</Name>
<PopMenuItem>
<NameRef>Alle Tests ausfuehren</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00147"/>
<MacroRef MenuMacroID="MM_00149"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem IsSeparator="true"/>
<PopMenuItem>
<NameRef>Kreisel</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00149"/>
<MacroRef MenuMacroID="MM_00151"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Foerderer</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00150"/>
<MacroRef MenuMacroID="MM_00152"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Foerderer-Linienzug</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00151"/>
<MacroRef MenuMacroID="MM_00153"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Omniflo</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00152"/>
<MacroRef MenuMacroID="MM_00154"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Omniflo Strecke</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00153"/>
<MacroRef MenuMacroID="MM_00155"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Gefaellestrecke</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00154"/>
<MacroRef MenuMacroID="MM_00156"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Mubea Gesamtmodell</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00155"/>
<MacroRef MenuMacroID="MM_00157"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>HundM05 Kreisel-Abschnitt</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00156"/>
<MacroRef MenuMacroID="MM_00158"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>KS 2D/3D pruefen (CSV)</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00157"/>
<MacroRef MenuMacroID="MM_00159"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Export CSV/Sivas ALL</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00158"/>
<MacroRef MenuMacroID="MM_00160"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
<PopMenu UID="PM_00169">
<PopMenu UID="PM_00171">
<Alias>POP501</Alias>
<Name>SSG_LIB Edit Context</Name>
<PopMenuItem>
<NameRef>Kreisel bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00170"/>
<MacroRef MenuMacroID="MM_00172"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Omniflo Element bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00171"/>
<MacroRef MenuMacroID="MM_00173"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Gefaellestrecke bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00172"/>
<MacroRef MenuMacroID="MM_00174"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>VarioFoerderer bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00173"/>
<MacroRef MenuMacroID="MM_00175"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>TRO-Marker bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00174"/>
<MacroRef MenuMacroID="MM_00176"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem>
<NameRef>Verbindung bearbeiten</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00175"/>
<MacroRef MenuMacroID="MM_00177"/>
</MenuItem>
</PopMenuItem>
<PopMenuItem IsSeparator="true"/>
<PopMenuItem>
<NameRef>SSG Bearbeiten (Auto)</NameRef>
<MenuItem>
<MacroRef MenuMacroID="MM_00177"/>
<MacroRef MenuMacroID="MM_00179"/>
</MenuItem>
</PopMenuItem>
</PopMenu>
+2
View File
@@ -126,6 +126,7 @@
[~APBW 110 R550/67,5 208x347]^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_208
[<-~APBW 110 R550/67,5 58x497]^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_58
[<-Element bearbeiten]^C^C(ssg-ensure "OmniModulInsert") OMNI_EDIT
[->SPS]
[->TRO]
[Marker einfuegen]^C^C(ssg-ensure "Tro_Edit") TRO_INSERT
[Marker bearbeiten]^C^C(ssg-ensure "Tro_Edit") TRO_EDIT
@@ -134,6 +135,7 @@
[Verbindung einfuegen]^C^C(ssg-ensure "Connection_Edit") CONNECTION_INSERT
[Verbindung bearbeiten]^C^C(ssg-ensure "Connection_Edit") CONNECTION_EDIT
[<-Bearbeiten (Auto)]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT
[<-SPS Schliessen]^C^C
[->Export]
[Export Sivas]^C^C(ssg-ensure "export") EXPORTSIVAS
[<-Export CSV]^C^C(ssg-ensure "export") EXPORTCSV