feat: ILS-Bloecke ueber eindeutige 2D/3D-Namen laden + Auto-Layer
Zentrale Namensaufloesung (ssg-ils-datei-und-name, dual-schema: neu data/ils/<name>_<dim>.dwg mit eindeutigem In-Zeichnungs-Namen, alt Unterordner als Fallback). ensure-block-loaded liefert den aufgeloesten Namen; die insert-Helfer weisen blockname neu zu und setzen die INSERT-Referenz automatisch auf die eigene Ebene des Blocks (ssg-ils-block-auf-ebene, legt sie bei Bedarf an). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+20
-13
@@ -258,11 +258,13 @@
|
||||
;; ============================================================
|
||||
;; TEIL 5: KS_EIN/KS_AUS EXTRAKTION
|
||||
;; ============================================================
|
||||
(defun ensure-block-loaded (blockname / )
|
||||
;; Zentraler Loader (aktuelle Dimension + 3D-Fallback, Neudefinition bei
|
||||
;; Dimensionswechsel). Meldung nur bei Fehlschlag.
|
||||
(if (not (ssg-ils-block-laden blockname))
|
||||
(princ (ssg-textf "vfc-fehler-block-datei-fehlt" (list blockname)))
|
||||
(defun ensure-block-loaded (blockname / real)
|
||||
;; Zentraler Loader; liefert den IN-ZEICHNUNGS-NAMEN zurueck, unter dem der
|
||||
;; Block einzufuegen ist (2D/3D eindeutig), oder nil bei Fehlschlag.
|
||||
(setq real (ssg-ils-block-laden blockname))
|
||||
(if (null real)
|
||||
(progn (princ (ssg-textf "vfc-fehler-block-datei-fehlt" (list blockname))) nil)
|
||||
real
|
||||
)
|
||||
)
|
||||
|
||||
@@ -450,7 +452,7 @@
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek-abgebrochen" (list blockname)))
|
||||
@@ -475,6 +477,7 @@
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
blockname 1.0 1.0 1.0 0))
|
||||
(ssg-ils-block-auf-ebene block-obj blockname)
|
||||
(if (> (abs hz) 0.0001)
|
||||
(vla-TransformBy block-obj (vlax-tmatrix
|
||||
(list (list chv (- shv) 0 0)
|
||||
@@ -522,7 +525,7 @@
|
||||
P-ein xe ye ze P-aus xu-aus yu-aus zu-aus
|
||||
R R-Pein R-Paus tx ty tz T4
|
||||
P-out xu-out yu-out zu-out)
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek" (list blockname)))
|
||||
@@ -552,6 +555,7 @@
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
blockname 1.0 1.0 1.0 0))
|
||||
(ssg-ils-block-auf-ebene block-obj blockname)
|
||||
;; Normierte Rahmen (P xu yu zu) aus rohen KS-Daten berechnen
|
||||
(setq f-ein (ks-frame-extract ks-ein-raw)
|
||||
f-aus (ks-frame-extract ks-aus-raw))
|
||||
@@ -610,7 +614,7 @@
|
||||
xe ye ze P-ein P-aus xu-aus yu-aus zu-aus
|
||||
R P-xyref P-zref R-xyref R-zref tx ty tz T4
|
||||
R-Paus P-out xu-out yu-out zu-out)
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek" (list blockname)))
|
||||
@@ -640,6 +644,7 @@
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
blockname 1.0 1.0 1.0 0))
|
||||
(ssg-ils-block-auf-ebene block-obj blockname)
|
||||
;; Normierte Rahmen (P xu yu zu) aus rohen KS-Daten berechnen
|
||||
(setq f-ein (ks-frame-extract ks-ein-raw)
|
||||
f-aus (ks-frame-extract ks-aus-raw))
|
||||
@@ -693,7 +698,7 @@
|
||||
;; ============================================================
|
||||
;; Masse (KS_EIN->KS_AUS als (dx dy dz)) eines Elements aus dem Block ziehen.
|
||||
(defun vf-element-masse (blockname / temp-obj ks-data ke ka)
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
nil
|
||||
(progn
|
||||
@@ -713,7 +718,7 @@
|
||||
;; oder gerade). Wird genutzt, um KS_EIN so zu drehen, dass KS_AUS entlang hz
|
||||
;; zeigt: ein-hz = hz - plan-turn. Fallback 90 (Vorgabe fuer 90-Grad-Element).
|
||||
(defun vf-element-plan-turn (blockname / temp-obj ks-data fe fa)
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
90.0
|
||||
(progn
|
||||
@@ -734,7 +739,7 @@
|
||||
;; vx / vy : KS_AUS.origin - KS_EIN.origin (Block-XY)
|
||||
;; Damit laesst sich die KS_AUS-Lage + Achsrichtung analytisch vorausberechnen.
|
||||
(defun vf-element-ks-info (blockname / temp-obj ks-data fe fa)
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
nil
|
||||
(progn
|
||||
@@ -780,7 +785,7 @@
|
||||
startpunkt
|
||||
)
|
||||
(progn
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek-abgebrochen" (list blockname)))
|
||||
@@ -796,6 +801,7 @@
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
blockname scale 1.0 1.0 0))
|
||||
(ssg-ils-block-auf-ebene block-obj blockname)
|
||||
(setq matrix (list
|
||||
(list (* chv cvv) (- shv) (* chv svv) 0)
|
||||
(list (* shv cvv) chv (* shv svv) 0)
|
||||
@@ -843,7 +849,7 @@
|
||||
startpunkt
|
||||
)
|
||||
(progn
|
||||
(ensure-block-loaded blockname)
|
||||
(setq blockname (ensure-block-loaded blockname))
|
||||
(if (not (tblsearch "BLOCK" blockname))
|
||||
(progn
|
||||
(princ (ssg-textf "vfc-fehler-block-nicht-in-bibliothek-abgebrochen" (list blockname)))
|
||||
@@ -887,6 +893,7 @@
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
blockname 1.0 1.0 1.0 0))
|
||||
(ssg-ils-block-auf-ebene block-obj blockname)
|
||||
(setq matrix (list
|
||||
(list (* chv cvv) (- shv) (* chv svv) 0)
|
||||
(list (* shv cvv) chv (* shv svv) 0)
|
||||
|
||||
Reference in New Issue
Block a user