AS-Platzierungen gefixiert. AS-dz jetzt konsistent flach, Debug-Zeile entfernt

This commit is contained in:
2026-07-23 09:08:07 +02:00
parent fe2ad9cb32
commit eef20cafe8
+35 -17
View File
@@ -1175,9 +1175,9 @@
(setq ein-hz-as-k (- entry-hz
(vf-element-plan-turn (strcat "AS_Element_" gf-as-winkel "_" as-seite))))
(setq rad-h-as-k (* (float ein-hz-as-k) (/ pi 180.0)))
(setq xu-as-meas (list (* (cos rad-h-as-k)(cos rad-v-korr))
(* (sin rad-h-as-k)(cos rad-v-korr))
(- (sin rad-v-korr))))
;; AS flach (KS_EIN horizontal, keine Neigung) - konsistent zur flachen
;; Platzierung; der dz kommt allein aus der Blockgeometrie.
(setq xu-as-meas (list (cos rad-h-as-k) (sin rad-h-as-k) 0.0))
;; ES-Element: KS_EIN zeigt in Fahrtrichtung (exit-hz)
(setq rad-h-es-k (* (float exit-hz) (/ pi 180.0)))
(setq xu-es-meas (list (* (cos rad-h-es-k)(cos rad-v-korr))
@@ -1238,10 +1238,9 @@
(setq ein-hz-as (- entry-hz
(vf-element-plan-turn (strcat "AS_Element_" gf-as-winkel "_" as-seite))))
(setq rad-h-as (* (float ein-hz-as) (/ pi 180.0)))
(setq rad-v-as (* (float grade) (/ pi 180.0)))
(setq xu-entry (list (* (cos rad-h-as)(cos rad-v-as))
(* (sin rad-h-as)(cos rad-v-as))
(- (sin rad-v-as))))
;; AS-Element FLACH platzieren (KS_EIN horizontal, keine Neigung) -
;; Nutzer-Vorgabe: alle AS_Elemente flach. Nur die Fahrtrichtung dreht.
(setq xu-entry (list (cos rad-h-as) (sin rad-h-as) 0.0))
(princ (ssg-textf "gf-status-aus-element-detail"
(list as-block (rtos entry-hz 2 1) grad-zeichen
(rtos ein-hz-as 2 1) grad-zeichen (rtos (caddr startpunkt) 2 1))))
@@ -1577,11 +1576,12 @@
;; KS_EIN-Richtung fuer AS-Element: gemessener Ebenen-Schwenk des Blocks, so
;; dass KS_AUS in Fahrtrichtung hz zeigt (ein-hz = hz - plan-turn).
;; AS-Element FLACH platzieren (Nutzer-Vorgabe 2026-07-22): KS_EIN horizontal,
;; KEINE 3-Grad-Neigung (Z-Komponente 0). Das Gefaelle beginnt erst mit der
;; Staustrecke danach. Nur die Fahrtrichtung dreht KS_EIN.
(setq ein-hz (- hz (vf-element-plan-turn (strcat "AS_Element_" as-winkel "_" as-seite))))
(setq rad-ein (* (float ein-hz) (/ pi 180.0)))
(setq xu-ein (list (* (cos rad-ein)(cos rad-v))
(* (sin rad-ein)(cos rad-v))
(- (sin rad-v))))
(setq xu-ein (list (cos rad-ein) (sin rad-ein) 0.0))
;; 1/4: AUS-Element (KS_EIN an xu-ein ausrichten, damit KS_AUS in hz zeigt)
;; Block-Ursprung (nicht KS_EIN!) in X/Y auf startpunkt setzen, damit die
@@ -2066,7 +2066,8 @@
;; ============================================================
(defun gf-baue-parallel-vf (gf-start hz deltaL as-seite hoehe-bis /
abstand rad hz-vf deltaH gf-end-x gf-end-y
perp-x perp-y vf-start vf-seite)
perp-x perp-y vf-start vf-seite
ziel-es vf-erg vf-insert vf-endpunkt korr os-alt)
(if (null (car (atoms-family 1 '("VFS-STANDARD-DIALOG-BERECHNEN-EINFUEGEN"))))
(alert (ssg-text "gf-vf-modul-fehlt"))
(progn
@@ -2089,12 +2090,29 @@
hoehe-bis))
(setq hz-vf (rem (+ hz 180.0) 360.0))
(setq vf-seite as-seite) ; VF-AS/ES-Seite: Default = GF-AS-Seite
(princ (strcat "\n[DEBUG-VFPAR] GF-hz=" (rtos hz 2 1) " -> VF-hz=" (rtos hz-vf 2 1)
" | as-seite=" as-seite
" | gf-start=" (vl-princ-to-string gf-start)
" | vf-start=" (vl-princ-to-string vf-start)))
(vfs-standard-dialog-berechnen-einfuegen
(vf-next-number) deltaL deltaH "Auf" vf-start hz-vf vf-seite nil)
;; Zielpunkt: VF-ES-KS_AUS soll auf GF-AS-KS_EIN liegen, nur um 'abstand'
;; quer versetzt, gleiche Hoehe.
(setq ziel-es (list (+ (car gf-start) (* abstand perp-x))
(+ (cadr gf-start) (* abstand perp-y))
(caddr gf-start)))
;; VF bauen; Rueckgabe (vf-insert vf-endpunkt), vf-endpunkt = tatsaechl.
;; ES-KS_AUS als Weltpunkt (aus vfs-es-teil/insert-block-by-ks).
(setq vf-erg (vfs-standard-dialog-berechnen-einfuegen
(vf-next-number) deltaL deltaH "Auf" vf-start hz-vf vf-seite nil))
(setq vf-insert (car vf-erg) vf-endpunkt (cadr vf-erg))
;; Selbstkorrektur: fertigen VF-Block so verschieben, dass sein
;; tatsaechliches ES-KS_AUS exakt auf ziel-es faellt (analog GF_n-Move;
;; OSMODE=0, damit der Zielpunkt nicht umgefangen wird). Damit ist der
;; seitliche Versatz UND die Hoehe unabhaengig von der VF-Innengeometrie 0.
(if (and vf-insert vf-endpunkt)
(progn
(setq korr (mapcar '- ziel-es vf-endpunkt))
(setq os-alt (getvar "OSMODE"))
(setvar "OSMODE" 0)
(if (> (distance '(0.0 0.0 0.0) korr) 1e-6)
(command "_.MOVE" vf-insert "" '(0.0 0.0 0.0) korr))
(setvar "OSMODE" os-alt))
)
(princ (ssg-text "gf-vf-gebaut"))
)
)