;; ============================================================
;; 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
  )
)

(defun ssg-lib-startup ( / lisp-pfad menu-pfad curr-srch menu-datei)

  ;; Pfade aus Umgebungsvariablen lesen
  (setq lisp-pfad (getenv "DXFM_LISP"))
  (setq menu-pfad (getenv "DXFMAKRO"))

  (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
      (princ "\n[SSG_LIB] Lade SSG_LIB Umgebung...")

      ;; LISP-Pfad zum BricsCAD-Suchpfad hinzufuegen
      (setq curr-srch (getvar "SRCHPATH"))
      (if (and curr-srch (not (vl-string-search lisp-pfad curr-srch)))
        (setvar "SRCHPATH" (strcat curr-srch ";" lisp-pfad))
      )

      ;; Library laden (direkt, damit Fehler sichtbar sind)
      (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!")
      )

      (princ "\n[SSG_LIB] Startup abgeschlossen.")
    )
  )
  (princ)
)

;; Startup ausfuehren
(ssg-lib-startup)
