From 38ee74ed3ef4c49863277130a5ab2c5210afcbd3 Mon Sep 17 00:00:00 2001 From: Yuelin Wang Date: Sat, 12 Sep 2026 00:59:30 +0200 Subject: [PATCH] feat: Konsolen-Echo fuer Endpunkt (X/Y) + Zielhoehe nach Eingabe Nach jedem Endpunkt-Pick + Zielhoehe-Eingabe (Neue Linie: GF Zweig A, Linie-VF, Neue Linie BIS Kettenende) wird jetzt der absolute Endpunkt (X/Y, aus deltaL/hz-neu zurueckgerechnet) sowie die eingegebene Zielhoehe und das daraus resultierende (noch UNREDUZIERTE) deltaH auf der Konsole ausgegeben - vorher war z.B. bei "Neue Linie BIS Kettenende" nur das bereits um den Separator+ES-Footprint reduzierte deltaH sichtbar, was wie ein Rechenfehler wirken konnte. Neuer Helfer: vfl-echo-endpunkt-hoehe. Co-Authored-By: Claude Sonnet 5 --- Lisp/vf_linienzug.lsp | 22 ++++++++++++++++++++++ lang/de_DE.json | 1 + lang/en_GB.json | 1 + 3 files changed, 24 insertions(+) diff --git a/Lisp/vf_linienzug.lsp b/Lisp/vf_linienzug.lsp index 477ed98..be3dcea 100644 --- a/Lisp/vf_linienzug.lsp +++ b/Lisp/vf_linienzug.lsp @@ -2704,6 +2704,25 @@ (princ) ) +;; Konsolen-Echo nach Endpunkt-Pick + Zielhoehe-Eingabe: zeigt den absoluten +;; Endpunkt (X/Y, aus p-aktuell + deltaL entlang hz-neu zurueckgerechnet - nur +;; deltaL/hz werden journalisiert, siehe vfl-in-abstand) sowie die eingegebene +;; Zielhoehe UND das daraus resultierende deltaH VOR jeder spaeteren +;; Footprint-Reduktion (Separator/ES bei linie-ende-modus) - damit am +;; Bildschirm nachvollziehbar bleibt, welcher Rohwert in eine spaeter +;; angezeigte, ggf. reduzierte Zahl eingeht (sonst wirkt ein reduzierter Wert +;; wie ein Rechenfehler statt wie eine bewusste Reservierung). +(defun vfl-echo-endpunkt-hoehe (p-aktuell deltaL hz-neu hoehe-neu deltaH richtung / rad ex ey) + (setq rad (* (float hz-neu) (/ pi 180.0))) + (setq ex (+ (car p-aktuell) (* deltaL (cos rad)))) + (setq ey (+ (cadr p-aktuell) (* deltaL (sin rad)))) + (princ (ssg-textf "vfl-echo-endpunkt-hoehe" + (list (rtos ex 2 1) (rtos ey 2 1) (rtos deltaL 2 0) (rtos hz-neu 2 1) + (rtos hoehe-neu 2 1) (rtos (caddr p-aktuell) 2 1) + (rtos deltaH 2 1) richtung))) + (princ) +) + ;; Wie vfl-vf-machbar-p, aber fuer das Budget von vfl-body-zerlegung ;; (Kettenende-Modus, "Ja - Motorstation setzen, Kettenende festlegen"): ;; feste-hz=800 (nur Motor+Separator, KEIN Umlenk-/AS-Anteil) statt @@ -5513,6 +5532,7 @@ (setq deltaH (- hoehe-neu (caddr p-aktuell))) (setq richtung (if (>= deltaH 0.0) "Auf" "Ab")) (setq deltaH (abs deltaH)) + (vfl-echo-endpunkt-hoehe p-aktuell deltaL hz-neu hoehe-neu deltaH richtung) (if (> sep-anzahl 0) (setq deltaH (max 0.0 (- deltaH (* sep-anzahl *vfk-separator-laenge* (sin rad3)))))) (cond @@ -5734,6 +5754,7 @@ (setq deltaH (- hoehe-neu (caddr p-aktuell))) (setq richtung (if (>= deltaH 0.0) "Auf" "Ab")) (setq deltaH (abs deltaH)) + (vfl-echo-endpunkt-hoehe p-aktuell deltaL hz-neu hoehe-neu deltaH richtung) (setq entscheidung (vfl-vf-entscheidung deltaL deltaH richtung)) (setq typ (nth 0 entscheidung) winkel (nth 1 entscheidung) L_GF (nth 2 entscheidung) L_VF (nth 3 entscheidung)) @@ -5876,6 +5897,7 @@ (setq deltaH (- hoehe-neu (caddr p-aktuell))) (setq richtung (if (>= deltaH 0.0) "Auf" "Ab")) (setq deltaH (abs deltaH)) + (vfl-echo-endpunkt-hoehe p-aktuell deltaL hz-neu hoehe-neu deltaH richtung) ;; Kettenende-Modus (Option 4): Der abgefragte Endpunkt (XY+Z) ;; ist das exakte Ende der Kette NACH Separator + ES-Element. ;; Deren Footprint (Separator 300 mm bei ~3 Grad + ES-Element diff --git a/lang/de_DE.json b/lang/de_DE.json index 3975d03..f9e0b35 100644 --- a/lang/de_DE.json +++ b/lang/de_DE.json @@ -63,6 +63,7 @@ "vfl-alert-segment-nicht-baubar": "Segment geometrisch nicht baubar!\ndeltaL=%1 mm, deltaH=%2 mm, Richtung=%3\nBitte anderen Endpunkt/Hoehe waehlen.", "vfl-info-kurzes-segment": "\n>>> Kurzes Segment (deltaL=%1 mm < 1000): automatisch 3-Grad-Gefaellestrecke (keine Hoehenabfrage, deltaH=%2 mm).", "vfl-info-kettenende-footprint": "\n>>> Kettenende-Modus: Footprint fuer Separator + ES reserviert -> baubar deltaL=%1 mm, deltaH=%2 mm.", + "vfl-echo-endpunkt-hoehe": "\n>>> Endpunkt gewaehlt: X=%1 Y=%2 (deltaL=%3 mm, Richtung=%4 Grad)\n>>> Zielhoehe eingegeben: %5 mm (aktuell %6 mm, deltaH=%7 mm %8)", "vfl-kette-eingefuegt": "\n>>> VF-Linienzug-Kette eingefuegt! <<<", "vfl-info-as-eingefuegt": "\n>>> AS-Element eingefuegt - reale Restlaenge: deltaL=%1 mm.", "vfl-info-kein-as": "\n>>> Kein AS-Element - Kette beginnt direkt am Startpunkt.", diff --git a/lang/en_GB.json b/lang/en_GB.json index 46cc827..8c2bac1 100644 --- a/lang/en_GB.json +++ b/lang/en_GB.json @@ -63,6 +63,7 @@ "vfl-alert-segment-nicht-baubar": "Segment geometrically not buildable!\ndeltaL=%1 mm, deltaH=%2 mm, direction=%3\nPlease pick another end point/height.", "vfl-info-kurzes-segment": "\n>>> Short segment (deltaL=%1 mm < 1000): automatic 3-degree gravity section (no height query, deltaH=%2 mm).", "vfl-info-kettenende-footprint": "\n>>> Chain-end mode: footprint for separator + ES reserved -> buildable deltaL=%1 mm, deltaH=%2 mm.", + "vfl-echo-endpunkt-hoehe": "\n>>> End point picked: X=%1 Y=%2 (deltaL=%3 mm, direction=%4 deg)\n>>> Target height entered: %5 mm (currently %6 mm, deltaH=%7 mm %8)", "vfl-kette-eingefuegt": "\n>>> VF chain inserted! <<<", "vfl-info-as-eingefuegt": "\n>>> AS element inserted - actual remaining length: deltaL=%1 mm.", "vfl-info-kein-as": "\n>>> No AS element - chain starts directly at the start point.",