diff --git a/Lisp/ssg_load.lsp b/Lisp/ssg_load.lsp index b8910ce..08c578a 100644 --- a/Lisp/ssg_load.lsp +++ b/Lisp/ssg_load.lsp @@ -11,13 +11,15 @@ ;; (load "pfad/ssg_dialog.lsp") ;; ============================================================ -(defun ssg-load-libs (/ base-path) - ;; Pfad dieser Datei als Basis verwenden (AutoCAD 2000+) +(defun ssg-load-libs (/ base-path found) + ;; Pfad ermitteln: 1) DXFM_LISP, 2) findfile, 3) DWGPREFIX (setq base-path - (if (findfile "ssg_core.lsp") - (substr (findfile "ssg_core.lsp") 1 - (- (strlen (findfile "ssg_core.lsp")) (strlen "ssg_core.lsp"))) - (strcat (getvar "DWGPREFIX")) + (cond + ((getenv "DXFM_LISP") + (strcat (vl-string-translate "\\" "/" (getenv "DXFM_LISP")) "/")) + ((setq found (findfile "ssg_core.lsp")) + (substr found 1 (- (strlen found) (strlen "ssg_core.lsp")))) + (t (getvar "DWGPREFIX")) ) ) (load (strcat base-path "ssg_core.lsp") "ssg_core.lsp nicht gefunden") diff --git a/bin/on_start.lsp b/bin/on_start.lsp deleted file mode 100644 index 9c1263a..0000000 --- a/bin/on_start.lsp +++ /dev/null @@ -1,120 +0,0 @@ -;; ============================================================ -;; 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)