From 1ace0a9a6dec1c91cc34710718bc6fd826cdc97f Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 9 Oct 2026 13:34:49 +0200 Subject: [PATCH] [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 --- Lisp/Gefaellestrecke.lsp | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/Lisp/Gefaellestrecke.lsp b/Lisp/Gefaellestrecke.lsp index afa655f..c03d27e 100644 --- a/Lisp/Gefaellestrecke.lsp +++ b/Lisp/Gefaellestrecke.lsp @@ -1178,21 +1178,20 @@ (- (sin rad-v-es)))) (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), - ;; seine eigene Achse verlaeuft damit trivial durch diesen Punkt. - ;; Die Z-Hoehe wird an KS_EIN des ES-Elements auf die TATSAECHLICH - ;; durch die Kette (Geraden/Boegen mit grade) aufgebaute Hoehe gesetzt - ;; (caddr sep-endpunkt) - NICHT auf endpunkt-ref.Z (die Z-Koordinate - ;; des zweiten Mausklicks). endpunkt-ref dient nur zur deltaH-Schaetzung - ;; fuer die Winkelberechnung (gf-winkel-berechnen); klickt der Nutzer - ;; beide Punkte auf derselben Hoehe (z.B. in einer 2D-Draufsicht ohne - ;; 3D-Objektfang), landete das ES-Element bisher trotz korrekt - ;; geneigter Kette wieder auf Starthoehe (realer Bug). + ;; EIN-Element: reine KS-zu-KS-Verkettung (wie bei Modus 1/2 in + ;; gefaellestrecke-einfuegen) statt insert-block-mixed-to-ks mit + ;; erzwungener Ziel-Z. sep-frame richtet KS_EIN des ES-Elements exakt + ;; am Ketten-Pfad (Position UND Neigung) aus; die Endhoehe ergibt sich + ;; danach von selbst aus KS_AUS, es wird nichts nachtraeglich + ;; verschoben. Zwei vorherige Versuche waren beide falsch: endpunkt-ref + ;; (Mausklick-Z, meist = Starthoehe) UND z-ref="KS_AUS" bei + ;; insert-block-mixed-to-ks (zwang den BLOCKAUSGANG statt -eingang auf + ;; die Zielhoehe, Rest-Versatz = Blockinnenhoehe KS_EIN<->KS_AUS, + ;; ~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" (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)))) ;; --- GF_N-Block erstellen --- @@ -1413,12 +1412,10 @@ (* (sin rad-h-es)(cos rad-v-es)) (- (sin rad-v-es)))) (setq sep-frame (make-frame-from-dir sep-endpunkt xu-exit)) - ;; Z-Ziel = tatsaechlich durch die Kette aufgebaute Hoehe (caddr - ;; sep-endpunkt), NICHT die gespeicherte Soll-Endhoehe end-z - identischer - ;; Fix wie in gf-linienzug-modus (end-z diente nur zur deltaH-Schaetzung - ;; fuer die Winkelberechnung oben). - (setq es-aus-frame - (insert-block-mixed-to-ks es-block sep-frame (caddr sep-endpunkt) "KS_EIN" "KS_AUS")) + ;; Reine KS-zu-KS-Verkettung wie in gf-linienzug-modus (siehe dortiger + ;; Kommentar) - end-z (gespeicherte Soll-Endhoehe) wird nur zur + ;; deltaH-Schaetzung fuer die Winkelberechnung oben gebraucht, nicht hier. + (setq es-aus-frame (insert-block-ks-to-ks es-block sep-frame)) ;; Echter Endpunkt (fuer DELTA_L-Attribut/Label) erst jetzt aus der ;; gebauten Geometrie bekannt - KS_AUS des ES-Elements.