[REFACTOR] Rz(hz)*Ry(vert)-Rotationsmatrix zentralisiert (ssg-rot-matrix-zy)
Die 4x4-Matrix Rz(hz)*Ry(vert) stand woertlich 11x: vf_core (2x), vf_etage (4x), Gefaellestrecke (4x), TEFInsert (1x). Neuer dependency-freier Helper ssg-rot-matrix-zy in ssg_core.lsp (immer zuerst geladen), damit alle drei Cluster ihn ohne Cross-Modul-Kopplung teilen. - vf-rot-matrix bleibt als duenner Alias in vf_core (VF-Aufrufstellen unveraendert) - Reine 2D-Rz-Matrizen (insert-block-by-ks, nur horizontal) bleiben unangetastet (andere Form, kein Vertikalanteil) Werte identisch - reine Extraktion. Paren-Balance geprueft. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -316,11 +316,7 @@
|
||||
(vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
blockname scale 1.0 1.0 0))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix
|
||||
(list (list (* chv cvv) (- shv) (* chv svv) 0)
|
||||
(list (* shv cvv) chv (* shv svv) 0)
|
||||
(list (- svv) 0 cvv 0)
|
||||
(list 0 0 0 1))))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix (ssg-rot-matrix-zy chv shv cvv svv)))
|
||||
(vla-Move block-obj
|
||||
(vlax-3D-point '(0 0 0))
|
||||
(vlax-3D-point startpunkt))
|
||||
@@ -381,11 +377,7 @@
|
||||
(vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
blockname 1.0 1.0 1.0 0))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix
|
||||
(list (list (* chv cvv) (- shv) (* chv svv) 0)
|
||||
(list (* shv cvv) chv (* shv svv) 0)
|
||||
(list (- svv) 0 cvv 0)
|
||||
(list 0 0 0 1))))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix (ssg-rot-matrix-zy chv shv cvv svv)))
|
||||
(setq ins-pt (list
|
||||
(- (car startpunkt) (+ (* ein-x chv cvv) (* ein-y (- shv)) (* ein-z chv svv)))
|
||||
(- (cadr startpunkt) (+ (* ein-x shv cvv) (* ein-y chv) (* ein-z shv svv)))
|
||||
@@ -531,11 +523,7 @@
|
||||
(setq block-obj
|
||||
(vla-InsertBlock modelspace (vlax-3D-point '(0 0 0))
|
||||
blockname scale 1.0 1.0 0))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix
|
||||
(list (list (* chz cv) (- shz) (* chz sv) 0)
|
||||
(list (* shz cv) chz (* shz sv) 0)
|
||||
(list (- sv) 0 cv 0)
|
||||
(list 0 0 0 1))))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix (ssg-rot-matrix-zy chz shz cv sv)))
|
||||
(vla-Move block-obj (vlax-3D-point '(0 0 0)) (vlax-3D-point pt))
|
||||
(setq endpunkt
|
||||
(list (+ (car pt) (* laenge chz cv))
|
||||
@@ -562,11 +550,7 @@
|
||||
(setq block-obj
|
||||
(vla-InsertBlock modelspace (vlax-3D-point '(0 0 0))
|
||||
blockname 1.0 1.0 1.0 0))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix
|
||||
(list (list (* chz cv) (- shz) (* chz sv) 0)
|
||||
(list (* shz cv) chz (* shz sv) 0)
|
||||
(list (- sv) 0 cv 0)
|
||||
(list 0 0 0 1))))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix (ssg-rot-matrix-zy chz shz cv sv)))
|
||||
(vla-Move block-obj (vlax-3D-point '(0 0 0)) (vlax-3D-point pt))
|
||||
(setq endpunkt
|
||||
(list (+ (car pt) (+ (* dx chz cv) (* dz chz sv)))
|
||||
|
||||
+1
-5
@@ -94,11 +94,7 @@
|
||||
(setq chv (cos rad-h) shv (sin rad-h) cvv (cos rad-v) svv (sin rad-v))
|
||||
(setq block-obj (vla-InsertBlock modelspace (vlax-3D-point '(0.0 0.0 0.0))
|
||||
*tefl-blockname* 1.0 1.0 1.0 0))
|
||||
(setq matrix (list
|
||||
(list (* chv cvv) (- shv) (* chv svv) 0)
|
||||
(list (* shv cvv) chv (* shv svv) 0)
|
||||
(list (- svv) 0 cvv 0)
|
||||
(list 0 0 0 1)))
|
||||
(setq matrix (ssg-rot-matrix-zy chv shv cvv svv))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix matrix))
|
||||
(vla-Move block-obj (vlax-3D-point '(0.0 0.0 0.0)) (vlax-3D-point pt))
|
||||
|
||||
|
||||
@@ -168,6 +168,26 @@
|
||||
)
|
||||
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; 3D-ROTATIONSMATRIX
|
||||
;; ------------------------------------------------------------
|
||||
;; 4x4-Rotationsmatrix Rz(hz)*Ry(vert) fuer vla-TransformBy (vlax-tmatrix).
|
||||
;; Argumente sind die BEREITS berechneten Winkelfunktionen:
|
||||
;; chz = cos(hz), shz = sin(hz) (horizontale Fahrtrichtung)
|
||||
;; cv = cos(vert), sv = sin(vert) (vertikale Neigung, positiv = abwaerts)
|
||||
;; Diese Matrix stand zuvor woertlich in insert-*-Funktionen von vf_core,
|
||||
;; vf_etage, Gefaellestrecke und TEFInsert. Zentral hier, weil dependency-frei
|
||||
;; und clusteruebergreifend genutzt. Werte unveraendert - reine Extraktion.
|
||||
(defun ssg-rot-matrix-zy (chz shz cv sv)
|
||||
(list
|
||||
(list (* chz cv) (- shz) (* chz sv) 0)
|
||||
(list (* shz cv) chz (* shz sv) 0)
|
||||
(list (- sv) 0 cv 0)
|
||||
(list 0 0 0 1)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; BENUTZER-ABFRAGEN
|
||||
;; ------------------------------------------------------------
|
||||
|
||||
+7
-12
@@ -242,6 +242,11 @@
|
||||
(- (sin rad-v)))
|
||||
)
|
||||
|
||||
;; Hinweis: Die Rz(hz)*Ry(vert)-Rotationsmatrix (vf-rot-matrix) liegt zentral
|
||||
;; in ssg_core.lsp (ssg-rot-matrix-zy), da sie dependency-frei ist und auch von
|
||||
;; Gefaellestrecke/TEF genutzt wird. Duenner Alias fuer die VF-Aufrufstellen:
|
||||
(defun vf-rot-matrix (chz shz cv sv) (ssg-rot-matrix-zy chz shz cv sv))
|
||||
|
||||
(defun punkt-hz-winkel->frame (punkt hz winkel)
|
||||
(make-frame-from-dir punkt (hz-winkel->xu hz winkel))
|
||||
)
|
||||
@@ -826,12 +831,7 @@
|
||||
(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)
|
||||
(list (- svv) 0 cvv 0)
|
||||
(list 0 0 0 1)
|
||||
))
|
||||
(setq matrix (vf-rot-matrix chv shv cvv svv))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix matrix))
|
||||
(vla-Move block-obj
|
||||
(vlax-3D-point '(0 0 0))
|
||||
@@ -918,12 +918,7 @@
|
||||
(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)
|
||||
(list (- svv) 0 cvv 0)
|
||||
(list 0 0 0 1)
|
||||
))
|
||||
(setq matrix (vf-rot-matrix chv shv cvv svv))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix matrix))
|
||||
;; Block-Ursprung so verschieben, dass das ROTIERTE KS_EIN exakt auf
|
||||
;; startpunkt liegt: Ursprung = startpunkt - Rz(hz)*Ry(winkel)*ks_ein_lokal
|
||||
|
||||
+4
-22
@@ -229,12 +229,7 @@
|
||||
)
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0)) blockname scale 1.0 1.0 0))
|
||||
(setq matrix (list
|
||||
(list (* chz cv) (- shz) (* chz sv) 0)
|
||||
(list (* shz cv) chz (* shz sv) 0)
|
||||
(list (- sv) 0 cv 0)
|
||||
(list 0 0 0 1)
|
||||
))
|
||||
(setq matrix (vf-rot-matrix chz shz cv sv))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix matrix))
|
||||
(vla-Move block-obj (vlax-3D-point '(0 0 0)) (vlax-3D-point startpunkt))
|
||||
(setq endpunkt (list
|
||||
@@ -265,12 +260,7 @@
|
||||
)
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0)) blockname 1.0 1.0 1.0 0))
|
||||
(setq matrix (list
|
||||
(list (* chz cv) (- shz) (* chz sv) 0)
|
||||
(list (* shz cv) chz (* shz sv) 0)
|
||||
(list (- sv) 0 cv 0)
|
||||
(list 0 0 0 1)
|
||||
))
|
||||
(setq matrix (vf-rot-matrix chz shz cv sv))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix matrix))
|
||||
(vla-Move block-obj (vlax-3D-point '(0 0 0)) (vlax-3D-point startpunkt))
|
||||
(setq endpunkt (list
|
||||
@@ -309,11 +299,7 @@
|
||||
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
|
||||
;; Block einfuegen und rotieren
|
||||
(setq block-obj (vla-InsertBlock modelspace (vlax-3D-point '(0 0 0)) blockname 1.0 1.0 1.0 0))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix
|
||||
(list (list (* chz cv) (- shz) (* chz sv) 0)
|
||||
(list (* shz cv) chz (* shz sv) 0)
|
||||
(list (- sv) 0 cv 0)
|
||||
(list 0 0 0 1))))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix (vf-rot-matrix chz shz cv sv)))
|
||||
(if (and ks-ein ks-aus)
|
||||
(progn
|
||||
(setq p-ein (car ks-ein))
|
||||
@@ -375,11 +361,7 @@
|
||||
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
|
||||
;; Block mit XScale einfuegen und rotieren
|
||||
(setq block-obj (vla-InsertBlock modelspace (vlax-3D-point '(0 0 0)) blockname scale 1.0 1.0 0))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix
|
||||
(list (list (* chz cv) (- shz) (* chz sv) 0)
|
||||
(list (* shz cv) chz (* shz sv) 0)
|
||||
(list (- sv) 0 cv 0)
|
||||
(list 0 0 0 1))))
|
||||
(vla-TransformBy block-obj (vlax-tmatrix (vf-rot-matrix chz shz cv sv)))
|
||||
(if (and ks-ein ks-aus)
|
||||
(progn
|
||||
(setq p-ein (car ks-ein))
|
||||
|
||||
Reference in New Issue
Block a user