diff --git a/Lisp/ssg_dbg.lsp b/Lisp/ssg_dbg.lsp index e7d18db..558519f 100644 --- a/Lisp/ssg_dbg.lsp +++ b/Lisp/ssg_dbg.lsp @@ -264,5 +264,14 @@ ;; ------------------------------------------------------------ (defun dbgp (msg) (dbgmsg msg)) +;; ------------------------------------------------------------ +;; DBGFLUSH - Puffer sofort auf Platte schreiben (oeffentlich) +;; Nuetzlich wenn kein dbgreturn folgt (z.B. Startup-Code) +;; ------------------------------------------------------------ +(defun dbgflush () + (dbg-flush) + (princ) +) + (prompt "\nssg_dbg geladen.") (princ) diff --git a/Lisp/ssg_load.lsp b/Lisp/ssg_load.lsp index bb6d7a9..30f581a 100644 --- a/Lisp/ssg_load.lsp +++ b/Lisp/ssg_load.lsp @@ -20,9 +20,11 @@ (strcat (getvar "DWGPREFIX")) ) ) - (load (strcat base-path "ssg_core.lsp") "ssg_core.lsp nicht gefunden") (load (strcat base-path "ssg_dbg.lsp") "ssg_dbg.lsp nicht gefunden") - (dbgopen "debugfile.dbg" "DXFM_LOG") ; Debug-Datei im Log-Verzeichnis oeffnen + (if (not *dbg-path*) + (dbgopen "debugfile.dbg" "DXFM_LOG") ; Fallback: direkt geladen ohne on_start.lsp + ) + (load (strcat base-path "ssg_core.lsp") "ssg_core.lsp nicht gefunden") (load (strcat base-path "ssg_dialog.lsp") "ssg_dialog.lsp nicht gefunden") (load (strcat base-path "ssg_layer.lsp") "ssg_layer.lsp nicht gefunden") ;; KreiselInsert.lsp entfernt - ersetzt durch Python/PyRx (lib/elemente/kreisel.py, eckrad.py) diff --git a/bin/on_start.lsp b/bin/on_start.lsp index bcf2579..32dc255 100644 --- a/bin/on_start.lsp +++ b/bin/on_start.lsp @@ -15,7 +15,38 @@ ) ) -(defun ssg-lib-startup ( / lisp-pfad menu-pfad curr-srch menu-datei) +;; ------------------------------------------------------------ +;; 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-DBG-PYRX - PyRx-Ladeprozess ins Debug-Log schreiben +;; Wird nach arxload aufgerufen, damit alle Ergebniswerte vorliegen. +;; ------------------------------------------------------------ +(defun ssg-dbg-pyrx (pyrx-pfad ver-major brx-datei brx-result / arx-name) + (dbgmsg "[PyRx] --- Umgebung ---") + (dbgmsg (strcat "PYTHONHOME: " (if (getenv "PYTHONHOME") (getenv "PYTHONHOME") "nicht gesetzt"))) + (dbgmsg (strcat "PYTHONPATH: " (if (getenv "PYTHONPATH") (getenv "PYTHONPATH") "nicht gesetzt"))) + (dbgmsg (strcat "PATH (Anfang): " (substr (getenv "PATH") 1 120))) + (dbgmsg "[PyRx] --- Eingabewerte ---") + (dbgmsg (strcat "pyrx-pfad: " pyrx-pfad)) + (dbgmsg (strcat "ver-major: " ver-major)) + (dbgmsg (strcat "brx-datei: " brx-datei)) + (dbgmsg "[PyRx] --- arxload Ergebnis ---") + (dbgmsg (strcat "arxload Rueckgabe: " (vl-princ-to-string brx-result))) + (dbgmsg (strcat "arxload Fehler? " (if (vl-catch-all-error-p brx-result) (vl-catch-all-error-message brx-result) "nein"))) + (setq arx-name (strcat "rxloaderv" ver-major ".0.brx")) + (dbgmsg (strcat "(arx) rxloader? " (if (member arx-name (arx)) "JA" "NEIN"))) + (dbgmsg (strcat "(arx) Liste: " (vl-princ-to-string (arx)))) + (dbgflush) +) + +(defun ssg-lib-startup ( / lisp-pfad menu-pfad curr-srch menu-datei + pyrx-pfad acadver-str ver-punkt ver-major brx-datei brx-fallback brx-result) ;; Pfade aus Umgebungsvariablen lesen (setq lisp-pfad (getenv "DXFM_LISP")) @@ -27,6 +58,18 @@ (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...") ;; LISP-Pfad zum BricsCAD-Suchpfad hinzufuegen @@ -77,7 +120,8 @@ (setq brx-datei (strcat pyrx-pfad "/RxLoaderV" ver-major ".0.brx")) (if (findfile brx-datei) (progn - (arxload brx-datei) + (setq brx-result (vl-catch-all-apply 'arxload (list brx-datei))) + (ssg-dbg-pyrx pyrx-pfad ver-major brx-datei brx-result) (princ (strcat "\n[SSG_LIB] PyRx BRX geladen (V" ver-major "): " brx-datei)) ) (progn @@ -102,17 +146,45 @@ ) ;; Python-Module laden (PyRx) + (dbgmsg "[PYLOAD] --- Python-Module ---") (if menu-pfad (foreach pymod '("eckrad" "kreisel" "dblclick" "omniflo" "omniflo_boegen" "omniflo_weichen") (if (findfile (strcat menu-pfad "/lib/elemente/" pymod ".py")) (progn + (dbgmsg (strcat "PYLOAD start: " pymod ".py")) (command "PYLOAD" (strcat menu-pfad "/lib/elemente/" pymod ".py")) + (dbgmsg (strcat "PYLOAD done: " pymod ".py")) (princ (strcat "\n[SSG_LIB] Python-Modul " pymod ".py geladen.")) ) - (princ (strcat "\n[SSG_LIB] HINWEIS: " pymod ".py nicht gefunden.")) + (progn + (dbgmsg (strcat "PYLOAD skip: " pymod ".py -- nicht gefunden")) + (princ (strcat "\n[SSG_LIB] HINWEIS: " pymod ".py nicht gefunden.")) + ) ) ) ) + (dbgflush) + + ;; Verfuegbarkeits-Check aller erwarteten Funktionen + (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 "[CHECK] --- PyRx Befehle (BRX-Ebene, nicht via atoms-family pruefbar) ---") + (dbgmsg (strcat "KreiselInsert: " (ssg-dbg-fn "C:KREISELINSERT"))) + (dbgmsg (strcat "KreiselEdit: " (ssg-dbg-fn "C:KREISELEDIT"))) + (dbgmsg (strcat "EckradEdit: " (ssg-dbg-fn "C:ECKRADEDIT"))) + (dbgmsg (strcat "SSG_BLOCKEDIT: " (ssg-dbg-fn "C:SSG_BLOCKEDIT"))) + (dbgmsg (strcat "OMNI_AP60: " (ssg-dbg-fn "C:OMNI_AP60"))) + (dbgmsg (strcat "OMNI_APB_630_90: " (ssg-dbg-fn "C:OMNI_APB_630_90"))) + (dbgmsg (strcat "OMNI_W90_Einfach: " (ssg-dbg-fn "C:OMNI_W90_EINFACH"))) + (dbgflush) (princ "\n[SSG_LIB] Startup abgeschlossen.") )