;; ============================================================ ;; 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=1: Doppelklick aktiv, ***DOUBLECLICK-Eintraege steuern Block-Verhalten (setvar "DBLCLKEDIT" 1) (dbgflush) (ssg-lib-register-check) (princ "\n[SSG_LIB] Startup abgeschlossen.") ) ) (princ) ) ;; Startup ausfuehren (ssg-lib-startup)