Startup-Alert bei VarioFoerderer entfernt. Alle verwendete Blöcke in VarioFoerderer.lsp und Gefaellestrecke.lsp sind aus data/ils/3D/ - DXFM_BLOCKS.

This commit is contained in:
2026-06-25 14:30:03 +02:00
parent b0aeb04022
commit db0d9abb7a
8 changed files with 214 additions and 153 deletions
+63 -75
View File
@@ -9,7 +9,7 @@
;; Vor jedem Bogen wird automatisch ein Separator eingefuegt.
;; Gefaellewinkel wird aus deltaH und Geometrie berechnet.
;;
;; Verfuegbare Gefaellebogen-Bloecke (aus ils_library.dxf):
;; Verfuegbare Gefaellebogen-Bloecke (aus data/ils/3D/ als einzelne DWG):
;; Gefaellebogen_links_30(Grad)_R500 (30 Grad Linkskurve)
;; Gefaellebogen_links_60(Grad)_R500 (60 Grad Linkskurve)
;; Gefaellebogen_links_90(Grad)_R500 (90 Grad Linkskurve)
@@ -47,6 +47,21 @@
(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)
(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*
(vl-string-search "/Lisp" *ssg-lisp-pfad*))
(strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*))
"/data/ils/3D/"))
(t nil)
)
)
)
;; ============================================================
;; TEIL 2: KERN-FUNKTIONEN (Guard: nicht doppelt definieren)
;; ============================================================
@@ -83,32 +98,23 @@
(- (caddr p2) (caddr p1))))
)
;; --- Block aus ils_library.dxf laden ---
;; --- Block als einzelne DWG-Datei aus block-pfad laden ---
(if (null (car (atoms-family 1 '("ENSURE-BLOCK-LOADED"))))
(defun ensure-block-loaded (blockname / lib-datei temp-obj)
(defun ensure-block-loaded (blockname / block-datei temp-obj)
(if (not (tblsearch "BLOCK" blockname))
(progn
(if (not *gf-lib-geladen*)
(setq block-datei (strcat block-pfad blockname ".dwg"))
(if (findfile block-datei)
(progn
(setq lib-datei
(strcat (vl-string-translate "\\" "/"
(getenv "DXFM_DATA"))
"/block_libraries/ils_library.dxf"))
(if (findfile lib-datei)
(progn
(princ "\n Lade ils_library.dxf ...")
(setq temp-obj
(vla-InsertBlock modelspace
(vlax-3D-point '(0 0 0))
lib-datei 1.0 1.0 1.0 0))
(vla-Delete temp-obj)
(setq *gf-lib-geladen* t)
(princ " OK")
)
(princ (strcat "\n WARNUNG: Bibliothek nicht gefunden: "
lib-datei))
)
(princ (strcat "\n Lade Block: " blockname " ..."))
(setq temp-obj
(vla-InsertBlock modelspace
(vlax-3D-point '(0 0 0))
block-datei 1.0 1.0 1.0 0))
(vla-Delete temp-obj)
(princ " OK")
)
(princ (strcat "\n FEHLER: Block-Datei nicht gefunden: " block-datei))
)
)
)
@@ -345,73 +351,55 @@
)
)
;; --- Bibliothek initialisieren (auch AS/ES-Massen wenn moeglich) ---
;; --- Bibliothek initialisieren: AS/ES-Masse aus einzelnen DWG-Dateien extrahieren ---
(if (null (car (atoms-family 1 '("INIT-BIBLIOTHEK"))))
(defun init-bibliothek ( / lib-datei temp-obj ks-data ks-ein ks-aus)
(defun init-bibliothek ( / temp-obj ks-data ks-ein ks-aus)
(if *lib-initialized*
t
(progn
(setq lib-datei
(strcat (vl-string-translate "\\" "/"
(getenv "DXFM_DATA"))
"/block_libraries/ils_library.dxf"))
(if (findfile lib-datei)
;; AS-Block laden und Masse extrahieren
(ensure-block-loaded "_3D_AS_90_links")
(if (tblsearch "BLOCK" "_3D_AS_90_links")
(progn
(princ "\n Lade ils_library.dxf ...")
(setq temp-obj
(vla-InsertBlock modelspace
(vlax-3D-point '(0 0 0))
lib-datei 1.0 1.0 1.0 0))
"_3D_AS_90_links" 1.0 1.0 1.0 0))
(setq ks-data (extract-ks-from-block temp-obj))
(vla-Delete temp-obj)
(setq *lib-initialized* t)
(setq *gf-lib-geladen* t)
(princ " OK")
;; AS/ES-Masse extrahieren falls Block vorhanden
(if (tblsearch "BLOCK" "_3D_AS_90_links")
(setq ks-ein (cadr (assoc "KS_EIN" ks-data)))
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
(if (and ks-ein ks-aus)
(progn
(setq temp-obj
(vla-InsertBlock modelspace
(vlax-3D-point '(0 0 0))
"_3D_AS_90_links" 1.0 1.0 1.0 0))
(setq ks-data (extract-ks-from-block temp-obj))
(vla-Delete temp-obj)
(setq ks-ein (cadr (assoc "KS_EIN" ks-data)))
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
(if (and ks-ein ks-aus)
(progn
(setq aus-dx (- (caar ks-aus) (caar ks-ein)))
;; Lokale KS_EIN-Position speichern (Ursprungsrelativ, Block bei (0,0,0))
(setq *aus-ks-ein-local* (car ks-ein))
)
)
(setq aus-dx (- (caar ks-aus) (caar ks-ein)))
(setq *aus-ks-ein-local* (car ks-ein))
)
)
(if (tblsearch "BLOCK" "_3D_ES_90_links")
(progn
(setq temp-obj
(vla-InsertBlock modelspace
(vlax-3D-point '(0 0 0))
"_3D_ES_90_links" 1.0 1.0 1.0 0))
(setq ks-data (extract-ks-from-block temp-obj))
(vla-Delete temp-obj)
(setq ks-ein (cadr (assoc "KS_EIN" ks-data)))
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
(if (and ks-ein ks-aus)
(progn
(setq ein-dx (- (caar ks-aus) (caar ks-ein)))
;; Lokale KS_EIN-Position speichern
(setq *ein-ks-ein-local* (car ks-ein))
)
)
)
)
t
)
(progn
(princ (strcat "\n FEHLER: " lib-datei " nicht gefunden!"))
nil
)
)
;; ES-Block laden und Masse extrahieren
(ensure-block-loaded "_3D_ES_90_links")
(if (tblsearch "BLOCK" "_3D_ES_90_links")
(progn
(setq temp-obj
(vla-InsertBlock modelspace
(vlax-3D-point '(0 0 0))
"_3D_ES_90_links" 1.0 1.0 1.0 0))
(setq ks-data (extract-ks-from-block temp-obj))
(vla-Delete temp-obj)
(setq ks-ein (cadr (assoc "KS_EIN" ks-data)))
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
(if (and ks-ein ks-aus)
(progn
(setq ein-dx (- (caar ks-aus) (caar ks-ein)))
(setq *ein-ks-ein-local* (car ks-ein))
)
)
)
)
(setq *lib-initialized* t)
(setq *gf-lib-geladen* t)
t
)
)
)