Menüs für Varioförderer umgebaut. Weniger interaktive Abfragen, direkter Aufruf durch Menü

This commit is contained in:
2026-09-07 11:05:18 +02:00
parent d131b44580
commit 9670173d4b
5 changed files with 624 additions and 445 deletions
+23 -7
View File
@@ -1685,7 +1685,11 @@
;; TEIL 6: HAUPTBEFEHL ;; TEIL 6: HAUPTBEFEHL
;; ============================================================ ;; ============================================================
(defun c:GEFAELLESTRECKE ( / antwort deltaL winkel ;; Gemeinsamer Ablauf fuer alle drei Eingabemodi. "modus" ist "1"/"2"/"3"
;; (Werteingabe / 3D-Linie / Linienzug). Banner + Bibliotheks-Init laufen
;; vorab; der Aufrufer (C:GEFAELLESTRECKE oder die drei Menue-Befehle
;; GEFAELLESTRECKE_EINFACH/_3DLINIE/_LINIENZUG) bestimmt den Modus.
(defun gf-strecke-lauf ( modus / antwort deltaL winkel
as-seite es-seite gf-as-winkel gf-es-winkel as-seite es-seite gf-as-winkel gf-es-winkel
line-points startpunkt endpunkt differenz line-points startpunkt endpunkt differenz
deltaX deltaY startpunkt-fuer-einfuegen hz-winkel deltaX deltaY startpunkt-fuer-einfuegen hz-winkel
@@ -1704,12 +1708,7 @@
) )
) )
;; Eingabemodus (setq antwort modus)
(princ (ssg-text "gf-eingabemodus-header"))
(princ (ssg-text "gf-eingabemodus-1"))
(princ (ssg-text "gf-eingabemodus-2"))
(princ (ssg-text "gf-eingabemodus-3"))
(setq antwort (getstring (ssg-text "prompt-wahl-1-2-3")))
(cond (cond
;; Modus 3: Linienzug mit Bogen ;; Modus 3: Linienzug mit Bogen
@@ -1831,6 +1830,23 @@
nil nil
) )
;; Hauptbefehl: fragt den Eingabemodus per Konsole ab und startet den Lauf.
;; (Interaktive Auswahl bleibt fuer Direktaufruf erhalten; das Menue nutzt
;; stattdessen die drei modus-spezifischen Befehle unten.)
(defun c:GEFAELLESTRECKE ( / antwort)
(princ (ssg-text "gf-eingabemodus-header"))
(princ (ssg-text "gf-eingabemodus-1"))
(princ (ssg-text "gf-eingabemodus-2"))
(princ (ssg-text "gf-eingabemodus-3"))
(setq antwort (getstring (ssg-text "prompt-wahl-1-2-3")))
(gf-strecke-lauf antwort)
)
;; Menue-Befehle: je ein fester Eingabemodus ohne Rueckfrage.
(defun c:GEFAELLESTRECKE_EINFACH () (gf-strecke-lauf "1")) ; Werteingabe (DCL)
(defun c:GEFAELLESTRECKE_3DLINIE () (gf-strecke-lauf "2")) ; aus 3D-Linie
(defun c:GEFAELLESTRECKE_LINIENZUG () (gf-strecke-lauf "3")) ; Linienzug LINE+ARC
;; ============================================================ ;; ============================================================
;; TEIL 7: GEFAELLESTRECKE_EDIT - Doppelklick/Kontextmenue-Bearbeitung ;; TEIL 7: GEFAELLESTRECKE_EDIT - Doppelklick/Kontextmenue-Bearbeitung
;; ============================================================ ;; ============================================================
+60 -10
View File
@@ -76,6 +76,10 @@
;; ============================================================ ;; ============================================================
(if (null *vf-typ-registry*) (setq *vf-typ-registry* nil)) (if (null *vf-typ-registry*) (setq *vf-typ-registry* nil))
(if (null *vf-vorauswahl-typ*) (setq *vf-vorauswahl-typ* nil)) (if (null *vf-vorauswahl-typ*) (setq *vf-vorauswahl-typ* nil))
;; Vorauswahl des Eingabemodus (Standard/Etage): "1"=3D-Linie, "2"=Werte.
;; Von den Menue-Wrappern gesetzt, damit die Konsolen-/Dialog-Frage
;; entfaellt. nil = interaktiv fragen (Direktaufruf VarioFoerderer).
(if (null *vf-vorauswahl-eingabemodus*) (setq *vf-vorauswahl-eingabemodus* nil))
;; Registriert einen Foerderanlagen-Typ. ;; Registriert einen Foerderanlagen-Typ.
;; berechne-fn: '(lambda (deltaL deltaH richtung seite) ...) ;; berechne-fn: '(lambda (deltaL deltaH richtung seite) ...)
@@ -654,10 +658,19 @@
(defun vf-eingabe-abfragen ( / eingabe-modus line-points startpunkt endpunkt differenz (defun vf-eingabe-abfragen ( / eingabe-modus line-points startpunkt endpunkt differenz
deltaL deltaH deltaX deltaY richtung antwort hz-winkel) deltaL deltaH deltaX deltaY richtung antwort hz-winkel)
(princ (ssg-text "vfc-eingabemodus-header")) ;; Eingabemodus: von einem Menue-Wrapper vorbelegt (dann keine Frage) oder
(princ (ssg-text "vfc-eingabemodus-3dlinie")) ;; interaktiv. Die Vorauswahl gilt nur EINMAL und wird hier verbraucht,
(princ (ssg-text "vfc-eingabemodus-werte")) ;; damit ein spaeterer Direktaufruf wieder fragt.
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default"))) (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")))
)
)
(cond (cond
((= antwort "1") (setq eingabe-modus "Linie")) ((= antwort "1") (setq eingabe-modus "Linie"))
((= antwort "2") (setq eingabe-modus "Wert")) ((= antwort "2") (setq eingabe-modus "Wert"))
@@ -1154,10 +1167,16 @@
;; stellt - siehe vf-eingabe-abfragen). ;; stellt - siehe vf-eingabe-abfragen).
(if (member anlage-typ '("standard" "etage")) (if (member anlage-typ '("standard" "etage"))
(progn (progn
(princ (ssg-text "vfc-eingabemodus-header")) ;; Eingabemodus: Vorauswahl (Menue-Wrapper) hat Vorrang, sonst fragen.
(princ (ssg-text "vfc-eingabemodus-3dlinie")) (if *vf-vorauswahl-eingabemodus*
(princ (ssg-text "vfc-eingabemodus-werte")) (setq antwort *vf-vorauswahl-eingabemodus*)
(setq antwort (getstring (ssg-text "vfc-prompt-wahl-1-2-ohne-default"))) (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")))
)
)
(if (= antwort "2") (if (= antwort "2")
(progn (progn
(if (= anlage-typ "etage") (if (= anlage-typ "etage")
@@ -1356,8 +1375,39 @@
;; ============================================================ ;; ============================================================
(defun c:Foerderanlage () (c:VarioFoerderer)) (defun c:Foerderanlage () (c:VarioFoerderer))
(defun c:EtageVarioFoerderer () ;; Menue-Wrapper: jeder feste Endpunkt der VarioFoerderer-Erzeugung ist
(setq *vf-vorauswahl-typ* "etage") ;; direkt aufrufbar (Typ + Eingabemodus vorbelegt, keine Rueckfrage).
;; Nur der Linienzug fragt intern noch Modus 1/2/3 (komplexer Fall).
;; Eingabemodus-Vorauswahl: "2" = Werte manuell (DCL-Dialog),
;; "1" = aus 3D-Linie (Linie picken).
;; --- Standard (AS/ES 90 Grad) ---
(defun c:StandardVarioFoerderer () ; Werte manuell (DCL)
(setq *vf-vorauswahl-typ* "standard"
*vf-vorauswahl-eingabemodus* "2")
(c:VarioFoerderer)
)
(defun c:StandardVarioFoerderer3D () ; aus 3D-Linie
(setq *vf-vorauswahl-typ* "standard"
*vf-vorauswahl-eingabemodus* "1")
(c:VarioFoerderer)
)
;; --- Etage (AS/ES 30 Grad, uebereinander) ---
(defun c:EtageVarioFoerderer () ; Werte manuell (DCL)
(setq *vf-vorauswahl-typ* "etage"
*vf-vorauswahl-eingabemodus* "2")
(c:VarioFoerderer)
)
(defun c:EtageVarioFoerderer3D () ; aus 3D-Linie
(setq *vf-vorauswahl-typ* "etage"
*vf-vorauswahl-eingabemodus* "1")
(c:VarioFoerderer)
)
;; --- Linienzug (bleibt interaktiv: fragt Modus 1/2/3) ---
(defun c:LinienzugVarioFoerderer ()
(setq *vf-vorauswahl-typ* "linienzug")
(c:VarioFoerderer) (c:VarioFoerderer)
) )
+487 -403
View File
File diff suppressed because it is too large Load Diff
+16 -7
View File
@@ -15,11 +15,19 @@
[Scanner einfuegen]^C^C(ssg-ensure "SSG_LIB_Commands") ILS_SCANNER_INSERT [Scanner einfuegen]^C^C(ssg-ensure "SSG_LIB_Commands") ILS_SCANNER_INSERT
[<-Separator einfuegen]^C^C(ssg-ensure "SSG_LIB_Commands") ILS_SEPARATOR_INSERT [<-Separator einfuegen]^C^C(ssg-ensure "SSG_LIB_Commands") ILS_SEPARATOR_INSERT
[->Foerderer] [->Foerderer]
[VarioFoerderer]^C^C(ssg-ensure "VarioFoerderer") VarioFoerderer [->Standard]
[EtageVarioFoerderer]^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer [Werte manuell]^C^C(ssg-ensure "VarioFoerderer") StandardVarioFoerderer
[<-aus 3D-Linie]^C^C(ssg-ensure "VarioFoerderer") StandardVarioFoerderer3D
[->Etage]
[Werte manuell]^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer
[<-aus 3D-Linie]^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer3D
[3D-Linienzug]^C^C(ssg-ensure "VarioFoerderer") LinienzugVarioFoerderer
[Vario_Kette_Merge]^C^C(ssg-ensure "VarioFoerderer") Vario_Kette_Merge [Vario_Kette_Merge]^C^C(ssg-ensure "VarioFoerderer") Vario_Kette_Merge
[VarioFoerderer nachruesten (Marker)]^C^C(ssg-ensure "VarioFoerderer") VARIOFOERDERER_NACHRUESTEN [<-VarioFoerderer nachruesten (Marker)]^C^C(ssg-ensure "VarioFoerderer") VARIOFOERDERER_NACHRUESTEN
[<-<-Gefaellestrecke]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE [->Gefaellestrecke]
[einfach]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_EINFACH
[aus 3D-Linie]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_3DLINIE
[<-<-aus Linienzug (LINE + ARC)]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_LINIENZUG
[->Omniflo] [->Omniflo]
[->Boegen APB110] [->Boegen APB110]
[90]^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_630_90 [90]^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_630_90
@@ -122,7 +130,9 @@
[Sprache]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_SPRACHE [Sprache]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_SPRACHE
[<-Konfiguration Schliessen]^C^C [<-Konfiguration Schliessen]^C^C
[->Tests] [->Tests]
[Alle Tests ausfuehren]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS [alle Tests ausfuehren und exportieren]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS_EXPORT
[Tests ausfuehren und stehen lassen]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS_OFFEN
[Export CSV/Sivas ALL]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_export_all.lsp")) TEST_EXPORT_ALL
[--] [--]
[Kreisel]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp")) TEST_KREISEL [Kreisel]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp")) TEST_KREISEL
[Foerderer]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_foerderer.lsp")) TEST_FOERDERER [Foerderer]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_foerderer.lsp")) TEST_FOERDERER
@@ -132,8 +142,7 @@
[Gefaellestrecke]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_gefaellestrecke.lsp")) TEST_GEFAELLESTRECKE [Gefaellestrecke]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_gefaellestrecke.lsp")) TEST_GEFAELLESTRECKE
[Mubea Gesamtmodell]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_mubea.lsp")) TEST_MUBEA [Mubea Gesamtmodell]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_mubea.lsp")) TEST_MUBEA
[HundM05 Kreisel-Abschnitt]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) TEST_HUNDM05 [HundM05 Kreisel-Abschnitt]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) TEST_HUNDM05
[KS 2D/3D pruefen (CSV)]^C^C(load (strcat (getenv "DXFMAKRO") "/Lisp/ks_pruefung.lsp")) KS_PRUEFEN [<-KS 2D/3D pruefen (CSV)]^C^C(load (strcat (getenv "DXFMAKRO") "/Lisp/ks_pruefung.lsp")) KS_PRUEFEN
[<-Export CSV/Sivas ALL]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_export_all.lsp")) TEST_EXPORT_ALL
***DOUBLECLICK ***DOUBLECLICK
[INSERT]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT [INSERT]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT
+38 -18
View File
@@ -22,17 +22,18 @@
;; SSG_RUN_ALL_TESTS ;; SSG_RUN_ALL_TESTS
;; ;;
;; Jedes Testmodul laeuft in einer eigenen, neuen Zeichnung (statt die ;; Jedes Testmodul laeuft in einer eigenen, neuen Zeichnung (statt die
;; aktuelle zu leeren/wiederzuverwenden). SSG_RUN_ALL_TESTS fragt zu ;; aktuelle zu leeren/wiederzuverwenden). Der Modus wird ueber den
;; Beginn interaktiv nach dem gewuenschten Modus: ;; aufgerufenen Befehl bestimmt (keine interaktive Rueckfrage):
;; Kontroll-Modus (Default): Zeichnung wird gespeichert, auf den ;; SSG_RUN_ALL_TESTS_OFFEN / SSG_RUN_ALL_TESTS (Kontroll-Modus, Default):
;; Inhalt gezoomt und bleibt als Tab offen - kein CSV/Sivas-Export. ;; Zeichnung wird gespeichert, auf den Inhalt gezoomt und bleibt als
;; Am Ende sind alle Testzeichnungen gleichzeitig offen und koennen ;; Tab offen - kein CSV/Sivas-Export. Am Ende sind alle Testzeichnungen
;; direkt begutachtet werden. CSV/Sivas-Export danach bei Bedarf ;; gleichzeitig offen und koennen direkt begutachtet werden. CSV/Sivas-
;; manuell ueber TEST_EXPORT_ALL (tests/test_export_all.lsp). ;; Export danach bei Bedarf manuell ueber TEST_EXPORT_ALL
;; Automatik-Modus: Zeichnung wird gespeichert, per EXPORTCSV/ ;; (tests/test_export_all.lsp).
;; EXPORTSIVAS exportiert und danach sofort wieder geschlossen - ;; SSG_RUN_ALL_TESTS_EXPORT (Automatik-Modus): Zeichnung wird gespeichert,
;; kompletter Lauf ohne manuellen Zusatzschritt, aber ohne ;; per EXPORTCSV/EXPORTSIVAS exportiert und danach sofort wieder
;; gleichzeitige visuelle Kontrolle aller Zeichnungen am Ende. ;; geschlossen - kompletter Lauf ohne manuellen Zusatzschritt, aber
;; ohne gleichzeitige visuelle Kontrolle aller Zeichnungen am Ende.
;; ============================================================ ;; ============================================================
(vl-load-com) (vl-load-com)
@@ -169,14 +170,20 @@
(setq anz (length *test-module*)) (setq anz (length *test-module*))
(setq idx 0) (setq idx 0)
;; Modus abfragen: Kontrolle (Zeichnungen bleiben offen, kein Export) ;; Modus bestimmen: Kontrolle (Zeichnungen bleiben offen, kein Export)
;; oder Automatik (Speichern + CSV/Sivas-Export + Schliessen je Test). ;; oder Automatik (Speichern + CSV/Sivas-Export + Schliessen je Test).
;; ssg-ques gibt T zurueck wenn "No" gewaehlt wurde - deshalb "not". ;; Die Wahl kommt ueber die Menue-Befehle SSG_RUN_ALL_TESTS_EXPORT
;; Default = Nein -> Kontroll-Modus (nicht-destruktiver Default). ;; (Automatik) bzw. SSG_RUN_ALL_TESTS_OFFEN (Kontrolle), die
(setq auto-export ;; *ssg-run-all-auto-export* vorbelegen - keine interaktive Rueckfrage.
(not (ssg-ques ;; Ein direkter SSG_RUN_ALL_TESTS ohne Vorbelegung faellt auf den
"Zeichnungen automatisch speichern, exportieren (CSV/Sivas) und schliessen" ;; nicht-destruktiven Kontroll-Modus (nil) zurueck.
nil)) (if (boundp '*ssg-run-all-auto-export*)
(progn
(setq auto-export *ssg-run-all-auto-export*)
(setq *ssg-run-all-auto-export* nil) ;; Vorauswahl nur einmal gueltig
(makunbound '*ssg-run-all-auto-export*)
)
(setq auto-export nil)
) )
(princ "\n") (princ "\n")
@@ -415,3 +422,16 @@
(princ "\n================================================================") (princ "\n================================================================")
(princ) (princ)
) )
;; Menue-Wrapper: fester Modus ohne Rueckfrage.
;; _EXPORT = Automatik (speichern + CSV/Sivas-Export + schliessen)
;; _OFFEN = Kontrolle (Zeichnungen bleiben offen, kein Export)
(defun c:SSG_RUN_ALL_TESTS_EXPORT ()
(setq *ssg-run-all-auto-export* T)
(c:SSG_RUN_ALL_TESTS)
)
(defun c:SSG_RUN_ALL_TESTS_OFFEN ()
(setq *ssg-run-all-auto-export* nil)
(c:SSG_RUN_ALL_TESTS)
)