From 9670173d4b103e7c23421e23d01fe9fc7440ebac Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Mon, 7 Sep 2026 11:05:18 +0200 Subject: [PATCH] =?UTF-8?q?Men=C3=BCs=20f=C3=BCr=20Variof=C3=B6rderer=20um?= =?UTF-8?q?gebaut.=20Weniger=20interaktive=20Abfragen,=20direkter=20Aufruf?= =?UTF-8?q?=20durch=20Men=C3=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lisp/Gefaellestrecke.lsp | 30 +- Lisp/vf_core.lsp | 70 ++- menu/SSG_LIB.cui | 890 +++++++++++++++++++++------------------ menu/SSG_LIB.mnu | 23 +- tests/test_run_all.lsp | 56 ++- 5 files changed, 624 insertions(+), 445 deletions(-) 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) +)