121 lines
4.6 KiB
Common Lisp
121 lines
4.6 KiB
Common Lisp
;; ============================================================
|
|
;; on_start.lsp - SSG_LIB Startup fuer BricsCAD
|
|
;; Wird beim Start von BricsCAD automatisch ausgefuehrt
|
|
;; ============================================================
|
|
|
|
(defun ssg-lib-safe-load (datei / result)
|
|
(setq result (vl-catch-all-apply 'load (list datei)))
|
|
(if (vl-catch-all-error-p result)
|
|
(progn
|
|
(princ (strcat "\n[SSG_LIB] FEHLER beim Laden von " datei ":"))
|
|
(princ (strcat "\n " (vl-catch-all-error-message result)))
|
|
nil
|
|
)
|
|
t
|
|
)
|
|
)
|
|
|
|
;; ------------------------------------------------------------
|
|
;; SSG-DBG-FN - Prueft ob ein AutoLISP-Symbol gebunden ist
|
|
;; Gibt "JA" oder "NEIN" zurueck (atoms-family, BRX-Cmds nicht pruefbar)
|
|
;; ------------------------------------------------------------
|
|
(defun ssg-dbg-fn (fname)
|
|
(if (car (atoms-family 1 (list fname))) "JA" "NEIN")
|
|
)
|
|
|
|
;; ------------------------------------------------------------
|
|
;; SSG-LIB-REGISTER-CHECK - Verfuegbarkeit aller Befehle ins Debug-Log schreiben
|
|
;; ------------------------------------------------------------
|
|
(defun ssg-lib-register-check ()
|
|
(dbgmsg "[CHECK] --- AutoLISP Funktionen (atoms-family) ---")
|
|
(dbgmsg (strcat "ssg-start: " (ssg-dbg-fn "SSG-START")))
|
|
(dbgmsg (strcat "ssg-end: " (ssg-dbg-fn "SSG-END")))
|
|
(dbgmsg (strcat "ssg-make-layer: " (ssg-dbg-fn "SSG-MAKE-LAYER")))
|
|
(dbgmsg (strcat "ssg-errhan: " (ssg-dbg-fn "SSG-ERRHAN")))
|
|
(dbgmsg (strcat "ensure-block-loaded: " (ssg-dbg-fn "ENSURE-BLOCK-LOADED")))
|
|
(dbgmsg "[CHECK] --- SSG_LIB_Commands (c:...) ---")
|
|
(dbgmsg (strcat "c:ILS_BTMT_Beladung: " (ssg-dbg-fn "C:ILS_BTMT_BELADUNG")))
|
|
(dbgmsg (strcat "c:ILS_K90LA: " (ssg-dbg-fn "C:ILS_K90LA")))
|
|
(dbgmsg (strcat "c:ILS_TEF_Strecke: " (ssg-dbg-fn "C:ILS_TEF_STRECKE")))
|
|
(dbgmsg (strcat "c:KreiselInsert: " (ssg-dbg-fn "C:KREISELINSERT")))
|
|
(dbgmsg (strcat "c:KreiselEdit: " (ssg-dbg-fn "C:KREISELEDIT")))
|
|
(dbgmsg (strcat "c:ILS_Eckrad: " (ssg-dbg-fn "C:ILS_ECKRAD")))
|
|
(dbgmsg (strcat "c:OMNI_AP60: " (ssg-dbg-fn "C:OMNI_AP60")))
|
|
(dbgmsg (strcat "c:OMNI_APB_630_90: " (ssg-dbg-fn "C:OMNI_APB_630_90")))
|
|
(dbgmsg (strcat "c:OMNI_W90_Einfach: " (ssg-dbg-fn "C:OMNI_W90_EINFACH")))
|
|
(dbgflush)
|
|
)
|
|
|
|
(defun ssg-lib-startup ( / lisp-pfad menu-pfad curr-srch menu-datei lsp-fb-pfad)
|
|
|
|
;; Pfade aus Umgebungsvariablen lesen
|
|
(setq lisp-pfad (getenv "DXFM_LISP"))
|
|
(setq menu-pfad (getenv "DXFMAKRO"))
|
|
|
|
;; Pfadtrenner vereinheitlichen: Backslash -> Forward-Slash
|
|
(if lisp-pfad (setq lisp-pfad (vl-string-translate "\\" "/" lisp-pfad)))
|
|
(if menu-pfad (setq menu-pfad (vl-string-translate "\\" "/" menu-pfad)))
|
|
|
|
(if (null lisp-pfad)
|
|
(progn
|
|
(princ "\n[SSG_LIB] FEHLER: DXFM_LISP nicht gesetzt!")
|
|
(princ "\n[SSG_LIB] Bitte zuerst bin\\setenv.bat ausfuehren.")
|
|
)
|
|
(progn
|
|
;; Debug-Logging so frueh wie moeglich starten
|
|
(if (findfile (strcat lisp-pfad "/ssg_dbg.lsp"))
|
|
(progn
|
|
(load (strcat lisp-pfad "/ssg_dbg.lsp"))
|
|
(dbgopen "debugfile.dbg" "DXFM_LOG")
|
|
(dbgmsg "[on_start] Startup begonnen")
|
|
(dbgmsg (strcat "[on_start] DXFM_LISP=" lisp-pfad))
|
|
(dbgmsg (strcat "[on_start] DXFMAKRO=" (if menu-pfad menu-pfad "nicht gesetzt")))
|
|
(dbgflush)
|
|
)
|
|
)
|
|
|
|
(princ "\n[SSG_LIB] Lade SSG_LIB Umgebung...")
|
|
|
|
;; Library laden (direkt, damit Fehler sichtbar sind)
|
|
;; Kein SRCHPATH-Aendern noetig - alle Dateien werden ueber
|
|
;; absolute Pfade (Umgebungsvariablen) geladen
|
|
(if (findfile (strcat lisp-pfad "/ssg_load.lsp"))
|
|
(progn
|
|
(load (strcat lisp-pfad "/ssg_load.lsp"))
|
|
(princ "\n[SSG_LIB] ssg_load.lsp geladen.")
|
|
)
|
|
(princ "\n[SSG_LIB] WARNUNG: ssg_load.lsp nicht gefunden!")
|
|
)
|
|
|
|
;; Menue laden
|
|
(if menu-pfad
|
|
(progn
|
|
(setq menu-datei (strcat menu-pfad "/menu/SSG_LIB.mnu"))
|
|
(if (findfile menu-datei)
|
|
(progn
|
|
(command "_.MENULOAD" menu-datei)
|
|
(menucmd "P13=+SSG_LIB.POP1")
|
|
(princ "\n[SSG_LIB] Menue SSG_LIB geladen und eingebunden.")
|
|
)
|
|
(princ (strcat "\n[SSG_LIB] WARNUNG: " menu-datei " nicht gefunden!"))
|
|
)
|
|
)
|
|
(princ "\n[SSG_LIB] WARNUNG: DXFMAKRO nicht gesetzt, Menue nicht geladen!")
|
|
)
|
|
|
|
;; DBLCLKEDIT deaktivieren (Block-Editor nicht bei Doppelklick oeffnen)
|
|
(setvar "DBLCLKEDIT" 0)
|
|
|
|
(dbgflush)
|
|
|
|
(ssg-lib-register-check)
|
|
|
|
(princ "\n[SSG_LIB] Startup abgeschlossen.")
|
|
)
|
|
)
|
|
(princ)
|
|
)
|
|
|
|
;; Startup ausfuehren
|
|
(ssg-lib-startup)
|