[FIX] GEFAELLESTRECKE_LINIENZUG: ES-Element hatte Rest-Hoehenversatz (~65mm) nach dem vorigen Fix

Der vorige Fix (80e5e62) nutzte insert-block-mixed-to-ks mit z-ref="KS_AUS" (sep-endpunkt als Ziel-Z) - das zwingt aber den BLOCKAUSGANG des ES-Elements auf diese Hoehe, nicht den Blockeingang, an dem die Kette tatsaechlich anschliesst. Der ganze Block wurde dadurch zusaetzlich um seine eigene KS_EIN<->KS_AUS-Innenhoehe nach oben verschoben.

Modus 1/2 (gefaellestrecke-einfuegen) macht das bereits richtig: dort haengt das EIN-Element ueber reines insert-block-ks-to-ks (keine erzwungene Ziel-Z) an den Ketten-Pfad, die Endhoehe ergibt sich danach von selbst aus KS_AUS. GEFAELLESTRECKE_LINIENZUG (Modus 3) auf dasselbe Muster umgestellt - sowohl im normalen Bau (gf-linienzug-modus) als auch im Doppelklick-Rebuild (gf-linienzug-rebuild).

Manuell in BricsCAD verifiziert: Hoehenversatz jetzt korrekt, kein Rest-Sprung mehr.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 13:34:49 +02:00
parent 80e5e62160
commit 1ace0a9a6d
+16 -19
View File
@@ -1178,21 +1178,20 @@
(- (sin rad-v-es)))) (- (sin rad-v-es))))
(setq sep-frame (make-frame-from-dir sep-endpunkt xu-exit)) (setq sep-frame (make-frame-from-dir sep-endpunkt xu-exit))
;; EIN-Element: KS_EIN bleibt in X/Y auf dem Ketten-Pfad (sep-frame), ;; EIN-Element: reine KS-zu-KS-Verkettung (wie bei Modus 1/2 in
;; seine eigene Achse verlaeuft damit trivial durch diesen Punkt. ;; gefaellestrecke-einfuegen) statt insert-block-mixed-to-ks mit
;; Die Z-Hoehe wird an KS_EIN des ES-Elements auf die TATSAECHLICH ;; erzwungener Ziel-Z. sep-frame richtet KS_EIN des ES-Elements exakt
;; durch die Kette (Geraden/Boegen mit grade) aufgebaute Hoehe gesetzt ;; am Ketten-Pfad (Position UND Neigung) aus; die Endhoehe ergibt sich
;; (caddr sep-endpunkt) - NICHT auf endpunkt-ref.Z (die Z-Koordinate ;; danach von selbst aus KS_AUS, es wird nichts nachtraeglich
;; des zweiten Mausklicks). endpunkt-ref dient nur zur deltaH-Schaetzung ;; verschoben. Zwei vorherige Versuche waren beide falsch: endpunkt-ref
;; fuer die Winkelberechnung (gf-winkel-berechnen); klickt der Nutzer ;; (Mausklick-Z, meist = Starthoehe) UND z-ref="KS_AUS" bei
;; beide Punkte auf derselben Hoehe (z.B. in einer 2D-Draufsicht ohne ;; insert-block-mixed-to-ks (zwang den BLOCKAUSGANG statt -eingang auf
;; 3D-Objektfang), landete das ES-Element bisher trotz korrekt ;; die Zielhoehe, Rest-Versatz = Blockinnenhoehe KS_EIN<->KS_AUS,
;; geneigter Kette wieder auf Starthoehe (realer Bug). ;; ~65mm). endpunkt-ref/der zweite Mausklick dient weiterhin nur zur
;; groben deltaH-Schaetzung fuer den Winkel-Vorschlag im Dialog.
(setq es-aus-frame (insert-block-ks-to-ks es-block sep-frame))
(princ (ssg-textf "gf-status-ein-element-detail" (princ (ssg-textf "gf-status-ein-element-detail"
(list es-block (rtos (caddr sep-endpunkt) 2 1)))) (list es-block (rtos (caddr sep-endpunkt) 2 1))))
(setq es-aus-frame
(insert-block-mixed-to-ks es-block sep-frame
(caddr sep-endpunkt) "KS_EIN" "KS_AUS"))
(princ (ssg-textf "gf-status-z-hoehe-ks-aus" (list (rtos (caddr (car es-aus-frame)) 2 1)))) (princ (ssg-textf "gf-status-z-hoehe-ks-aus" (list (rtos (caddr (car es-aus-frame)) 2 1))))
;; --- GF_N-Block erstellen --- ;; --- GF_N-Block erstellen ---
@@ -1413,12 +1412,10 @@
(* (sin rad-h-es)(cos rad-v-es)) (* (sin rad-h-es)(cos rad-v-es))
(- (sin rad-v-es)))) (- (sin rad-v-es))))
(setq sep-frame (make-frame-from-dir sep-endpunkt xu-exit)) (setq sep-frame (make-frame-from-dir sep-endpunkt xu-exit))
;; Z-Ziel = tatsaechlich durch die Kette aufgebaute Hoehe (caddr ;; Reine KS-zu-KS-Verkettung wie in gf-linienzug-modus (siehe dortiger
;; sep-endpunkt), NICHT die gespeicherte Soll-Endhoehe end-z - identischer ;; Kommentar) - end-z (gespeicherte Soll-Endhoehe) wird nur zur
;; Fix wie in gf-linienzug-modus (end-z diente nur zur deltaH-Schaetzung ;; deltaH-Schaetzung fuer die Winkelberechnung oben gebraucht, nicht hier.
;; fuer die Winkelberechnung oben). (setq es-aus-frame (insert-block-ks-to-ks es-block sep-frame))
(setq es-aus-frame
(insert-block-mixed-to-ks es-block sep-frame (caddr sep-endpunkt) "KS_EIN" "KS_AUS"))
;; Echter Endpunkt (fuer DELTA_L-Attribut/Label) erst jetzt aus der ;; Echter Endpunkt (fuer DELTA_L-Attribut/Label) erst jetzt aus der
;; gebauten Geometrie bekannt - KS_AUS des ES-Elements. ;; gebauten Geometrie bekannt - KS_AUS des ES-Elements.