[FIX] GEFAELLESTRECKE_LINIENZUG: ES-Element erhielt keinen Hoehenversatz bei flachem Endpunkt-Klick
Das ES-Element wurde ueber insert-block-mixed-to-ks so platziert, dass sein KS_EIN exakt auf (caddr endpunkt-ref) landet - die Z-Koordinate des zweiten Mausklicks (Kettenende waehlen). Geraden und Boegen davor waren korrekt geneigt (grade wird separat berechnet/bestaetigt und fliesst in gf-linienzug-einfuegen ein), aber die anschliessende ES-Platzierung zog die Hoehe wieder auf den Klick-Wert zurueck - bei einem Klick in einer 2D-Draufsicht ohne 3D-Objektfang liegt der meist auf derselben Z wie der Startpunkt, das ES-Element landete dann faelschlich wieder auf Starthoehe trotz korrekt gefallener Kette. Fix: Ziel-Z fuer das ES-Element ist jetzt (caddr sep-endpunkt) - die tatsaechlich durch die Kette (Geraden/Boegen mit grade) aufgebaute Hoehe am Ende, nicht der Klick-Wert. endpunkt-ref dient weiterhin nur zur groben deltaH-Schaetzung fuer den Winkel-Vorschlag im Dialog (den der Nutzer ohnehin bestaetigt/ueberschreibt). Das Attribut HOEHE_BIS_mm wird aus demselben Grund jetzt ebenfalls aus der real gebauten Endhoehe (es-aus-frame) statt aus endpunkt-ref gelesen, damit es nicht von der sichtbaren Geometrie abweicht. Identischer Fix im neuen Rebuild-Pfad (gf-linienzug-rebuild) angewendet, der denselben Mechanismus nutzt. Manuell in BricsCAD verifiziert: ES-Element hat jetzt korrekten Hoehenversatz. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1180,13 +1180,19 @@
|
||||
|
||||
;; 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 jedoch an KS_AUS gemessen, damit KS_AUS.Z exakt
|
||||
;; auf endpunkt-ref.Z landet (garantiert die gewuenschte DeltaH).
|
||||
;; 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).
|
||||
(princ (ssg-textf "gf-status-ein-element-detail"
|
||||
(list es-block (rtos (caddr endpunkt-ref) 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 endpunkt-ref) "KS_EIN" "KS_AUS"))
|
||||
(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 ---
|
||||
@@ -1226,14 +1232,18 @@
|
||||
)
|
||||
;; delta-l-gf bereits vor der Zusammenfassung berechnet
|
||||
|
||||
;; Block mit allen Attributen erstellen. Geruest fuer Einzelmodul/
|
||||
;; Geruestoption sind in diesem Linienzug-Ablauf (Modus 3, keine DCL-
|
||||
;; Eingabe) nicht abfragbar - bleiben auf Schema-Default.
|
||||
;; Block mit allen Attributen erstellen. HOEHE_BIS_mm kommt aus der
|
||||
;; TATSAECHLICH gebauten Endhoehe (es-aus-frame), nicht aus der
|
||||
;; geklickten endpunkt-ref.Z - sonst wiche das Attribut von der
|
||||
;; echten Geometrie ab (derselbe Bug wie bei der ES-Platzierung oben).
|
||||
;; Geruest fuer Einzelmodul/Geruestoption sind in diesem Linienzug-
|
||||
;; Ablauf (Modus 3, keine DCL-Eingabe) nicht abfragbar - bleiben auf
|
||||
;; Schema-Default.
|
||||
(setq gf-lz-insert
|
||||
(gf-block-erstellen
|
||||
"gruppe" as-seite gf-nummer
|
||||
(caddr startpunkt)
|
||||
(caddr endpunkt-ref)
|
||||
(caddr (car es-aus-frame))
|
||||
deltaH
|
||||
delta-l-gf
|
||||
L-gf-str
|
||||
@@ -1403,8 +1413,12 @@
|
||||
(* (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 end-z "KS_EIN" "KS_AUS"))
|
||||
(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
|
||||
;; gebauten Geometrie bekannt - KS_AUS des ES-Elements.
|
||||
|
||||
Reference in New Issue
Block a user