diff --git a/Lisp/Gefaellestrecke.lsp b/Lisp/Gefaellestrecke.lsp
index 3232d19..883d509 100644
--- a/Lisp/Gefaellestrecke.lsp
+++ b/Lisp/Gefaellestrecke.lsp
@@ -1685,7 +1685,11 @@
;; 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
line-points startpunkt endpunkt differenz
deltaX deltaY startpunkt-fuer-einfuegen hz-winkel
@@ -1704,12 +1708,7 @@
)
)
- ;; Eingabemodus
- (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")))
+ (setq antwort modus)
(cond
;; Modus 3: Linienzug mit Bogen
@@ -1831,6 +1830,23 @@
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
;; ============================================================
diff --git a/Lisp/vf_core.lsp b/Lisp/vf_core.lsp
index fb0fcd2..3e23a49 100644
--- a/Lisp/vf_core.lsp
+++ b/Lisp/vf_core.lsp
@@ -76,6 +76,10 @@
;; ============================================================
(if (null *vf-typ-registry*) (setq *vf-typ-registry* 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.
;; berechne-fn: '(lambda (deltaL deltaH richtung seite) ...)
@@ -654,10 +658,19 @@
(defun vf-eingabe-abfragen ( / eingabe-modus line-points startpunkt endpunkt differenz
deltaL deltaH deltaX deltaY richtung antwort hz-winkel)
- (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")))
+ ;; Eingabemodus: von einem Menue-Wrapper vorbelegt (dann keine Frage) oder
+ ;; interaktiv. Die Vorauswahl gilt nur EINMAL und wird hier verbraucht,
+ ;; damit ein spaeterer Direktaufruf wieder fragt.
+ (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
((= antwort "1") (setq eingabe-modus "Linie"))
((= antwort "2") (setq eingabe-modus "Wert"))
@@ -1154,10 +1167,16 @@
;; stellt - siehe vf-eingabe-abfragen).
(if (member anlage-typ '("standard" "etage"))
(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")))
+ ;; Eingabemodus: Vorauswahl (Menue-Wrapper) hat Vorrang, sonst fragen.
+ (if *vf-vorauswahl-eingabemodus*
+ (setq antwort *vf-vorauswahl-eingabemodus*)
+ (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")
(progn
(if (= anlage-typ "etage")
@@ -1356,8 +1375,39 @@
;; ============================================================
(defun c:Foerderanlage () (c:VarioFoerderer))
-(defun c:EtageVarioFoerderer ()
- (setq *vf-vorauswahl-typ* "etage")
+;; Menue-Wrapper: jeder feste Endpunkt der VarioFoerderer-Erzeugung ist
+;; 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)
)
diff --git a/menu/SSG_LIB.cui b/menu/SSG_LIB.cui
index 25e4067..f8351a9 100644
--- a/menu/SSG_LIB.cui
+++ b/menu/SSG_LIB.cui
@@ -68,613 +68,649 @@
^C^C(ssg-ensure "SSG_LIB_Commands") ILS_SEPARATOR_INSERT
-
-
- VarioFoerderer
- ^C^C(ssg-ensure "VarioFoerderer") VarioFoerderer
-
-
- EtageVarioFoerderer
- ^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer
+ Werte manuell
+ ^C^C(ssg-ensure "VarioFoerderer") StandardVarioFoerderer
+
+ aus 3D-Linie
+ ^C^C(ssg-ensure "VarioFoerderer") StandardVarioFoerderer3D
+
+
+
+
+ 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
-
+
VarioFoerderer nachruesten (Marker)
^C^C(ssg-ensure "VarioFoerderer") VARIOFOERDERER_NACHRUESTEN
-
+
- Gefaellestrecke
- ^C^C(ssg-ensure "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
+
+
+
90
^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_630_90
-
+
67.5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_550_675
-
+
45
^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_630_45
-
+
22.5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_550_225
-
+
180
^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_650_180
-
+
90
^C^C(ssg-ensure "OmniModulInsert") OMNI_APB60_90
-
+
AP 60
^C^C(ssg-ensure "OmniModulInsert") OMNI_AP60
-
+
AP 110
^C^C(ssg-ensure "OmniModulInsert") OMNI_AP110
-
+
APG 110
^C^C(ssg-ensure "OmniModulInsert") OMNI_APG110
-
+
Einfach 90 700/700 links M
^C^C(ssg-ensure "OmniModulInsert") OMNI_W90_Einfach
-
+
Doppel 90 700/700 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_W90_Doppel
-
+
Dreiwege 90 700/700 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_W90_Dreiwege
-
+
Einfach 45 350/700 links M
^C^C(ssg-ensure "OmniModulInsert") OMNI_W45_Einfach
-
+
Doppel 45 350/700 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_W45_Doppel
-
+
Dreiwege 45 350/700 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_W45_Dreiwege
-
+
Einfach Parallel 200/750 links M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WP_Einfach
-
+
Doppel Parallel 200/750 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WP_Doppel
-
+
Dreiwege Parallel 200/750 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WP_Dreiwege
-
+
Einfach 22.5 links M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WK_Einfach
-
+
Doppel 22.5 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WK_Doppel
-
+
Dreiwege 22.5 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WK_Dreiwege
-
+
Delta 1400/700 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WKomb_Delta_1400
-
+
Delta 1600/800 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WKomb_Delta_1600
-
+
Star 1400/1400 M
^C^C(ssg-ensure "OmniModulInsert") OMNI_WKomb_Star
-
+
TEF Antriebst. rechts
^C^C(ssg-ensure "OmniModulInsert") OMNI_TEF_AntriebR
-
+
TEF Umlenkspannst. rechts
^C^C(ssg-ensure "OmniModulInsert") OMNI_TEF_UmlenkR
-
+
TEF Antriebst. links
^C^C(ssg-ensure "OmniModulInsert") OMNI_TEF_AntriebL
-
+
TEF Umlenkspannst. links
^C^C(ssg-ensure "OmniModulInsert") OMNI_TEF_UmlenkL
-
+
TEF Gerade auf Linie
^C^C(ssg-ensure "TEFInsert") TEF_FOERDERER_LINIE
-
+
TEF Gerade
^C^C(ssg-ensure "OmniModulInsert") OMNI_TEF_Gerade
-
+
Stopper AP
^C^C(ssg-ensure "OmniModulInsert") OMNI_STOPPER
-
+
Scanner
^C^C(ssg-ensure "OmniModulInsert") OMNI_SCANNER
-
+
Bürstenbremse
^C^C(ssg-ensure "OmniModulInsert") OMNI_BUERSTENBREMSE
-
+
KettenFoerderer
^C^C(ssg-ensure "OmniModulInsert") OMNI_KettenFoerderer
-
+
TV W-W kpl
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_W
-
+
TV W-AP110 kpl
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP110
-
+
TV W-AP60 oben kpl.
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP60
-
+
TV W-AP110-W kpl
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP110_W
-
+
TV W-AP oben kpl
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP
-
+
TV 80
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_80
-
+
TV 50
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_50
-
+
Endplatte Al-Profil AP schraubbar
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_ENDPLATTE
-
+
Anschlag AP-Ende fuer Spulenzug
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_ANSCHLAG
-
+
TV-A fuer AP110/AP60 kpl
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_A_AP110_AP60
-
+
TV-A fuer AP60/ST
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_A_AP60_ST
-
+
TV-A fuer AP110/ST kpl
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_A_AP110_ST
-
+
TV-SW II fuer SW-SW
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_II_SW_SW
-
+
TV-SW III fuer SW-AP110-SW
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_III_AP110_SW
-
+
TV-SW III fuer SW-AP110
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_III_AP110
-
+
TV-SW IV fuer Anschluss SW-AP60
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_IV_AP60
-
+
TV-SW IV fuer SW-ST
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_IV_ST
-
+
Muffe
^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_MUFFE
-
+
APB 110 R400/45 140 nur fuer Delta
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R400_45_140
-
+
APB 110 R550/45 194 nur fuer Delta
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_45_194
-
+
APBW 110 R550/22,5 360x248,5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_360
-
+
APBW 110 R550/22,5 410x298,5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_410A
-
+
APBW 110 R550/22,5 410x78,5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_410B
-
+
APBW 110 R550/22,5 410x98,5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_410C
-
+
APBW 110 R550/67,5 360x598,5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_360
-
+
APBW 110 R400/67,5 260x398,5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R400_675_260
-
+
APBW 110 R550/45 77x160
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_45_77
-
+
APBW 110 R550/67,5 125x83,5
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_125
-
+
APBW 110 R750/90 200x290
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R750_90_200
-
+
APBW 110 R650/90 300x190
^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R650_90_300
-
+
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
-
+
Marker einfuegen
^C^C(ssg-ensure "Tro_Edit") TRO_INSERT
-
+
Marker bearbeiten
^C^C(ssg-ensure "Tro_Edit") TRO_EDIT
-
+
Bearbeiten (Auto)
^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT
-
+
Verbindung einfuegen
^C^C(ssg-ensure "Connection_Edit") CONNECTION_INSERT
-
+
Verbindung bearbeiten
^C^C(ssg-ensure "Connection_Edit") CONNECTION_EDIT
-
+
SPS Schliessen
^C^C
-
+
Export Sivas
^C^C(ssg-ensure "export") EXPORTSIVAS
-
+
Export CSV
^C^C(ssg-ensure "export") EXPORTCSV
-
+
Umschalten 2D und 3D
^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_SWITCH
-
+
Alle Bloecke auf 2D
^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_ALL_2D
-
+
Alle Bloecke auf 3D
^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_ALL_3D
-
+
Sprache
^C^C(ssg-ensure "SSG_LIB_Commands") SSG_SPRACHE
-
-
- Alle Tests ausfuehren
- ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS
-
-
-
-
- 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-Linienzug
- ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_linienzug.lsp")) TEST_LINIENZUG
-
-
-
-
- Omniflo
- ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo.lsp")) TEST_OMNIFLO
-
-
-
-
- Omniflo Strecke
- ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo_strecke.lsp")) TEST_OMNIFLO_STRECKE
-
-
-
-
- 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
+ alle Tests ausfuehren und exportieren
+ ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS_EXPORT
- HundM05 Kreisel-Abschnitt
- ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) TEST_HUNDM05
+ Tests ausfuehren und stehen lassen
+ ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS_OFFEN
-
- 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
-
+
+
+ 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-Linienzug
+ ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_linienzug.lsp")) TEST_LINIENZUG
+
+
+
+
+ Omniflo
+ ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo.lsp")) TEST_OMNIFLO
+
+
+
+
+ Omniflo Strecke
+ ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo_strecke.lsp")) TEST_OMNIFLO_STRECKE
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
Kreisel bearbeiten
(ssg-ensure "KreiselInsert") KreiselEdit
-
+
Omniflo Element bearbeiten
(ssg-ensure "OmniModulInsert") OMNI_EDIT
-
+
Gefaellestrecke bearbeiten
(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_EDIT
-
+
VarioFoerderer bearbeiten
(ssg-ensure "VarioFoerderer") VARIOFOERDERER_EDIT
-
+
TRO-Marker bearbeiten
(ssg-ensure "Tro_Edit") TRO_EDIT
-
+
Verbindung bearbeiten
(ssg-ensure "Connection_Edit") CONNECTION_EDIT
-
+
SSG Bearbeiten (Auto)
(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT
@@ -690,17 +726,18 @@
POP1
SSG_LIB
-
-
-
-
-
+
+
+
+
+
ILS
+
Kreisel-Module
@@ -759,707 +796,754 @@
Foerderer
+
+
- VarioFoerderer
+ 3D-Linienzug
-
-
- EtageVarioFoerderer
-
Vario_Kette_Merge
VarioFoerderer nachruesten (Marker)
+
+
+
+ Standard
+
+ Werte manuell
+
- Gefaellestrecke
+ aus 3D-Linie
+
+
+
+
+ Etage
+
+ Werte manuell
-
-
- Omniflo
-
-
-
-
-
-
-
-
-
-
- ~KettenFoerderer
+ aus 3D-Linie
-
-
-
-
- Element bearbeiten
-
-
- Boegen APB110
+
+ Gefaellestrecke
- 90
-
-
-
- 67.5
-
-
-
- 45
-
-
-
- 22.5
+ einfach
- 180
+ aus 3D-Linie
-
-
- Boegen APB60
- 90
+ aus Linienzug (LINE + ARC)
+
+
+
+ Omniflo
+
+
+
+
+
+
+
+
+
+
+
+ ~KettenFoerderer
+
+
+
+
+
+ Element bearbeiten
+
- Aluprofil Gerade
+ Boegen APB110
- AP 60
+ 90
- AP 110
+ 67.5
- APG 110
+ 45
-
-
- Weiche 90 Grad
- Einfach 90 700/700 links M
+ 22.5
+
+
+
+ 180
+
+
+ Boegen APB60
- Doppel 90 700/700 M
-
-
-
- Dreiwege 90 700/700 M
+ 90
- Weiche 45 Grad
+ Aluprofil Gerade
- Einfach 45 350/700 links M
+ AP 60
- Doppel 45 350/700 M
+ AP 110
- Dreiwege 45 350/700 M
+ APG 110
- Weichen Parallel
+ Weiche 90 Grad
- Einfach Parallel 200/750 links M
+ Einfach 90 700/700 links M
- Doppel Parallel 200/750 M
+ Doppel 90 700/700 M
- Dreiwege Parallel 200/750 M
+ Dreiwege 90 700/700 M
- Weichenkoerper
+ Weiche 45 Grad
- Einfach 22.5 links M
+ Einfach 45 350/700 links M
- Doppel 22.5 M
+ Doppel 45 350/700 M
- Dreiwege 22.5 M
+ Dreiwege 45 350/700 M
- Weichenkombinationen
+ Weichen Parallel
- Delta 1400/700 M
+ Einfach Parallel 200/750 links M
- Delta 1600/800 M
+ Doppel Parallel 200/750 M
- Star 1400/1400 M
+ Dreiwege Parallel 200/750 M
- TEF Elemente
+ Weichenkoerper
- TEF Antriebst. rechts
+ Einfach 22.5 links M
- TEF Umlenkspannst. rechts
+ Doppel 22.5 M
+
+ Dreiwege 22.5 M
+
+
+
+
+ Weichenkombinationen
+
+ Delta 1400/700 M
+
+
+
+ Delta 1600/800 M
+
+
+
+ Star 1400/1400 M
+
+
+
+
+ TEF Elemente
+
+ TEF Antriebst. rechts
+
+
+
+ TEF Umlenkspannst. rechts
+
+
TEF Antriebst. links
TEF Umlenkspannst. links
TEF Gerade auf Linie
TEF Gerade
-
-
-
-
- Anbaugruppen
-
- Stopper AP
-
-
-
- Scanner
-
-
-
- Bürstenbremse
-
-
-
-
- Verbinder
-
- ~TV W-W kpl
-
-
-
- ~TV W-AP110 kpl
+
+
+ Anbaugruppen
- ~TV W-AP60 oben kpl.
-
-
-
- ~TV W-AP110-W kpl
+ Stopper AP
- ~TV W-AP oben kpl
+ Scanner
- ~TV 80
+ Bürstenbremse
+
+
+ Verbinder
- ~TV 50
-
-
-
- ~Endplatte Al-Profil AP schraubbar
-
-
-
- ~Anschlag AP-Ende fuer Spulenzug
+ ~TV W-W kpl
- ~TV-A fuer AP110/AP60 kpl
+ ~TV W-AP110 kpl
- ~TV-A fuer AP60/ST
+ ~TV W-AP60 oben kpl.
- ~TV-A fuer AP110/ST kpl
+ ~TV W-AP110-W kpl
- ~TV-SW II fuer SW-SW
+ ~TV W-AP oben kpl
- ~TV-SW III fuer SW-AP110-SW
+ ~TV 80
- ~TV-SW III fuer SW-AP110
+ ~TV 50
- ~TV-SW IV fuer Anschluss SW-AP60
+ ~Endplatte Al-Profil AP schraubbar
- ~TV-SW IV fuer SW-ST
+ ~Anschlag AP-Ende fuer Spulenzug
- ~Muffe
+ ~TV-A fuer AP110/AP60 kpl
-
-
- Boegen fuer Weichen
- ~APB 110 R400/45 140 nur fuer Delta
+ ~TV-A fuer AP60/ST
+
+
+
+ ~TV-A fuer AP110/ST kpl
- ~APB 110 R550/45 194 nur fuer Delta
+ ~TV-SW II fuer SW-SW
- ~APBW 110 R550/22,5 360x248,5
+ ~TV-SW III fuer SW-AP110-SW
- ~APBW 110 R550/22,5 410x298,5
+ ~TV-SW III fuer SW-AP110
- ~APBW 110 R550/22,5 410x78,5
+ ~TV-SW IV fuer Anschluss SW-AP60
- ~APBW 110 R550/22,5 410x98,5
+ ~TV-SW IV fuer SW-ST
- ~APBW 110 R550/67,5 360x598,5
+ ~Muffe
+
+
+ Boegen fuer Weichen
- ~APBW 110 R400/67,5 260x398,5
-
-
-
- ~APBW 110 R550/45 77x160
+ ~APB 110 R400/45 140 nur fuer Delta
- ~APBW 110 R550/67,5 125x83,5
+ ~APB 110 R550/45 194 nur fuer Delta
- ~APBW 110 R750/90 200x290
+ ~APBW 110 R550/22,5 360x248,5
- ~APBW 110 R650/90 300x190
+ ~APBW 110 R550/22,5 410x298,5
- ~APBW 110 R550/67,5 208x347
+ ~APBW 110 R550/22,5 410x78,5
- ~APBW 110 R550/67,5 58x497
+ ~APBW 110 R550/22,5 410x98,5
-
-
- SPS
-
-
- SPS Schliessen
+ ~APBW 110 R550/67,5 360x598,5
-
-
- TRO
- Marker einfuegen
+ ~APBW 110 R400/67,5 260x398,5
+
+
+
+ ~APBW 110 R550/45 77x160
+
+
+
+ ~APBW 110 R550/67,5 125x83,5
- Marker bearbeiten
+ ~APBW 110 R750/90 200x290
- Bearbeiten (Auto)
+ ~APBW 110 R650/90 300x190
-
-
- Connections
- Verbindung einfuegen
+ ~APBW 110 R550/67,5 208x347
+
+
+
+ ~APBW 110 R550/67,5 58x497
+
+
+ SPS
+
+
- Verbindung bearbeiten
+ SPS Schliessen
-
-
- Bearbeiten (Auto)
-
-
- Export
+
+ TRO
- Export Sivas
+ Marker einfuegen
+
+
+
+ Marker bearbeiten
- Export CSV
+ Bearbeiten (Auto)
- Konfiguration
+ Connections
- Umschalten 2D und 3D
+ Verbindung einfuegen
- Alle Bloecke auf 2D
+ Verbindung bearbeiten
+
+ Bearbeiten (Auto)
+
+
+
+
+ Export
+
+ Export Sivas
+
+
+
+ Export CSV
+
+
+
+
+ Konfiguration
+
+ Umschalten 2D und 3D
+
+
+
+ Alle Bloecke auf 2D
+
+
Alle Bloecke auf 3D
Sprache
Konfiguration Schliessen
-
+
Tests
- Alle Tests ausfuehren
+ alle Tests ausfuehren und exportieren
+
+
+ Tests ausfuehren und stehen lassen
+
+
+
+ Export CSV/Sivas ALL
+
Kreisel
Foerderer
Foerderer-Linienzug
Omniflo
Omniflo Strecke
Gefaellestrecke
Mubea Gesamtmodell
HundM05 Kreisel-Abschnitt
KS 2D/3D pruefen (CSV)
-
-
- Export CSV/Sivas ALL
-
-
+
POP501
SSG_LIB Edit Context
Kreisel bearbeiten
Omniflo Element bearbeiten
Gefaellestrecke bearbeiten
VarioFoerderer bearbeiten
TRO-Marker bearbeiten
Verbindung bearbeiten
SSG Bearbeiten (Auto)
diff --git a/menu/SSG_LIB.mnu b/menu/SSG_LIB.mnu
index 17765ee..0b76ce7 100644
--- a/menu/SSG_LIB.mnu
+++ b/menu/SSG_LIB.mnu
@@ -15,11 +15,19 @@
[Scanner einfuegen]^C^C(ssg-ensure "SSG_LIB_Commands") ILS_SCANNER_INSERT
[<-Separator einfuegen]^C^C(ssg-ensure "SSG_LIB_Commands") ILS_SEPARATOR_INSERT
[->Foerderer]
-[VarioFoerderer]^C^C(ssg-ensure "VarioFoerderer") VarioFoerderer
-[EtageVarioFoerderer]^C^C(ssg-ensure "VarioFoerderer") EtageVarioFoerderer
+[->Standard]
+[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
-[VarioFoerderer nachruesten (Marker)]^C^C(ssg-ensure "VarioFoerderer") VARIOFOERDERER_NACHRUESTEN
-[<-<-Gefaellestrecke]^C^C(ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE
+[<-VarioFoerderer nachruesten (Marker)]^C^C(ssg-ensure "VarioFoerderer") VARIOFOERDERER_NACHRUESTEN
+[->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]
[->Boegen APB110]
[90]^C^C(ssg-ensure "OmniModulInsert") OMNI_APB_630_90
@@ -122,7 +130,9 @@
[Sprache]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_SPRACHE
[<-Konfiguration Schliessen]^C^C
[->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
[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
[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
-[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
+[<-KS 2D/3D pruefen (CSV)]^C^C(load (strcat (getenv "DXFMAKRO") "/Lisp/ks_pruefung.lsp")) KS_PRUEFEN
***DOUBLECLICK
[INSERT]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT
diff --git a/tests/test_run_all.lsp b/tests/test_run_all.lsp
index ba7c2ca..52a093c 100644
--- a/tests/test_run_all.lsp
+++ b/tests/test_run_all.lsp
@@ -22,17 +22,18 @@
;; SSG_RUN_ALL_TESTS
;;
;; Jedes Testmodul laeuft in einer eigenen, neuen Zeichnung (statt die
-;; aktuelle zu leeren/wiederzuverwenden). SSG_RUN_ALL_TESTS fragt zu
-;; Beginn interaktiv nach dem gewuenschten Modus:
-;; Kontroll-Modus (Default): Zeichnung wird gespeichert, auf den
-;; Inhalt gezoomt und bleibt als Tab offen - kein CSV/Sivas-Export.
-;; Am Ende sind alle Testzeichnungen gleichzeitig offen und koennen
-;; direkt begutachtet werden. CSV/Sivas-Export danach bei Bedarf
-;; manuell ueber TEST_EXPORT_ALL (tests/test_export_all.lsp).
-;; Automatik-Modus: Zeichnung wird gespeichert, per EXPORTCSV/
-;; EXPORTSIVAS exportiert und danach sofort wieder geschlossen -
-;; kompletter Lauf ohne manuellen Zusatzschritt, aber ohne
-;; gleichzeitige visuelle Kontrolle aller Zeichnungen am Ende.
+;; aktuelle zu leeren/wiederzuverwenden). Der Modus wird ueber den
+;; aufgerufenen Befehl bestimmt (keine interaktive Rueckfrage):
+;; SSG_RUN_ALL_TESTS_OFFEN / SSG_RUN_ALL_TESTS (Kontroll-Modus, Default):
+;; Zeichnung wird gespeichert, auf den Inhalt gezoomt und bleibt als
+;; Tab offen - kein CSV/Sivas-Export. Am Ende sind alle Testzeichnungen
+;; gleichzeitig offen und koennen direkt begutachtet werden. CSV/Sivas-
+;; Export danach bei Bedarf manuell ueber TEST_EXPORT_ALL
+;; (tests/test_export_all.lsp).
+;; SSG_RUN_ALL_TESTS_EXPORT (Automatik-Modus): Zeichnung wird gespeichert,
+;; per EXPORTCSV/EXPORTSIVAS exportiert und danach sofort wieder
+;; geschlossen - kompletter Lauf ohne manuellen Zusatzschritt, aber
+;; ohne gleichzeitige visuelle Kontrolle aller Zeichnungen am Ende.
;; ============================================================
(vl-load-com)
@@ -169,14 +170,20 @@
(setq anz (length *test-module*))
(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).
- ;; ssg-ques gibt T zurueck wenn "No" gewaehlt wurde - deshalb "not".
- ;; Default = Nein -> Kontroll-Modus (nicht-destruktiver Default).
- (setq auto-export
- (not (ssg-ques
- "Zeichnungen automatisch speichern, exportieren (CSV/Sivas) und schliessen"
- nil))
+ ;; Die Wahl kommt ueber die Menue-Befehle SSG_RUN_ALL_TESTS_EXPORT
+ ;; (Automatik) bzw. SSG_RUN_ALL_TESTS_OFFEN (Kontrolle), die
+ ;; *ssg-run-all-auto-export* vorbelegen - keine interaktive Rueckfrage.
+ ;; Ein direkter SSG_RUN_ALL_TESTS ohne Vorbelegung faellt auf den
+ ;; nicht-destruktiven Kontroll-Modus (nil) zurueck.
+ (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")
@@ -415,3 +422,16 @@
(princ "\n================================================================")
(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)
+)