This commit is contained in:
2026-06-25 16:19:50 +02:00
7 changed files with 73 additions and 56 deletions
+11 -7
View File
@@ -47,16 +47,20 @@
(if (null *ein-ks-ein-local*) (setq *ein-ks-ein-local* nil)) (if (null *ein-ks-ein-local*) (setq *ein-ks-ein-local* nil))
(if (null *lib-initialized*) (setq *lib-initialized* nil)) (if (null *lib-initialized*) (setq *lib-initialized* nil))
;; Block-Pfad: DXFM_BLOCKS → Heuristik (3D-Bloecke benoetigt) ;; DXFM_DIM sicher lesen (type-Guard gegen nicht-String Rueckgabewerte)
(setq *gf-dxfm-dim* (getenv "DXFM_DIM"))
(if (not (= (type *gf-dxfm-dim*) 'STR)) (setq *gf-dxfm-dim* "3D"))
;; Block-Pfad: primaer aus DXFMAKRO + DXFM_DIM, dann *ssg-lisp-pfad*-Heuristik
(if (null block-pfad) (if (null block-pfad)
(setq block-pfad (setq block-pfad
(cond (cond
((getenv "DXFM_BLOCKS") ((and (getenv "DXFMAKRO") (= (type (getenv "DXFMAKRO")) 'STR))
(strcat (vl-string-translate "\\" "/" (getenv "DXFM_BLOCKS")) "/")) (strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" (getenv "DXFMAKRO")))
((and (boundp '*ssg-lisp-pfad*) *ssg-lisp-pfad* "/data/ils/" *gf-dxfm-dim* "/"))
((and (boundp '*ssg-lisp-pfad*) (= (type *ssg-lisp-pfad*) 'STR)
(vl-string-search "/Lisp" *ssg-lisp-pfad*)) (vl-string-search "/Lisp" *ssg-lisp-pfad*))
(strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*)) (strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*))
"/data/ils/3D/")) "/data/ils/" *gf-dxfm-dim* "/"))
(t nil) (t nil)
) )
) )
@@ -1241,11 +1245,11 @@
;; ============================================================ ;; ============================================================
;; START ;; START
;; ============================================================ ;; ============================================================
(princ "\n=========================================")
(princ "\n>>> GEFAELLESTRECKE v2.0 geladen <<<") (princ "\n>>> GEFAELLESTRECKE v2.0 geladen <<<")
(princ "\n>>> Befehl: GEFAELLESTRECKE <<<") (princ "\n>>> Befehl: Gefaellestrecke")
(princ "\n Modus 1: Manuelle Eingabe") (princ "\n Modus 1: Manuelle Eingabe")
(princ "\n Modus 2: 3D-Linie") (princ "\n Modus 2: 3D-Linie")
(princ "\n Modus 3: Linienzug mit Gefaellebogen") (princ "\n Modus 3: Linienzug mit Gefaellebogen")
(if block-pfad (princ (strcat "\n Block-Pfad: " block-pfad)))
(princ "\n=========================================") (princ "\n=========================================")
(princ) (princ)
+14 -8
View File
@@ -16,22 +16,25 @@
(setq #Eckrad_LetzteNr 0) (setq #Eckrad_LetzteNr 0)
) )
;; Block-Pfad immer data/ils/2D/ (Kreisel/Eckrad Bloecke nur 2D vorhanden) ;; DXFM_DIM sicher lesen (type-Guard gegen nicht-String Rueckgabewerte)
(setq *ki-dxfm-dim* (getenv "DXFM_DIM"))
(if (not (= (type *ki-dxfm-dim*) 'STR)) (setq *ki-dxfm-dim* "3D"))
;; Block-Pfad: primaer aus DXFMAKRO + DXFM_DIM, dann *ssg-lisp-pfad*-Heuristik
(setq block-pfad (setq block-pfad
(cond (cond
((getenv "DXFM_DATA") ((and (getenv "DXFMAKRO") (= (type (getenv "DXFMAKRO")) 'STR))
(strcat (vl-string-translate "\\" "/" (getenv "DXFM_DATA")) "/ils/2D/")) (strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" (getenv "DXFMAKRO")))
((and (boundp '*ssg-lisp-pfad*) *ssg-lisp-pfad* "/data/ils/" *ki-dxfm-dim* "/"))
((and (boundp '*ssg-lisp-pfad*) (= (type *ssg-lisp-pfad*) 'STR)
(vl-string-search "/Lisp" *ssg-lisp-pfad*)) (vl-string-search "/Lisp" *ssg-lisp-pfad*))
(strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*)) (strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*))
"/data/ils/2D/")) "/data/ils/" *ki-dxfm-dim* "/"))
(t (t
(princ "\n[KreiselInsert] WARNUNG: Block-Pfad nicht ermittelbar!") (princ "\n[KreiselInsert] WARNUNG: Block-Pfad nicht ermittelbar!")
nil) nil)
) )
) )
(setq *block-path* block-pfad) (setq *block-path* block-pfad)
(if block-pfad (princ (strcat "\nBlock-Pfad: " block-pfad)))
;; ssg_core laden falls noch nicht geschehen (Schutz bei direktem Laden ohne ssg-ensure) ;; ssg_core laden falls noch nicht geschehen (Schutz bei direktem Laden ohne ssg-ensure)
(if (null (car (atoms-family 1 '("SSG-CFG-OR")))) (if (null (car (atoms-family 1 '("SSG-CFG-OR"))))
@@ -1282,6 +1285,9 @@
(princ) (princ)
) )
(princ "\nKreiselInsert.lsp geladen (Version 7.0 - Auto-Nummerierung + Beschriftung + Attribute + Redraw + Eckrad)") (princ "\n>>> KREISELINSERT v7.0 geladen <<<")
(princ "\nBefehle: KreiselInsert, KreiselConnect, KreiselRedraw, KreiselEdit, KreiselQuick, KreiselParams, ILS_Eckrad") (princ "\n>>> Befehle: KreiselInsert, KreiselConnect, KreiselRedraw,")
(princ "\n KreiselEdit, KreiselQuick, KreiselParams, ILS_Eckrad")
(if block-pfad (princ (strcat "\n Block-Pfad: " block-pfad)))
(princ "\n=========================================")
(princ) (princ)
+17 -17
View File
@@ -11,19 +11,21 @@
;; ============================================================ ;; ============================================================
;; TEIL 1: ABHAENGIGKEITEN ;; TEIL 1: ABHAENGIGKEITEN
;; ============================================================ ;; ============================================================
;; Block-Pfad: 1) DXFM_BLOCKS, 2) aus *ssg-lisp-pfad* ableiten ;; DXFM_DIM sicher lesen (type-Guard gegen nicht-String Rueckgabewerte)
(setq *vf-dxfm-dim* (getenv "DXFM_DIM"))
(if (not (= (type *vf-dxfm-dim*) 'STR)) (setq *vf-dxfm-dim* "3D"))
;; Block-Pfad: primaer aus DXFMAKRO + DXFM_DIM, dann *ssg-lisp-pfad*-Heuristik
(setq modul-pfad (setq modul-pfad
(cond (cond
((getenv "DXFM_BLOCKS") ((and (getenv "DXFMAKRO") (= (type (getenv "DXFMAKRO")) 'STR))
(strcat (vl-string-translate "\\" "/" (getenv "DXFM_BLOCKS")) "/")) (strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" (getenv "DXFMAKRO")))
((and (boundp '*ssg-lisp-pfad*) *ssg-lisp-pfad* "/data/ils/" *vf-dxfm-dim* "/"))
((and (boundp '*ssg-lisp-pfad*) (= (type *ssg-lisp-pfad*) 'STR)
(vl-string-search "/Lisp" *ssg-lisp-pfad*)) (vl-string-search "/Lisp" *ssg-lisp-pfad*))
(strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*)) (strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*))
"/data/ils/" "/data/ils/" *vf-dxfm-dim* "/"))
(if (getenv "DXFM_DIM") (getenv "DXFM_DIM") "2D")
"/"))
(t (t
(princ "\n[vf_core] WARNUNG: DXFM_BLOCKS nicht gesetzt - Block-Pfad unbekannt!") (princ "\n[vf_core] WARNUNG: Block-Pfad nicht ermittelbar!")
nil) nil)
) )
) )
@@ -651,6 +653,7 @@
;; Guard: Untermodule nur beim ersten Laden von vf_core.lsp ausfuehren. ;; Guard: Untermodule nur beim ersten Laden von vf_core.lsp ausfuehren.
(if (not *ssg-vf-submodule-loaded*) (if (not *ssg-vf-submodule-loaded*)
(progn (progn
(princ "\n>>> VARIOFOERDERER v26.0 geladen <<<")
;; Lisp-Pfad ermitteln: 1) DXFM_LISP, 2) *ssg-lisp-pfad* (vom MNL gesetzt) ;; Lisp-Pfad ermitteln: 1) DXFM_LISP, 2) *ssg-lisp-pfad* (vom MNL gesetzt)
(setq *vf-lisp-pfad* (setq *vf-lisp-pfad*
(cond (cond
@@ -889,16 +892,13 @@
(setq *ssg-VarioFoerderer-loaded* t) (setq *ssg-VarioFoerderer-loaded* t)
(setq *ssg-EtageVarioFoerderer-loaded* t) (setq *ssg-EtageVarioFoerderer-loaded* t)
(princ "\n=========================================") (princ "\n>>> Befehle: VarioFoerderer, Foerderanlage, EtageVarioFoerderer")
(princ "\n>>> VF_CORE v26.0 geladen <<<") (princ "\n Typen:")
(princ "\n=========================================") (setq *vf-typ-idx* 1)
(princ "\nBefehle:")
(princ "\n VarioFoerderer - Foerderanlage erstellen (Typ-Auswahl)")
(princ "\n FOERDERANLAGE - Alias fuer VarioFoerderer")
(princ "\n ETAGEVARIOFOERDERER - Etage-Foerderanlage direkt")
(princ "\nRegistrierte Typen:")
(foreach eintr *vf-typ-registry* (foreach eintr *vf-typ-registry*
(princ (strcat "\n " (car eintr) " - " (nth 3 eintr))) (princ (strcat "\n " (itoa *vf-typ-idx*) ". " (car eintr) " - " (nth 3 eintr)))
(setq *vf-typ-idx* (1+ *vf-typ-idx*))
) )
(if block-pfad (princ (strcat "\n Block-Pfad: " block-pfad)))
(princ "\n=========================================") (princ "\n=========================================")
(princ) (princ)
+2 -2
View File
@@ -25,8 +25,8 @@ set "DXFM_LISP=%DXFMAKRO%\Lisp"
set "DXFM_DCL=%DXFMAKRO%\dcl" set "DXFM_DCL=%DXFMAKRO%\dcl"
set "DXFM_RESULTS=%DXFMAKRO%\results" set "DXFM_RESULTS=%DXFMAKRO%\results"
REM 2D/3D-Modus: Standard ist 2D REM 2D/3D-Modus: Standard ist 3D (alle Module nutzen data\ils\3D\)
set "DXFM_DIM=2D" set "DXFM_DIM=3D"
set BRICSCAD="C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe" set BRICSCAD="C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe"
Binary file not shown.
Binary file not shown.
+29 -22
View File
@@ -1,9 +1,9 @@
;; ============================================================ ;; ============================================================
;; SSG_LIB.mnl - Automatisch geladen beim MENULOAD von SSG_LIB.mnu ;; SSG_LIB.mnl - Automatisch geladen beim MENULOAD von SSG_LIB.mnu
;; ;;
;; Definiert den Lazy-Loader (ssg-ensure) und laedt die ;; Definiert den Lazy-Loader (ssg-ensure) und laedt alle Module.
;; Kern-Module (ssg_core, ssg_dbg, ssg_dialog, ssg_layer). ;; Kern-Module: ssg_core, ssg_dbg, ssg_dialog, ssg_layer, ssg_id
;; Feature-Module werden erst bei Menueklick nachgeladen. ;; Feature-Module: KreiselInsert, Gefaellestrecke, VarioFoerderer, ...
;; ============================================================ ;; ============================================================
;; Globale Variable: Pfad zu den LISP-Dateien ;; Globale Variable: Pfad zu den LISP-Dateien
@@ -22,8 +22,7 @@
(progn (progn
(setq *ssg-lisp-pfad* (setq *ssg-lisp-pfad*
(strcat (substr *ssg-mnl-datei* 1 *ssg-menu-pos*) "/Lisp")) (strcat (substr *ssg-mnl-datei* 1 *ssg-menu-pos*) "/Lisp"))
(if (findfile (strcat *ssg-lisp-pfad* "/ssg_core.lsp")) (if (not (findfile (strcat *ssg-lisp-pfad* "/ssg_core.lsp")))
(princ (strcat "\n[SSG_LIB] Pfad heuristisch ermittelt: " *ssg-lisp-pfad*))
(progn (progn
(setq *ssg-lisp-pfad* nil) (setq *ssg-lisp-pfad* nil)
(princ "\n[SSG_LIB] Heuristik fehlgeschlagen: ssg_core.lsp nicht gefunden.") (princ "\n[SSG_LIB] Heuristik fehlgeschlagen: ssg_core.lsp nicht gefunden.")
@@ -39,18 +38,14 @@
;; ------------------------------------------------------------ ;; ------------------------------------------------------------
;; ssg-ensure - Lazy-Loader fuer SSG_LIB Module ;; ssg-ensure - Lazy-Loader fuer SSG_LIB Module
;; ;;
;; Prueft ob ein Modul bereits geladen ist (via *ssg-<modul>-loaded*). ;; Laedt ein Modul einmalig. Setzt Flag *ssg-<modul>-loaded*.
;; Wenn nicht, laedt es aus DXFM_LISP. ;; Laedt Kern-Abhaengigkeiten (core/dbg/dialog/layer) automatisch.
;; Laedt automatisch Kern-Abhaengigkeiten (core, dbg, dialog, layer)
;; falls diese noch nicht geladen sind.
;; ------------------------------------------------------------ ;; ------------------------------------------------------------
(defun ssg-ensure (modul / flag-sym datei) (defun ssg-ensure (modul / flag-sym)
;; Flag-Symbol: *ssg-ssg_core-loaded* etc.
(setq flag-sym (read (strcat "*ssg-" modul "-loaded*"))) (setq flag-sym (read (strcat "*ssg-" modul "-loaded*")))
(if (not (eval flag-sym)) (if (not (eval flag-sym))
(progn (progn
;; Pfad pruefen ;; Pfad nachschlagen falls noch nicht gesetzt
(if (null *ssg-lisp-pfad*) (if (null *ssg-lisp-pfad*)
(progn (progn
(setq *ssg-lisp-pfad* (getenv "DXFM_LISP")) (setq *ssg-lisp-pfad* (getenv "DXFM_LISP"))
@@ -66,11 +61,13 @@
(princ "\n[SSG_LIB] FEHLER: DXFM_LISP nicht gesetzt!") (princ "\n[SSG_LIB] FEHLER: DXFM_LISP nicht gesetzt!")
) )
(progn (progn
;; Kern-Module als Abhaengigkeit laden (falls noch nicht geschehen) ;; Kern-Module als Abhaengigkeit laden (je nur einmal)
;; WICHTIG: auch den modul-spezifischen Flag setzen, sonst Doppelladen
(if (not *ssg-core-loaded*) (if (not *ssg-core-loaded*)
(progn (progn
(ssg-ensure-load "ssg_core") (ssg-ensure-load "ssg_core")
(set '*ssg-core-loaded* t) (set '*ssg-core-loaded* t)
(set '*ssg-ssg_core-loaded* t)
(ssg-load-config) (ssg-load-config)
) )
) )
@@ -78,7 +75,7 @@
(progn (progn
(ssg-ensure-load "ssg_dbg") (ssg-ensure-load "ssg_dbg")
(set '*ssg-dbg-loaded* t) (set '*ssg-dbg-loaded* t)
;; Debug-Log oeffnen (set '*ssg-ssg_dbg-loaded* t)
(if (and (atoms-family 1 '("DBGOPEN")) (getenv "DXFM_LOG")) (if (and (atoms-family 1 '("DBGOPEN")) (getenv "DXFM_LOG"))
(dbgopen "debugfile.dbg" "DXFM_LOG") (dbgopen "debugfile.dbg" "DXFM_LOG")
) )
@@ -88,16 +85,18 @@
(progn (progn
(ssg-ensure-load "ssg_dialog") (ssg-ensure-load "ssg_dialog")
(set '*ssg-dialog-loaded* t) (set '*ssg-dialog-loaded* t)
(set '*ssg-ssg_dialog-loaded* t)
) )
) )
(if (not *ssg-layer-loaded*) (if (not *ssg-layer-loaded*)
(progn (progn
(ssg-ensure-load "ssg_layer") (ssg-ensure-load "ssg_layer")
(set '*ssg-layer-loaded* t) (set '*ssg-layer-loaded* t)
(set '*ssg-ssg_layer-loaded* t)
) )
) )
;; Jetzt das angeforderte Modul laden (falls nicht schon ein Kern-Modul) ;; Angefordertes Feature-Modul laden (falls noch nicht via Kern-Flags gesetzt)
(if (not (eval flag-sym)) (if (not (eval flag-sym))
(progn (progn
(ssg-ensure-load modul) (ssg-ensure-load modul)
@@ -111,7 +110,7 @@
(princ) (princ)
) )
;; Hilfsfunktion: Datei laden mit Fehlerbehandlung ;; Hilfsfunktion: Datei laden mit Fehlerbehandlung (ohne eigene Lademeldung)
(defun ssg-ensure-load (modul / datei result) (defun ssg-ensure-load (modul / datei result)
(setq datei (strcat *ssg-lisp-pfad* "/" modul ".lsp")) (setq datei (strcat *ssg-lisp-pfad* "/" modul ".lsp"))
(if (findfile datei) (if (findfile datei)
@@ -120,7 +119,6 @@
(if (vl-catch-all-error-p result) (if (vl-catch-all-error-p result)
(princ (strcat "\n[SSG_LIB] FEHLER beim Laden von " modul ": " (princ (strcat "\n[SSG_LIB] FEHLER beim Laden von " modul ": "
(vl-catch-all-error-message result))) (vl-catch-all-error-message result)))
(princ (strcat "\n[SSG_LIB] Geladen: " modul ".lsp"))
) )
) )
(princ (strcat "\n[SSG_LIB] WARNUNG: " datei " nicht gefunden!")) (princ (strcat "\n[SSG_LIB] WARNUNG: " datei " nicht gefunden!"))
@@ -128,26 +126,35 @@
) )
;; ------------------------------------------------------------ ;; ------------------------------------------------------------
;; Beim MNL-Laden: Alle Module laden + Menue einhaengen ;; Beim MNL-Laden: Kern-Module + Feature-Module laden
;; ------------------------------------------------------------ ;; ------------------------------------------------------------
(if *ssg-lisp-pfad* (if *ssg-lisp-pfad*
(progn (progn
;; Alle Module in der richtigen Reihenfolge laden ;; 1) Kern-Module (Core)
(ssg-ensure "ssg_core") (ssg-ensure "ssg_core")
(ssg-ensure "ssg_dbg") (ssg-ensure "ssg_dbg")
(ssg-ensure "ssg_dialog") (ssg-ensure "ssg_dialog")
(ssg-ensure "ssg_layer") (ssg-ensure "ssg_layer")
(ssg-ensure "ssg_id") (ssg-ensure "ssg_id")
;; Allgemein-Zusammenfassung
(princ "\n=========================================")
(princ "\n[SSG_LIB] Core-Module geladen:")
(princ "\n ssg_core, ssg_dbg, ssg_dialog, ssg_layer, ssg_id")
(princ (strcat "\n Pfad: " *ssg-lisp-pfad*))
(princ "\n=========================================")
;; 2) Feature-Module in Anzeigereihenfolge
(ssg-ensure "KreiselInsert") (ssg-ensure "KreiselInsert")
(ssg-ensure "Gefaellestrecke")
(ssg-ensure "VarioFoerderer") (ssg-ensure "VarioFoerderer")
(ssg-ensure "EtageVarioFoerderer") (ssg-ensure "EtageVarioFoerderer")
(ssg-ensure "Gefaellestrecke")
(ssg-ensure "export") (ssg-ensure "export")
(ssg-ensure "external_call") (ssg-ensure "external_call")
(ssg-ensure "OmniModulInsert") (ssg-ensure "OmniModulInsert")
(ssg-ensure "SSG_LIB_Commands") (ssg-ensure "SSG_LIB_Commands")
;; Pulldown-Menue in die Menueleiste einhaengen ;; Menue einhaengen
(menucmd "P13=+SSG_LIB.POP1") (menucmd "P13=+SSG_LIB.POP1")
(setvar "DBLCLKEDIT" 1) (setvar "DBLCLKEDIT" 1)
(princ "\n[SSG_LIB] Alle Module geladen. Menue aktiv.") (princ "\n[SSG_LIB] Alle Module geladen. Menue aktiv.")