Compare commits

..

2 Commits

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 *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)
(setq block-pfad
(cond
((getenv "DXFM_BLOCKS")
(strcat (vl-string-translate "\\" "/" (getenv "DXFM_BLOCKS")) "/"))
((and (boundp '*ssg-lisp-pfad*) *ssg-lisp-pfad*
((and (getenv "DXFMAKRO") (= (type (getenv "DXFMAKRO")) 'STR))
(strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" (getenv "DXFMAKRO")))
"/data/ils/" *gf-dxfm-dim* "/"))
((and (boundp '*ssg-lisp-pfad*) (= (type *ssg-lisp-pfad*) 'STR)
(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)
)
)
@@ -1241,11 +1245,11 @@
;; ============================================================
;; START
;; ============================================================
(princ "\n=========================================")
(princ "\n>>> GEFAELLESTRECKE v2.0 geladen <<<")
(princ "\n>>> Befehl: GEFAELLESTRECKE <<<")
(princ "\n>>> Befehl: Gefaellestrecke")
(princ "\n Modus 1: Manuelle Eingabe")
(princ "\n Modus 2: 3D-Linie")
(princ "\n Modus 3: Linienzug mit Gefaellebogen")
(if block-pfad (princ (strcat "\n Block-Pfad: " block-pfad)))
(princ "\n=========================================")
(princ)
+14 -8
View File
@@ -16,22 +16,25 @@
(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
(cond
((getenv "DXFM_DATA")
(strcat (vl-string-translate "\\" "/" (getenv "DXFM_DATA")) "/ils/2D/"))
((and (boundp '*ssg-lisp-pfad*) *ssg-lisp-pfad*
((and (getenv "DXFMAKRO") (= (type (getenv "DXFMAKRO")) 'STR))
(strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" (getenv "DXFMAKRO")))
"/data/ils/" *ki-dxfm-dim* "/"))
((and (boundp '*ssg-lisp-pfad*) (= (type *ssg-lisp-pfad*) 'STR)
(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
(princ "\n[KreiselInsert] WARNUNG: Block-Pfad nicht ermittelbar!")
nil)
)
)
(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)
(if (null (car (atoms-family 1 '("SSG-CFG-OR"))))
@@ -1282,6 +1285,9 @@
(princ)
)
(princ "\nKreiselInsert.lsp geladen (Version 7.0 - Auto-Nummerierung + Beschriftung + Attribute + Redraw + Eckrad)")
(princ "\nBefehle: KreiselInsert, KreiselConnect, KreiselRedraw, KreiselEdit, KreiselQuick, KreiselParams, ILS_Eckrad")
(princ "\n>>> KREISELINSERT v7.0 geladen <<<")
(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)
+17 -17
View File
@@ -11,19 +11,21 @@
;; ============================================================
;; 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
(cond
((getenv "DXFM_BLOCKS")
(strcat (vl-string-translate "\\" "/" (getenv "DXFM_BLOCKS")) "/"))
((and (boundp '*ssg-lisp-pfad*) *ssg-lisp-pfad*
((and (getenv "DXFMAKRO") (= (type (getenv "DXFMAKRO")) 'STR))
(strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" (getenv "DXFMAKRO")))
"/data/ils/" *vf-dxfm-dim* "/"))
((and (boundp '*ssg-lisp-pfad*) (= (type *ssg-lisp-pfad*) 'STR)
(vl-string-search "/Lisp" *ssg-lisp-pfad*))
(strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*))
"/data/ils/"
(if (getenv "DXFM_DIM") (getenv "DXFM_DIM") "2D")
"/"))
"/data/ils/" *vf-dxfm-dim* "/"))
(t
(princ "\n[vf_core] WARNUNG: DXFM_BLOCKS nicht gesetzt - Block-Pfad unbekannt!")
(princ "\n[vf_core] WARNUNG: Block-Pfad nicht ermittelbar!")
nil)
)
)
@@ -651,6 +653,7 @@
;; Guard: Untermodule nur beim ersten Laden von vf_core.lsp ausfuehren.
(if (not *ssg-vf-submodule-loaded*)
(progn
(princ "\n>>> VARIOFOERDERER v26.0 geladen <<<")
;; Lisp-Pfad ermitteln: 1) DXFM_LISP, 2) *ssg-lisp-pfad* (vom MNL gesetzt)
(setq *vf-lisp-pfad*
(cond
@@ -889,16 +892,13 @@
(setq *ssg-VarioFoerderer-loaded* t)
(setq *ssg-EtageVarioFoerderer-loaded* t)
(princ "\n=========================================")
(princ "\n>>> VF_CORE v26.0 geladen <<<")
(princ "\n=========================================")
(princ "\nBefehle:")
(princ "\n VarioFoerderer - Foerderanlage erstellen (Typ-Auswahl)")
(princ "\n FOERDERANLAGE - Alias fuer VarioFoerderer")
(princ "\n ETAGEVARIOFOERDERER - Etage-Foerderanlage direkt")
(princ "\nRegistrierte Typen:")
(princ "\n>>> Befehle: VarioFoerderer, Foerderanlage, EtageVarioFoerderer")
(princ "\n Typen:")
(setq *vf-typ-idx* 1)
(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)
+2 -2
View File
@@ -25,8 +25,8 @@ set "DXFM_LISP=%DXFMAKRO%\Lisp"
set "DXFM_DCL=%DXFMAKRO%\dcl"
set "DXFM_RESULTS=%DXFMAKRO%\results"
REM 2D/3D-Modus: Standard ist 2D
set "DXFM_DIM=2D"
REM 2D/3D-Modus: Standard ist 3D (alle Module nutzen data\ils\3D\)
set "DXFM_DIM=3D"
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
;;
;; Definiert den Lazy-Loader (ssg-ensure) und laedt die
;; Kern-Module (ssg_core, ssg_dbg, ssg_dialog, ssg_layer).
;; Feature-Module werden erst bei Menueklick nachgeladen.
;; Definiert den Lazy-Loader (ssg-ensure) und laedt alle Module.
;; Kern-Module: ssg_core, ssg_dbg, ssg_dialog, ssg_layer, ssg_id
;; Feature-Module: KreiselInsert, Gefaellestrecke, VarioFoerderer, ...
;; ============================================================
;; Globale Variable: Pfad zu den LISP-Dateien
@@ -22,8 +22,7 @@
(progn
(setq *ssg-lisp-pfad*
(strcat (substr *ssg-mnl-datei* 1 *ssg-menu-pos*) "/Lisp"))
(if (findfile (strcat *ssg-lisp-pfad* "/ssg_core.lsp"))
(princ (strcat "\n[SSG_LIB] Pfad heuristisch ermittelt: " *ssg-lisp-pfad*))
(if (not (findfile (strcat *ssg-lisp-pfad* "/ssg_core.lsp")))
(progn
(setq *ssg-lisp-pfad* nil)
(princ "\n[SSG_LIB] Heuristik fehlgeschlagen: ssg_core.lsp nicht gefunden.")
@@ -39,18 +38,14 @@
;; ------------------------------------------------------------
;; ssg-ensure - Lazy-Loader fuer SSG_LIB Module
;;
;; Prueft ob ein Modul bereits geladen ist (via *ssg-<modul>-loaded*).
;; Wenn nicht, laedt es aus DXFM_LISP.
;; Laedt automatisch Kern-Abhaengigkeiten (core, dbg, dialog, layer)
;; falls diese noch nicht geladen sind.
;; Laedt ein Modul einmalig. Setzt Flag *ssg-<modul>-loaded*.
;; Laedt Kern-Abhaengigkeiten (core/dbg/dialog/layer) automatisch.
;; ------------------------------------------------------------
(defun ssg-ensure (modul / flag-sym datei)
;; Flag-Symbol: *ssg-ssg_core-loaded* etc.
(defun ssg-ensure (modul / flag-sym)
(setq flag-sym (read (strcat "*ssg-" modul "-loaded*")))
(if (not (eval flag-sym))
(progn
;; Pfad pruefen
;; Pfad nachschlagen falls noch nicht gesetzt
(if (null *ssg-lisp-pfad*)
(progn
(setq *ssg-lisp-pfad* (getenv "DXFM_LISP"))
@@ -66,11 +61,13 @@
(princ "\n[SSG_LIB] FEHLER: DXFM_LISP nicht gesetzt!")
)
(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*)
(progn
(ssg-ensure-load "ssg_core")
(set '*ssg-core-loaded* t)
(set '*ssg-ssg_core-loaded* t)
(ssg-load-config)
)
)
@@ -78,7 +75,7 @@
(progn
(ssg-ensure-load "ssg_dbg")
(set '*ssg-dbg-loaded* t)
;; Debug-Log oeffnen
(set '*ssg-ssg_dbg-loaded* t)
(if (and (atoms-family 1 '("DBGOPEN")) (getenv "DXFM_LOG"))
(dbgopen "debugfile.dbg" "DXFM_LOG")
)
@@ -88,16 +85,18 @@
(progn
(ssg-ensure-load "ssg_dialog")
(set '*ssg-dialog-loaded* t)
(set '*ssg-ssg_dialog-loaded* t)
)
)
(if (not *ssg-layer-loaded*)
(progn
(ssg-ensure-load "ssg_layer")
(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))
(progn
(ssg-ensure-load modul)
@@ -111,7 +110,7 @@
(princ)
)
;; Hilfsfunktion: Datei laden mit Fehlerbehandlung
;; Hilfsfunktion: Datei laden mit Fehlerbehandlung (ohne eigene Lademeldung)
(defun ssg-ensure-load (modul / datei result)
(setq datei (strcat *ssg-lisp-pfad* "/" modul ".lsp"))
(if (findfile datei)
@@ -120,7 +119,6 @@
(if (vl-catch-all-error-p result)
(princ (strcat "\n[SSG_LIB] FEHLER beim Laden von " modul ": "
(vl-catch-all-error-message result)))
(princ (strcat "\n[SSG_LIB] Geladen: " modul ".lsp"))
)
)
(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*
(progn
;; Alle Module in der richtigen Reihenfolge laden
;; 1) Kern-Module (Core)
(ssg-ensure "ssg_core")
(ssg-ensure "ssg_dbg")
(ssg-ensure "ssg_dialog")
(ssg-ensure "ssg_layer")
(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 "Gefaellestrecke")
(ssg-ensure "VarioFoerderer")
(ssg-ensure "EtageVarioFoerderer")
(ssg-ensure "Gefaellestrecke")
(ssg-ensure "export")
(ssg-ensure "external_call")
(ssg-ensure "OmniModulInsert")
(ssg-ensure "SSG_LIB_Commands")
;; Pulldown-Menue in die Menueleiste einhaengen
;; Menue einhaengen
(menucmd "P13=+SSG_LIB.POP1")
(setvar "DBLCLKEDIT" 1)
(princ "\n[SSG_LIB] Alle Module geladen. Menue aktiv.")