134 lines
4.3 KiB
Plaintext
134 lines
4.3 KiB
Plaintext
;; ============================================================
|
|
;; 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.
|
|
;; ============================================================
|
|
|
|
;; Globale Variable: Pfad zu den LISP-Dateien (aus Umgebungsvariable)
|
|
(setq *ssg-lisp-pfad* (getenv "DXFM_LISP"))
|
|
(if *ssg-lisp-pfad*
|
|
(setq *ssg-lisp-pfad* (vl-string-translate "\\" "/" *ssg-lisp-pfad*))
|
|
)
|
|
|
|
;; ------------------------------------------------------------
|
|
;; 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.
|
|
;; ------------------------------------------------------------
|
|
(defun ssg-ensure (modul / flag-sym datei)
|
|
;; Flag-Symbol: *ssg-ssg_core-loaded* etc.
|
|
(setq flag-sym (read (strcat "*ssg-" modul "-loaded*")))
|
|
|
|
(if (not (eval flag-sym))
|
|
(progn
|
|
;; Pfad pruefen
|
|
(if (null *ssg-lisp-pfad*)
|
|
(progn
|
|
(setq *ssg-lisp-pfad* (getenv "DXFM_LISP"))
|
|
(if *ssg-lisp-pfad*
|
|
(setq *ssg-lisp-pfad* (vl-string-translate "\\" "/" *ssg-lisp-pfad*))
|
|
)
|
|
)
|
|
)
|
|
|
|
(if (null *ssg-lisp-pfad*)
|
|
(progn
|
|
(alert "SSG_LIB: DXFM_LISP nicht gesetzt!\nBitte zuerst setenv.bat ausfuehren.")
|
|
(princ "\n[SSG_LIB] FEHLER: DXFM_LISP nicht gesetzt!")
|
|
)
|
|
(progn
|
|
;; Kern-Module als Abhaengigkeit laden (falls noch nicht geschehen)
|
|
(if (not *ssg-core-loaded*)
|
|
(progn
|
|
(ssg-ensure-load "ssg_core")
|
|
(set '*ssg-core-loaded* t)
|
|
(ssg-load-config)
|
|
)
|
|
)
|
|
(if (not *ssg-dbg-loaded*)
|
|
(progn
|
|
(ssg-ensure-load "ssg_dbg")
|
|
(set '*ssg-dbg-loaded* t)
|
|
;; Debug-Log oeffnen
|
|
(if (and (atoms-family 1 '("DBGOPEN")) (getenv "DXFM_LOG"))
|
|
(dbgopen "debugfile.dbg" "DXFM_LOG")
|
|
)
|
|
)
|
|
)
|
|
(if (not *ssg-dialog-loaded*)
|
|
(progn
|
|
(ssg-ensure-load "ssg_dialog")
|
|
(set '*ssg-dialog-loaded* t)
|
|
)
|
|
)
|
|
(if (not *ssg-layer-loaded*)
|
|
(progn
|
|
(ssg-ensure-load "ssg_layer")
|
|
(set '*ssg-layer-loaded* t)
|
|
)
|
|
)
|
|
|
|
;; Jetzt das angeforderte Modul laden (falls nicht schon ein Kern-Modul)
|
|
(if (not (eval flag-sym))
|
|
(progn
|
|
(ssg-ensure-load modul)
|
|
(set flag-sym t)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(princ)
|
|
)
|
|
|
|
;; Hilfsfunktion: Datei laden mit Fehlerbehandlung
|
|
(defun ssg-ensure-load (modul / datei result)
|
|
(setq datei (strcat *ssg-lisp-pfad* "/" modul ".lsp"))
|
|
(if (findfile datei)
|
|
(progn
|
|
(setq result (vl-catch-all-apply 'load (list datei)))
|
|
(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!"))
|
|
)
|
|
)
|
|
|
|
;; ------------------------------------------------------------
|
|
;; Beim MNL-Laden: Alle Module laden + Menue einhaengen
|
|
;; ------------------------------------------------------------
|
|
(if *ssg-lisp-pfad*
|
|
(progn
|
|
;; Alle Module in der richtigen Reihenfolge laden
|
|
(ssg-ensure "ssg_core")
|
|
(ssg-ensure "ssg_dbg")
|
|
(ssg-ensure "ssg_dialog")
|
|
(ssg-ensure "ssg_layer")
|
|
(ssg-ensure "ssg_id")
|
|
(ssg-ensure "KreiselInsert")
|
|
(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
|
|
(menucmd "P13=+SSG_LIB.POP1")
|
|
(setvar "DBLCLKEDIT" 0)
|
|
(princ "\n[SSG_LIB] Alle Module geladen. Menue aktiv.")
|
|
)
|
|
(princ "\n[SSG_LIB] WARNUNG: DXFM_LISP nicht gesetzt - Befehle nicht verfuegbar.")
|
|
)
|
|
(princ)
|