[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:
2026-08-29 07:55:00 +02:00
parent 012c5da7f9
commit aa71d463cb
5 changed files with 36 additions and 59 deletions
+7 -12
View File
@@ -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