Block-Pfad-Ermittlung auf DXFMAKRO+DXFM_DIM umgestellt; Console bereinigt

This commit is contained in:
2026-06-25 15:40:07 +02:00
parent db0d9abb7a
commit 0ea11fdac2
7 changed files with 73 additions and 56 deletions
+29 -22
View File
@@ -1,9 +1,9 @@
;; ============================================================
;; SSG_LIB.mnl - Automatisch geladen beim MENULOAD von SSG_LIB.mnu
;;
;; Definiert den Lazy-Loader (ssg-ensure) und laedt die
;; Kern-Module (ssg_core, ssg_dbg, ssg_dialog, ssg_layer).
;; Feature-Module werden erst bei Menueklick nachgeladen.
;; Definiert den Lazy-Loader (ssg-ensure) und laedt alle Module.
;; Kern-Module: ssg_core, ssg_dbg, ssg_dialog, ssg_layer, ssg_id
;; Feature-Module: KreiselInsert, Gefaellestrecke, VarioFoerderer, ...
;; ============================================================
;; Globale Variable: Pfad zu den LISP-Dateien
@@ -22,8 +22,7 @@
(progn
(setq *ssg-lisp-pfad*
(strcat (substr *ssg-mnl-datei* 1 *ssg-menu-pos*) "/Lisp"))
(if (findfile (strcat *ssg-lisp-pfad* "/ssg_core.lsp"))
(princ (strcat "\n[SSG_LIB] Pfad heuristisch ermittelt: " *ssg-lisp-pfad*))
(if (not (findfile (strcat *ssg-lisp-pfad* "/ssg_core.lsp")))
(progn
(setq *ssg-lisp-pfad* nil)
(princ "\n[SSG_LIB] Heuristik fehlgeschlagen: ssg_core.lsp nicht gefunden.")
@@ -39,18 +38,14 @@
;; ------------------------------------------------------------
;; ssg-ensure - Lazy-Loader fuer SSG_LIB Module
;;
;; Prueft ob ein Modul bereits geladen ist (via *ssg-<modul>-loaded*).
;; Wenn nicht, laedt es aus DXFM_LISP.
;; Laedt automatisch Kern-Abhaengigkeiten (core, dbg, dialog, layer)
;; falls diese noch nicht geladen sind.
;; Laedt ein Modul einmalig. Setzt Flag *ssg-<modul>-loaded*.
;; Laedt Kern-Abhaengigkeiten (core/dbg/dialog/layer) automatisch.
;; ------------------------------------------------------------
(defun ssg-ensure (modul / flag-sym datei)
;; Flag-Symbol: *ssg-ssg_core-loaded* etc.
(defun ssg-ensure (modul / flag-sym)
(setq flag-sym (read (strcat "*ssg-" modul "-loaded*")))
(if (not (eval flag-sym))
(progn
;; Pfad pruefen
;; Pfad nachschlagen falls noch nicht gesetzt
(if (null *ssg-lisp-pfad*)
(progn
(setq *ssg-lisp-pfad* (getenv "DXFM_LISP"))
@@ -66,11 +61,13 @@
(princ "\n[SSG_LIB] FEHLER: DXFM_LISP nicht gesetzt!")
)
(progn
;; Kern-Module als Abhaengigkeit laden (falls noch nicht geschehen)
;; Kern-Module als Abhaengigkeit laden (je nur einmal)
;; WICHTIG: auch den modul-spezifischen Flag setzen, sonst Doppelladen
(if (not *ssg-core-loaded*)
(progn
(ssg-ensure-load "ssg_core")
(set '*ssg-core-loaded* t)
(set '*ssg-ssg_core-loaded* t)
(ssg-load-config)
)
)
@@ -78,7 +75,7 @@
(progn
(ssg-ensure-load "ssg_dbg")
(set '*ssg-dbg-loaded* t)
;; Debug-Log oeffnen
(set '*ssg-ssg_dbg-loaded* t)
(if (and (atoms-family 1 '("DBGOPEN")) (getenv "DXFM_LOG"))
(dbgopen "debugfile.dbg" "DXFM_LOG")
)
@@ -88,16 +85,18 @@
(progn
(ssg-ensure-load "ssg_dialog")
(set '*ssg-dialog-loaded* t)
(set '*ssg-ssg_dialog-loaded* t)
)
)
(if (not *ssg-layer-loaded*)
(progn
(ssg-ensure-load "ssg_layer")
(set '*ssg-layer-loaded* t)
(set '*ssg-ssg_layer-loaded* t)
)
)
;; Jetzt das angeforderte Modul laden (falls nicht schon ein Kern-Modul)
;; Angefordertes Feature-Modul laden (falls noch nicht via Kern-Flags gesetzt)
(if (not (eval flag-sym))
(progn
(ssg-ensure-load modul)
@@ -111,7 +110,7 @@
(princ)
)
;; Hilfsfunktion: Datei laden mit Fehlerbehandlung
;; Hilfsfunktion: Datei laden mit Fehlerbehandlung (ohne eigene Lademeldung)
(defun ssg-ensure-load (modul / datei result)
(setq datei (strcat *ssg-lisp-pfad* "/" modul ".lsp"))
(if (findfile datei)
@@ -120,7 +119,6 @@
(if (vl-catch-all-error-p result)
(princ (strcat "\n[SSG_LIB] FEHLER beim Laden von " modul ": "
(vl-catch-all-error-message result)))
(princ (strcat "\n[SSG_LIB] Geladen: " modul ".lsp"))
)
)
(princ (strcat "\n[SSG_LIB] WARNUNG: " datei " nicht gefunden!"))
@@ -128,26 +126,35 @@
)
;; ------------------------------------------------------------
;; Beim MNL-Laden: Alle Module laden + Menue einhaengen
;; Beim MNL-Laden: Kern-Module + Feature-Module laden
;; ------------------------------------------------------------
(if *ssg-lisp-pfad*
(progn
;; Alle Module in der richtigen Reihenfolge laden
;; 1) Kern-Module (Core)
(ssg-ensure "ssg_core")
(ssg-ensure "ssg_dbg")
(ssg-ensure "ssg_dialog")
(ssg-ensure "ssg_layer")
(ssg-ensure "ssg_id")
;; Allgemein-Zusammenfassung
(princ "\n=========================================")
(princ "\n[SSG_LIB] Core-Module geladen:")
(princ "\n ssg_core, ssg_dbg, ssg_dialog, ssg_layer, ssg_id")
(princ (strcat "\n Pfad: " *ssg-lisp-pfad*))
(princ "\n=========================================")
;; 2) Feature-Module in Anzeigereihenfolge
(ssg-ensure "KreiselInsert")
(ssg-ensure "Gefaellestrecke")
(ssg-ensure "VarioFoerderer")
(ssg-ensure "EtageVarioFoerderer")
(ssg-ensure "Gefaellestrecke")
(ssg-ensure "export")
(ssg-ensure "external_call")
(ssg-ensure "OmniModulInsert")
(ssg-ensure "SSG_LIB_Commands")
;; Pulldown-Menue in die Menueleiste einhaengen
;; Menue einhaengen
(menucmd "P13=+SSG_LIB.POP1")
(setvar "DBLCLKEDIT" 1)
(princ "\n[SSG_LIB] Alle Module geladen. Menue aktiv.")