[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:
1 parent
2ef8f319ab
commit
9a7907ab00
4 files changed
+139
-57
No files matched your search
@@ -104,7 +104,7 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`.
|
||||
| `ssg_blocktools.lsp` | SSG_BLOCK_COUNT, SSG_BLOCK_DELETE, SSG_ATTR_ERSETZEN | Block-Werkzeuge fuer das aktuelle Layout (Ursprung ACADSST `TOOLS.LSP`/`ssg.lsp`): Einfuegungen zaehlen (Pick, wcmatch-Muster oder Statistik aller Bloecke), alle Einfuegungen loeschen (Rueckfrage, gesperrte Layer bleiben), Attributwerte zeichnungsweit/in Auswahl suchen+ersetzen (Vorschau mit Anzahl, Teilstring oder Gesamtwert). Wirksamer Blockname (dynamische Bloecke). Reine Kerne `ssg-bt-name-passt-p`, `ssg-bt-zaehle-namen`, `ssg-bt-wert-neu` in `tests/test_unit.lsp` getestet |
|
||||
| `ssg_texttools.lsp` | SSG_TEXT_ERSETZEN, SSG_TEXT_PARALLEL, SSG_TEXT_HOEHE, SSG_TEXT_STIL | Text-Werkzeuge (Ursprung ACADSST `CHGTEXT`/`PARTEXT`/`ALTHOEHE`/`ALTSTIL`): Suchen/Ersetzen in TEXT, MTEXT und Block-Attributen (nutzt `ssg-bt-*`, daher NACH `ssg_blocktools` laden), Text parallel zu Linie/Polylinie/Bogen (lesbar ausgerichtet, Abstand), Hoehe/Stil aendern. Arbeitet in der XY-Ebene des Welt-KS. Reine Kerne `ssg-tt-lesbarer-winkel`, `ssg-tt-versetzt` getestet |
|
||||
| `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, VF_SEKTION_RESTORE, VF_WIZARD_AN, VF_WIZARD_AUS | Vario-Foerderanlagen Generator (Typen Standard/Etage/Linienzug); Standard- UND Etage-Typ: Werteingabe per DCL-Dialog. Der Dialog-Ablauf ist zentral in vf_core (`vf-dialog-ablauf`/`vf-dialog-berechnen-einfuegen`, parametrisiert ueber Typ-Registry `*vf-typ-registry*` + Flag `horizontal-p`); `vfs-standard-dialog-ablauf`/`vfe-etage-dialog-ablauf` sind nur noch duenne Wrapper darauf. Beide nutzen dieselben Dialoge `vfs-dialog-eingabe-basis`/`vfs-dialog-winkel-verteilung` und den gemeinsamen L_GF/L_VF-Solve `vf-winkel-solve` (vf_core; berechne-alle-winkel/berechne-winkel-etage teilen ihn); 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). Die interaktiven Editier-Pfade (`vfl-edit-ent` Sektions-Zweig, `vfl-edit-ent2`) rufen den Neuaufbau BEWUSST direkt auf, NICHT ueber `vl-catch-all-apply`: der alte Block ist beim Neuaufbau schon per `entdel` weg, und ein Catch faengt den Abbruch VOR `*error*` ab - der Abbruch-Wickler `vfl-modus-abbruch-sichern` kaeme nie zum Zug und die ganze Kette bliebe als lose Einzelteile ohne Block liegen (Fehlerbild "VF-Block aufgebrochen"). Nur der nicht-interaktive Batch-Konverter `vfl-konvertiere-ent` behaelt den Catch (die Batch-Schleife muss weiterlaufen) und meldet den betroffenen Block. Die Abbruch-Handler setzen zusaetzlich `*ssg-ils-dim*` zurueck, weil der Aufrufer, der das sonst tut, nach einem Abbruch nicht mehr erreicht wird. Recovery-Pfad fuer bereits aufgebrochene Ketten: `VF_SEKTION_RESTORE` (vf_linienzug.lsp) setzt das Ketten-Journal aus der XDATA der losen Objekte zusammen - `SSG_VF_EDIT_SEG` traegt pro Entity den Journal-Abschnitt DER ITERATION, in der es entstand (indiziert mit dem ersten Glied-Index darin; eine VF-Einheit mit eingebetteten Vario-Kurven erzeugt mehrere Glieder in einer Iteration), `SSG_VF_EDIT_PRE` auf den Entities des ersten Gliedes die Praeambel (Startpunkt/Starthoehe/AS). Die `.dbg`-Dateien sind reine AUSGABE und werden von keinem Befehl gelesen (dbgopen legt sie bei jedem Lauf neu an) - Wiederherstellungs-Daten gehoeren in die XDATA. `vf_konstanten.lsp` (von vf_core.lsp vor den drei Submodulen geladen) sammelt alle Laengen-/Winkel-/Toleranz-Magic-Numbers aus dem VarioFoerderer-Cluster als dokumentierte `*vfk-*`-Konstanten. Die Migration ist abgeschlossen: vf_core/vf_standard/vf_etage/vf_linienzug referenzieren durchgaengig die zentralen Konstanten statt roher LiteLine truncated
|
||||
| `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_SEKTION_RESTORE, VF_WIZARD_AN, VF_WIZARD_AUS | Vario-Foerderanlagen Generator (Typen Standard/Etage/Linienzug); Standard- UND Etage-Typ: Werteingabe per DCL-Dialog, inkl. der vorgelagerten Eingabemodus-Wahl 3D-Linie/Werte manuell (`vfc_eingabemodus`, `vfc-dialog-eingabemodus-waehlen`) - beide Modi laufen seitdem in denselben Basis-/Winkel-Dialog, der Konsolen-Pfad ist nur noch Rueckfall bei abgeschalteter GUI/anderer Sprache. Der Dialog-Ablauf ist zentral in vf_core (`vf-dialog-ablauf`/`vf-dialog-berechnen-einfuegen`, parametrisiert ueber Typ-Registry `*vf-typ-registry*` + Flag `horizontal-p`); `vfs-standard-dialog-ablauf`/`vfe-etage-dialog-ablauf` sind nur noch duenne Wrapper darauf. Beide nutzen dieselben Dialoge `vfs-dialog-eingabe-basis`/`vfs-dialog-winkel-verteilung` und den gemeinsamen L_GF/L_VF-Solve `vf-winkel-solve` (vf_core; berechne-alle-winkel/berechne-winkel-etage teilen ihn); 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). Die interaktiven Editier-Pfade (`vfl-edit-ent` Sektions-Zweig, `vfl-edit-ent2`) rufen den Neuaufbau BEWUSST direkt auf, NICHT ueber `vl-catch-all-apply`: der alte Block ist beim Neuaufbau schon per `entdel` weg, und ein Catch faengt den Abbruch VOR `*error*` ab - der Abbruch-Wickler `vfl-modus-abbruch-sichern` kaeme nie zum Zug und die ganze Kette bliebe als lose Einzelteile ohne Block liegen (Fehlerbild "VF-Block aufgebrochen"). Nur der nicht-interaktive Batch-Konverter `vfl-konvertiere-ent` behaelt den Catch (die Batch-Schleife muss weiterlaufen) und meldet den betroffenen Block. Die Abbruch-Handler setzen zusaetzlich `*ssg-ils-dim*` zurueck, weil der Aufrufer, der das sonst tut, nach einem Abbruch nicht mehr erreicht wird. Recovery-Pfad fuer bereits aufgebrochene Ketten: `VF_SEKTION_RESTORE` (vf_linienzug.lsp) setzt das Ketten-Journal aus der XDATA der losen Objekte zusammen - `SSG_VF_EDIT_SEG` traegt pro Entity den Journal-Abschnitt DER ITERATION, in der es entstand (indiziert mit dem ersten Glied-Index darin; eine VF-Einheit mit eingebetteten Vario-Kurven erzeugt mehrere Glieder in einer Iteration), `SSG_VF_EDIT_PRE` auf den Entities des ersten Gliedes die Praeambel (Startpunkt/Starthoehe/AS). Die `.dbg`-Dateien sind reine AUSGABE und werden von keinem Befehl gelesen (dbgopen legt sie bei jedem Lauf neu an) - Wiederherstellungs-Daten gehoeren in die XDATA. `vf_konstanten.lsp` (von vf_core.lsp vor den drei Submodulen geladen) sLine truncated
|
||||
| `vf_spec.lsp` (von vf_core.lsp NACH vf_linienzug.lsp geladen) | VF_SPEC_BAU | Linienzug-Ketten aus **Eingabedaten** bauen, ohne Dialog und ohne Konsolenfrage (Stufe 1 aus `doc/todo/plan-vf-interactive.md`). Eine **Spec** beschreibt eine Kette in Domaenenwerten (`"links"`, `"winkel"`, `"aussen"`, ja/nein) statt in Menue-Codes; `vsp-journal` uebersetzt sie in ein Eingabe-Journal, `vsp-bau-aus-spec` spielt es per `vfl-journal-replay-start` durch den UNVERAENDERTEN `vf-linienzug-modus` (Replay-Kern `vsp-bau-journal` - nimmt auch ein unveraendert uebernommenes, aufgezeichnetes Journal, z.B. aus `dxf_anlage_export.py`). Damit traegt der fertige Block dasselbe `SSG_VF_EDIT`-Journal wie eine handgebaute Kette und bleibt per Doppelklick editier- und 2D/3D-konvertierbar - kein Journal-Konsument muss etwas von Specs wissen. Wichtige Regeln, die der Uebersetzer kennt: der Menue-Code haengt am Frame (erste Sektion 4 Optionen ohne GF-Bogen, danach 5), `hz` steht nur beim ERSTEN Segment im Journal, und `erst-hor` unterscheidet den horizontalen Erstkoerper einer VF-Einheit (Separator-/Endpunktfragen vorab) vom gewinkelten (keine Frage). Fehlerverhalten: fail fast - `vsp-pruefen` sammelt ALLE Spec-Fehler, gebaut wird dann nichts (nichts wird geraten). Ergebnis-Record je Kette mit `status` (`executed`/`warnung`/`desync`/`abbruch`/`spec-fehler`), Block/Handle/Einfuegepunkt/Attributen, `prompts` (muss 0 sein), `glieder_soll` vs. `glieder_ist` (Desync-Detektor, der auch bei aufgehender Queue greift) und den gesammelten `meldungen`. Headless-Rahmen `vsp-headless-an`/`-aus` (Save/Restore von `*vfl-headless*`, `*vfl-wizard-mode*`, `*ssg-gui-aus*` + zaehlende Eingabe-Stubs). Spec-Datei flach als JSON (`ssg-load-json` liest zeilenweise), erzeugt von `lib/vf_spec_export.py`. Gegenstueck/Referenz in Python: derselbe Emitter, gegen die 5 echten HundM-Ketten rundlaufgeprueft |
|
||||
| `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, CSV_EXPORT_KONFIG | JSON-Sammlung und Python-Export (Omniflo-Merkmale/Sum-Zeile via lib/export_csv.py). **Gefrorene Layer**: `csv:collect-export-blocks` laesst Bloecke auf gefrorenen Layern aus (ausgeschaltete Layer zaehlen NICHT), Schalter `*csv-gefrorene-ausschliessen*` (Standard an, Toggle im Dialog CSV_EXPORT_KONFIG). Die Hilfsobjekte eines gefrorenen VF_n/GF_n (Separator-/Element-Kopien, Einheiten-/AS-ES-Marker) liegen auf eigenen Layern und werden darum ueber `*csv-ausschluss-enames*` mit ausgelassen (gesetzt in `csv:export-vorbereiten` per `csv:hilfskopien-ausschluss`); erzeugt und nummeriert werden sie trotzdem, damit IDs stabil bleiben. DrawPlanquadrate nutzt dieselbe Sammlung und folgt dem Filter |
|
||||
|
||||
+71
-29
@@ -1088,42 +1088,53 @@
|
||||
(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
|
||||
(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 (= antwort "1")
|
||||
(progn
|
||||
(setq linie-erg (vfc-3dlinie-erfassen))
|
||||
(if (null linie-erg)
|
||||
(setq abbruch t)
|
||||
(progn
|
||||
(setq deltaL (nth 0 linie-erg)
|
||||
deltaH (nth 1 linie-erg)
|
||||
richtung (nth 2 linie-erg)
|
||||
startpunkt (nth 3 linie-erg)
|
||||
hz (nth 4 linie-erg))
|
||||
(setq basis-prefill
|
||||
(list (cons "deltaL" deltaL) (cons "deltaH" deltaH) (cons "richtung" richtung)
|
||||
(cons "einfuegehoehe" (caddr startpunkt)) (cons "hz" hz)))
|
||||
(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")))
|
||||
)
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(setq startpunkt-xy (vfc-dialog-startpunkt-waehlen "vfc-prompt-startpunkt-aus"))
|
||||
(if (null startpunkt-xy)
|
||||
(setq startpunkt-xy (getpoint (ssg-text "vfc-prompt-startpunkt-aus"))))
|
||||
(if (null startpunkt-xy) (setq startpunkt-xy '(0 0 0)))
|
||||
(setq startpunkt startpunkt-xy)
|
||||
(setq basis-prefill nil)
|
||||
)
|
||||
(if (not abbruch)
|
||||
(if (= antwort "1")
|
||||
(progn
|
||||
(setq linie-erg (vfc-3dlinie-erfassen))
|
||||
(if (null linie-erg)
|
||||
(setq abbruch t)
|
||||
(progn
|
||||
(setq deltaL (nth 0 linie-erg)
|
||||
deltaH (nth 1 linie-erg)
|
||||
richtung (nth 2 linie-erg)
|
||||
startpunkt (nth 3 linie-erg)
|
||||
hz (nth 4 linie-erg))
|
||||
(setq basis-prefill
|
||||
(list (cons "deltaL" deltaL) (cons "deltaH" deltaH) (cons "richtung" richtung)
|
||||
(cons "einfuegehoehe" (caddr startpunkt)) (cons "hz" hz)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(progn
|
||||
(setq startpunkt-xy (vfc-dialog-startpunkt-waehlen "vfc-prompt-startpunkt-aus"))
|
||||
(if (null startpunkt-xy)
|
||||
(setq startpunkt-xy (getpoint (ssg-text "vfc-prompt-startpunkt-aus"))))
|
||||
(if (null startpunkt-xy) (setq startpunkt-xy '(0 0 0)))
|
||||
(setq startpunkt startpunkt-xy)
|
||||
(setq basis-prefill nil)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if abbruch
|
||||
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user