From cccd362bba5014737150827a32fe989cf98bf158 Mon Sep 17 00:00:00 2001 From: Yuelin Wang Date: Wed, 21 Oct 2026 12:54:56 +0200 Subject: [PATCH] feat: VF-Hoehe je Segment (Sivas 4433-4437) + AS-Zufuehrungsachse bei 30 Grad Zwei Themen, die dieselben Dateien beruehren und daher zusammen gehen. 1) VF_HOEHE_m - Hoehe je VF-Segment, Sivas-Merkmale 4433-4437 Sivas erwartet je Streckengruppe bis zu fuenf Variofoerderer-Hoehen. Neues Block-Attribut VF_HOEHE_m: kommagetrennte Liste in Metern mit 3 Nachkommastellen, Eintrag fuer Eintrag parallel zu L_VF_m/VF_WINKEL. Je Eintrag der Mittelwert aus KS_EIN und KS_AUS DES GERADEN VF-Abschnitts. Zwischen Umlenk- und Motorstation koennen mehrere Abschnitte liegen (auf/ab/horizontal), jeder bekommt einen eigenen Wert. SONDERFALL Standard/Etage: dort gibt es nur einen Motor und nur einen geraden Abschnitt - gemessen wird die GANZE Kette (AS-KS_EIN bis ES-KS_AUS, vf-vfhoehe-kette). Das ersetzt den Segmentwert; der Linienzug laeuft nicht durch vf-dialog-berechnen-einfuegen und behaelt seine Liste. WICHTIG - vollstaendige Erfassung: die VF-Segmente entstehen NICHT alle in vfs-vf-koerper. Horizontale Zwischenstuecke, das "schon flach"-Segment und die Modus-2/3-Fuellstuecke bauen direkt mit insert-inclined-scaled-block, die Kette-Merge-Rekonstruktion liest sie aus bestehenden Bloecken. Ein erster Fix nur in vfs-vf-koerper lieferte darum zu wenige Werte (realer Befund: L_VF_m hatte drei Eintraege, VF_HOEHE_m einen). Jetzt sind alle 14 Stellen erfasst, die vfl-acc-vf-seg aufrufen - dafuer das Paar vf-vfhoehe-merke/-schliesse, das ohne lokale Variable auskommt. REGEL (im Code dokumentiert): Jede Stelle, die vfl-acc-vf-seg aufruft, MUSS auch eine Hoehe erfassen - sonst verschiebt sich die Liste gegen L_VF_m und im Export landet eine Hoehe beim falschen Foerderer. Formatierung ueber vf-meter-3: (rtos x 2 3) allein kuerzt je nach DIMZIN nachfolgende Nullen ("2.5" statt "2.500", "-1" statt "-1.000") - im Testlauf real aufgetreten. Attribut-Schema *strecke-attr-gruppe* (ssg_core.lsp) ergaenzt, sonst verschluckt ssg-attrib-set-on den neuen Tag stillschweigend. export_sivas.py verteilt die Liste auf VF_HOEHE_MERKMALE (4433-4437); ueberzaehlige Abschnitte werden weggelassen statt zusammengefasst, fehlende lassen das Merkmal ganz weg. 2) AS-Element 30 Grad: Zufuehrungsachse statt Seitenwahl Der Startpunkt einer Kette mit AS-Element ist geometrisch keine Position, sondern eine ACHSE: das AS sitzt an einer durchlaufenden Strecke und schleust daraus aus, seine KS_EIN-Achse muss darauf liegen. Bisher richtete vfl-insert-as-element das KS_AUS entlang der Kettenrichtung aus, wodurch das KS_EIN um den Blockschwenk verdreht stand - beim 90-Grad-Element kaum sichtbar, beim 30-Grad-Element deutlich. Beim 30-Grad-Element wird die Seitenauswahl im AS-Gruppendialog jetzt ausgegraut; stattdessen gibt ein zweiter Punkt die Zufuehrungsrichtung (der Startpunkt bleibt der Sitz des Elements). Die Seite folgt aus der Lage des naechsten Kettenpunkts zur Achse (vfl-seite-aus-lage). 90 Grad bleibt unveraendert bei der Seitenfrage. Der Dialog legt bei 30 Grad bewusst KEINE Seite mehr in die Pending-Queue - sonst zog die nachfolgende Punktfrage sie als vermeintlichen Punkt heraus und erschien gar nicht (realer Fehler beim ersten Test). Abwaertskompatibilitaet: aeltere 30-Grad-Ketten wurden noch MIT Seitenfrage gebaut. vfl-replay-peek-art sieht beim Replay nach, was tatsaechlich ansteht ("PT" = Achse, "STR" = Seite) - die Modus-Wahl selbst wird nicht journalisiert, weil sie daraus eindeutig rekonstruierbar ist. Unit-Suite 687/687 gruen. VF-Hoehe in BricsCAD bestaetigt. Die AS-Achsenfrage ist dort noch NICHT gelaufen, seit die Seitenauswahl ausgegraut wird. Co-Authored-By: Claude Opus 5 --- Lisp/ssg_core.lsp | 7 ++ Lisp/vf_core.lsp | 112 +++++++++++++++++ Lisp/vf_linienzug.lsp | 215 ++++++++++++++++++++++++++++++-- Lisp/vf_standard.lsp | 10 +- cfg/Merkmalsstamm_in_Sivas.xlsx | Bin 67194 -> 67566 bytes lang/de_DE.json | 4 + lang/en_GB.json | 4 + lib/export_sivas.py | 18 +++ tests/test_unit.lsp | 80 ++++++++++++ 9 files changed, 440 insertions(+), 10 deletions(-) diff --git a/Lisp/ssg_core.lsp b/Lisp/ssg_core.lsp index d344015..53af850 100644 --- a/Lisp/ssg_core.lsp +++ b/Lisp/ssg_core.lsp @@ -1264,6 +1264,13 @@ ("L_VF_m" "0.000") ("ANTRIEBFAHRTRICHTUNG" "Auf") ("VF_WINKEL" "0") + ;; Hoehe je VF-SEGMENT in Metern (3 Nachkommastellen), kommagetrennt und + ;; Eintrag fuer Eintrag parallel zu L_VF_m/VF_WINKEL: Mittelwert aus KS_EIN + ;; und KS_AUS des jeweiligen geraden VF-Abschnitts (vf-vfhoehe-segment in + ;; vf_core.lsp, erfasst in vfs-vf-koerper). Zwischen Umlenk- und + ;; Motorstation koennen mehrere Abschnitte liegen (auf/ab/horizontal). + ;; Sivas-Merkmale 4433-4437 (bis zu fuenf Abschnitte je Gruppe). + ("VF_HOEHE_m" "0.000") ("VF_Bogen_A_90" "0") ("VF_Bogen_A_60" "0") ("VF_Bogen_A_30" "0") diff --git a/Lisp/vf_core.lsp b/Lisp/vf_core.lsp index 4afba48..63cf9f1 100644 --- a/Lisp/vf_core.lsp +++ b/Lisp/vf_core.lsp @@ -218,6 +218,102 @@ (defun vf-motorseite-aktuell ( / ) (if (member *vf-motorseite* '("links" "rechts")) *vf-motorseite* "rechts")) +;; ============================================================ +;; VF-HOEHE JE SEGMENT (Attribut VF_HOEHE_m, Sivas 4433-4437) +;; ============================================================ +;; Sivas erwartet je Streckengruppe bis zu fuenf Variofoerderer-Hoehen. Ein +;; Eintrag gehoert zu EINEM VF-Segment (Koerper) - nicht zu einer ganzen +;; Foerdereinheit und nicht zur ganzen Kette (Nutzer-Korrektur 2026-10-21): +;; +;; Hoehe = Mittelwert aus KS_EIN und KS_AUS DIESES Segments. +;; +;; Eine Kette, die durch Vario-Boegen in drei Abschnitte geteilt ist, bekommt +;; dadurch drei Werte - die Liste laeuft Eintrag fuer Eintrag parallel zu +;; L_VF_m, VF_WINKEL und ANTRIEBFAHRTRICHTUNG. +;; +;; Erfasst wird an genau EINER Stelle: vfs-vf-koerper baut ein Segment, kennt +;; dessen KS_EIN als Eingangspunkt und liefert dessen KS_AUS zurueck. Alle +;; Modi (Standard, Etage, Linienzug) bauen ihre VF-Koerper darueber, deshalb +;; muss der verzweigte Bau-Pfad selbst nicht angefasst werden. +;; +;; Einheit: Meter mit 3 Nachkommastellen (wie L_VF_m), kommagetrennt ueber +;; vfl-join-komma - Reihenfolge = Bau-Reihenfolge. +(if (not (boundp '*vf-acc-vfhoehe*)) (setq *vf-acc-vfhoehe* '())) + +(defun vf-vfhoehe-reset () + (setq *vf-acc-vfhoehe* '())) + +;; Ein VF-Segment erfassen: z-ein = Z des KS_EIN, z-aus = Z des KS_AUS (mm). +;; Fehlt einer der Werte, wird NICHTS angehaengt - sonst verschoebe sich die +;; Liste gegen L_VF_m/VF_WINKEL und im Export landete eine Hoehe beim falschen +;; Foerderer. +(defun vf-vfhoehe-segment (z-ein z-aus) + (if (and (numberp z-ein) (numberp z-aus)) + (setq *vf-acc-vfhoehe* + (append *vf-acc-vfhoehe* (list (vf-meter-3 (/ (+ z-ein z-aus) 2.0))))))) + +;; Bequemes Paar fuer die Bau-Pfade: vor dem Einbau den Startpunkt merken, +;; danach mit dem Endpunkt abschliessen. Beide geben ihren Punkt zurueck, +;; lassen sich also ohne zusaetzliche lokale Variable einsetzen: +;; +;; (vf-vfhoehe-merke pt) +;; (setq pt (insert-inclined-scaled-block ...)) +;; (vf-vfhoehe-schliesse pt) +;; +;; Noetig, weil die VF-Segmente NICHT alle ueber vfs-vf-koerper laufen: die +;; horizontalen Zwischenstuecke und die Modus-2-Fuellstuecke bauen direkt mit +;; insert-inclined-scaled-block. Wurde dort nicht erfasst, fehlten ihre +;; Hoehen und VF_HOEHE_m war kuerzer als L_VF_m (realer Befund 2026-10-21: +;; L_VF_m hatte drei Eintraege, VF_HOEHE_m nur einen). +;; +;; REGEL: Jede Stelle, die (vfl-acc-vf-seg ...) aufruft, MUSS auch eine Hoehe +;; erfassen - sonst verschiebt sich die Liste gegen L_VF_m/VF_WINKEL und im +;; Sivas-Export landet eine Hoehe beim falschen Foerderer. +(if (not (boundp '*vf-vfhoehe-merk*)) (setq *vf-vfhoehe-merk* nil)) + +(defun vf-vfhoehe-merke (pt) + (setq *vf-vfhoehe-merk* (if (listp pt) (caddr pt) nil)) + pt) + +(defun vf-vfhoehe-schliesse (pt) + (vf-vfhoehe-segment *vf-vfhoehe-merk* (if (listp pt) (caddr pt) nil)) + (setq *vf-vfhoehe-merk* nil) + pt) + +;; SONDERFALL Standard/Etage: Hoehe ueber die GANZE Kette. +;; +;; Diese beiden Typen haben nur EINEN Motor und nur EINEN geraden +;; VF-Abschnitt (Nutzer-Vorgabe 2026-10-21). Statt des Segmentwerts gilt dort +;; der Mittelwert der ganzen Anlage: +;; Anfang = KS_EIN des AS-Elements (Startpunkt der Anlage) +;; Ende = KS_AUS des ES-Elements (Rueckgabewert der Einfuegefunktion) +;; +;; ERSETZT die Liste bewusst, statt anzuhaengen: vfs-vf-koerper hat beim Bau +;; bereits den Segmentwert gesammelt, der hier nicht gelten soll. Ergebnis ist +;; genau ein Eintrag. +;; +;; Gerechnet wird aus der GEBAUTEN Geometrie, nicht aus der Soll-Vorgabe +;; (anders als MONTAGEHOEHE_m, dessen hoehe-bis aus deltaH abgeleitet ist). +;; Beide Hoehen in mm. +(defun vf-vfhoehe-kette (z-anfang z-ende) + (if (and (numberp z-anfang) (numberp z-ende)) + (setq *vf-acc-vfhoehe* (list (vf-meter-3 (/ (+ z-anfang z-ende) 2.0)))) + (setq *vf-acc-vfhoehe* '()))) + +;; Millimeter -> Meter als String mit GENAU 3 Nachkommastellen. +;; +;; (rtos x 2 3) allein genuegt nicht: je nach DIMZIN schneidet es nachfolgende +;; Nullen ab und liefert "2.5" statt "2.500" bzw. "-1" statt "-1.000" (real +;; beobachtet im Testlauf). Fuer eine Merkmalsliste ist die feste Stellenzahl +;; aber gewollt, darum wird hier aufgefuellt - unabhaengig von der +;; Zeichnungseinstellung. +(defun vf-meter-3 (mm / s pos) + (setq s (rtos (/ (float mm) 1000.0) 2 3)) + (if (not (vl-string-search "." s)) (setq s (strcat s "."))) + (setq pos (vl-string-search "." s)) + (while (< (- (strlen s) pos 1) 3) (setq s (strcat s "0"))) + s) + ;; ============================================================ ;; TEIL 5: KS_EIN/KS_AUS EXTRAKTION ;; ============================================================ @@ -977,6 +1073,9 @@ (cons "L_VF_m" (rtos (/ L_VF 1000.0) 2 3)) (cons "ANTRIEBFAHRTRICHTUNG" richtung) (cons "VF_WINKEL" (itoa best-winkel)) + ;; Hoehe der (einen) Foerdereinheit - beim Standard-/Etage-Typ + ;; fuellen vfs-vf-entry/-exit genau einen Listeneintrag. + (cons "VF_HOEHE_m" (vfl-join-komma *vf-acc-vfhoehe*)) (cons "ANZAHL_SEPARATOR" "2") (cons "ANZAHL_SCANNER" (itoa n-scanner)) (cons "GERUEST_EINZELMODUL" geruest-einzelmodul) @@ -1013,6 +1112,10 @@ horizontal-info winkelwahl best-winkel L_GF L_VF L_GF1 L_GF2 verteilung-modus n-scanner hoehe-von hoehe-bis lastEnt vf-insert vf-endpunkt staustrecke-basis) + ;; VF-Hoehen-Akkumulator pro Anlage zuruecksetzen - sonst erbte die naechste + ;; Anlage die Hoehen der vorherigen. (Im Linienzug erledigt das + ;; vfl-acc-reset; Standard/Etage laufen nicht darueber.) + (vf-vfhoehe-reset) (setq berechne-fn (vf-registry-berechne-fn typ)) (setq einfuege-fn (vf-registry-einfuege-fn typ)) (setq ergebnis (apply berechne-fn (list deltaL deltaH richtung seite))) @@ -1064,6 +1167,15 @@ (setq vf-endpunkt (apply einfuege-fn (list deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt seite hz))) + ;; VF_HOEHE_m fuer Standard/Etage: Mittelwert ueber die GANZE Kette + ;; (AS-KS_EIN = startpunkt, ES-KS_AUS = Rueckgabe der Einfuegefunktion), + ;; weil es hier nur einen Motor und nur einen geraden VF-Abschnitt + ;; gibt. Ersetzt den beim Bau gesammelten Segmentwert - siehe + ;; vf-vfhoehe-kette. Der Linienzug laeuft NICHT hier durch und behaelt + ;; daher seine Segmentliste. + (vf-vfhoehe-kette (caddr startpunkt) + (if (and vf-endpunkt (listp vf-endpunkt)) + (caddr vf-endpunkt) nil)) (setq vf-insert (vf-block-erstellen typ seite vf-nummer n-scanner hoehe-von hoehe-bis deltaH deltaL L_VF L_GF1 L_GF2 diff --git a/Lisp/vf_linienzug.lsp b/Lisp/vf_linienzug.lsp index b7127b8..2034576 100644 --- a/Lisp/vf_linienzug.lsp +++ b/Lisp/vf_linienzug.lsp @@ -82,7 +82,12 @@ ;; sichern): nil (normal) / "zurueck" (letztes Glied verwerfen und neu ;; fragen) / "abbrechen" (Bau hier stoppen, Baustand bleibt stehen). *vfl-wizard-abbruch-grund* nil - *vfl-abbruch-letztes-ent* nil)) + *vfl-abbruch-letztes-ent* nil) + ;; VF-Hoehen je SEGMENT (Attribut VF_HOEHE_m, Sivas 4433-4437). + ;; Die Liste fuellt vfs-vf-koerper beim Bau jedes geraden VF-Abschnitts + ;; (siehe vf-vfhoehe-segment in vf_core.lsp); hier wird sie - wie alle + ;; anderen Akkumulatoren - pro Kette zurueckgesetzt. + (vf-vfhoehe-reset)) ;; Alist-Zaehler erhoehen / lesen (defun vfl-inc-count (al key / e) @@ -857,10 +862,22 @@ (set_tile "setzen" "1") (set_tile "winkel_90" "1") (set_tile "seite_links" "1") + ;; Seitenauswahl ist nur beim 90-Grad-Element wirksam: beim 30-Grad- + ;; Element folgt die Seite aus der Zufuehrungsachse, die direkt nach + ;; diesem Dialog ueber einen zweiten Punkt abgefragt wird (Nutzer-Vorgabe + ;; 2026-10-14). Sie wird darum ausgegraut - und unten auch NICHT in die + ;; Pending-Queue gelegt, sonst zoege die Punktfrage sie als vermeintlichen + ;; Punkt heraus und erschiene gar nicht. (action_tile "setzen" "(mode_tile \"winkel_90\" (if (= (get_tile \"setzen\") \"1\") 0 1)) (mode_tile \"winkel_30\" (if (= (get_tile \"setzen\") \"1\") 0 1)) - (mode_tile \"seite_links\" (if (= (get_tile \"setzen\") \"1\") 0 1)) + (mode_tile \"seite_links\" (if (and (= (get_tile \"setzen\") \"1\") (/= (get_tile \"winkel_30\") \"1\")) 0 1)) + (mode_tile \"seite_rechts\" (if (and (= (get_tile \"setzen\") \"1\") (/= (get_tile \"winkel_30\") \"1\")) 0 1))") + (action_tile "winkel_30" + "(mode_tile \"seite_links\" 1) + (mode_tile \"seite_rechts\" 1)") + (action_tile "winkel_90" + "(mode_tile \"seite_links\" (if (= (get_tile \"setzen\") \"1\") 0 1)) (mode_tile \"seite_rechts\" (if (= (get_tile \"setzen\") \"1\") 0 1))") (action_tile "accept" "(setq gsetzen (get_tile \"setzen\")) @@ -877,7 +894,13 @@ ;; Winkel-Slot wird von vfl-in-value (AS-Winkel, ueber ;; vf-frage-element-winkel) konsumiert - der erwartet direkt ;; "30"/"90", NICHT den Auswahl-Index wie beim Seite-Slot. - (vflw-pending-push-all (list "1" gwinkel gseite)) + ;; Beim 30-Grad-Element wird die Seite NICHT mitgegeben: sie ist im + ;; Dialog ausgegraut und folgt aus der Zufuehrungsachse. Ein hier + ;; abgelegter Wert wuerde von der nachfolgenden Punktfrage + ;; faelschlich als Punkt konsumiert. + (if (= gwinkel "30") + (vflw-pending-push-all (list "1" gwinkel)) + (vflw-pending-push-all (list "1" gwinkel gseite))) (vflw-pending-push-all (list "2")))) ((= ergebnis 2) (setq *vfl-wizard-abbruch-grund* "zurueck")) (t (setq *vfl-wizard-abbruch-grund* "abbrechen")) @@ -3811,6 +3834,35 @@ ;; genommen (vlax-curve-*): fuer eine LINE ist das exakt die Linie selbst, fuer ;; eine Polylinie genau das angeklickte Segment - ohne Segment-Suche von Hand. ;; Rueckgabe: (pa pb) oder nil. +;; ============================================================ +;; AS-BASISLINIE: Zufuehrungsachse am Kettenanfang +;; ============================================================ +;; Der Startpunkt einer Kette mit AS-Element ist geometrisch KEINE Position, +;; sondern eine ACHSE: das AS sitzt an einer durchlaufenden Strecke (z.B. einer +;; Kreiselkette) und schleust daraus aus - seine KS_EIN-Achse MUSS auf dieser +;; Zufuehrungsachse liegen (Nutzer-Einsicht 2026-10-14, dieselbe wie beim +;; Endpunkt: "der Punkt ist eigentlich eine Linie"). +;; +;; Beim AS_Element_90 faellt das kaum auf, beim AS_Element_30 steht das Element +;; sichtbar falsch: vfl-insert-as-element richtet heute das KS_AUS entlang der +;; Kettenrichtung aus, wodurch das KS_EIN um den Blockschwenk verdreht steht. +;; +;; Auf welcher Seite der Zufuehrung das AS ausschleust, ergibt sich dann aus der +;; Lage des naechsten Kettenpunkts zur Basislinie - es muss nicht gefragt werden +;; (Nutzer-Entscheidung 2026-10-14). Im Punkt-Modus bleibt die Seitenfrage +;; dagegen unveraendert erhalten. +;; +;; Reine Rechnung, in tests/test_unit.lsp getestet: +;; Vorzeichen des 2D-Kreuzprodukts (p2-p1) x (ziel-p1). +;; > 0 -> ziel liegt LINKS der Richtung p1->p2 +;; < 0 -> rechts +;; Genau auf der Linie (0) gilt als "links" (willkuerlich, aber deterministisch - +;; der Aufrufer sollte diesen Fall ohnehin nicht erzeugen). +(defun vfl-seite-aus-lage (p1 p2 ziel / kr) + (setq kr (vfl-kreuz2 (- (car p2) (car p1)) (- (cadr p2) (cadr p1)) + (- (car ziel) (car p1)) (- (cadr ziel) (cadr p1)))) + (if (< kr 0.0) "rechts" "links")) + ;; Ziellinie durch ZWEI selbst gesetzte Punkte definieren. ;; ;; Allgemeiner als das Anklicken eines vorhandenen Objekts (Nutzer-Idee @@ -5063,7 +5115,10 @@ (if sep-vor (setq pt (vfl-sep-hz pt hz))) ;; horizontale Zwischenstrecke (0 Grad) (princ (ssg-textf "vfl-horizontale-zwischenstrecke" (list (rtos dL 2 2)))) + ;; Hoehe dieses (horizontalen) VF-Segments erfassen - siehe vf-vfhoehe-merke. + (vf-vfhoehe-merke pt) (setq pt (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" pt dL 0 hz)) + (vf-vfhoehe-schliesse pt) (vfl-acc-vf-seg "horizontal" 0 dL) ;; optionaler Separator NACH (jetzt tatsaechlich bauen) (if sep-nach (setq pt (vfl-sep-hz pt hz))) @@ -5587,9 +5642,11 @@ ;; (Ausgang in vfl-vf-einheit) erledigt den einzigen wirklich ;; noetigen Bogen. ((and schon-flach (= typ "VF") (= w 0) lvf (> lvf 1.0)) + (vf-vfhoehe-merke (car frame)) (setq frame (make-frame-from-dir (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" (car frame) lvf 0 hzn) (hz-winkel->xu hzn 0.0))) + (vf-vfhoehe-schliesse (car frame)) (vfl-acc-vf-seg "horizontal" 0 lvf) (setq cnt (1+ cnt))) ;; Normalfall: gewinkelter ODER horizontaler Koerper - vfs-vf-koerper @@ -6508,10 +6565,53 @@ ;; die noetige Restlaenge ist damit einfach die urspruengliche Distanz MINUS ;; die tatsaechliche (gemessene) AS-Fussabdrucklaenge, keine Punkt-Projektion ;; noetig (Ersatz fuer das fruehere vfl-projiziere-distanz auf pick-punkt). -(defun vfl-kettenanfang-baustein (p-aktuell hz-neu deltaL as-seite as-vorhanden / frame fussabdruck) +;; AS-Element so einfuegen, dass seine KS_EIN-ACHSE auf der Zufuehrungsachse +;; (ein-hz) liegt - Gegenstueck zu vfl-insert-as-element, das stattdessen das +;; KS_AUS entlang der Kettenrichtung ausrichtet. +;; +;; Unterschied in einer Zeile: dort wird der Blockschwenk abgezogen +;; (ein-hz = hz - as-turn), hier NICHT - die uebergebene Richtung IST schon die +;; des KS_EIN. Das KS_AUS zeigt danach um den Blockschwenk gedreht weiter, also +;; beim AS_Element_30 um 30 Grad von der Zufuehrung weg: genau das reale +;; Ausschleusen aus einer durchlaufenden Strecke (Nutzer-Einsicht 2026-10-14). +(defun vfl-insert-as-element-auf-achse (typ startpunkt ein-hz as-seite / rad-h xu-ein) + (setq rad-h (* (float ein-hz) (/ pi 180.0))) + (setq xu-ein (list (cos rad-h) (sin rad-h) 0.0)) + (insert-block-mixed-to-ks + (strcat "AS_Element_" (vfl-as-winkel) "_" as-seite) + (make-frame-from-dir startpunkt xu-ein) + (caddr startpunkt) nil "KS_EIN") +) + +(defun vfl-kettenanfang-baustein (p-aktuell hz-neu deltaL as-seite as-vorhanden + / frame fussabdruck ziel rad) (if as-vorhanden (progn - (setq frame (vfl-insert-as-element "GF" p-aktuell hz-neu 0.0 as-seite)) + ;; BASISLINIEN-Modus: das AS gehoert mit seinem KS_EIN auf die + ;; Zufuehrungsachse (*vfl-as-basis-hz*), nicht mit dem KS_AUS auf die + ;; Kettenrichtung. Die Seite ergibt sich aus der Lage des naechsten + ;; Kettenpunkts zur Basislinie (Nutzer-Vorgabe 2026-10-14): der liegt in + ;; Richtung hz-neu, deltaL entfernt. + (if *vfl-as-basis-hz* + (progn + (setq rad (* (float hz-neu) (/ pi 180.0))) + (setq ziel (list (+ (car p-aktuell) (* deltaL (cos rad))) + (+ (cadr p-aktuell) (* deltaL (sin rad))) + (caddr p-aktuell))) + (setq as-seite (vfl-seite-aus-lage *vfl-as-basis-p1* + (list (+ (car *vfl-as-basis-p1*) + (cos (* *vfl-as-basis-hz* (/ pi 180.0)))) + (+ (cadr *vfl-as-basis-p1*) + (sin (* *vfl-as-basis-hz* (/ pi 180.0)))) + 0.0) + ziel)) + ;; Masse auf die jetzt bekannte Seite umstellen (Winkel steht schon). + (vf-set-as-masse (vfl-as-winkel) as-seite) + (princ (ssg-textf "vfl-as-seite-ermittelt" (list as-seite))) + ;; KS_EIN auf die Zufuehrungsachse legen - NICHT KS_AUS auf hz-neu. + (setq frame (vfl-insert-as-element-auf-achse "GF" p-aktuell + *vfl-as-basis-hz* as-seite))) + (setq frame (vfl-insert-as-element "GF" p-aktuell hz-neu 0.0 as-seite))) (setq fussabdruck (vfl-planar-dist p-aktuell (car frame))) (setq deltaL (- deltaL fussabdruck)) (princ (ssg-textf "vfl-info-as-eingefuegt" (list (rtos deltaL 2 1)))) @@ -6595,6 +6695,83 @@ (vf-set-as-masse *vfl-as-winkel* as-seite) ; Masse fuer Variante as-seite) +;; AS-Winkel abfragen und danach ENTWEDER die Seite ODER - nur beim 30-Grad- +;; Element - eine Zufuehrungsachse (Nutzer-Vorgabe 2026-10-14: "bitte erstmal +;; nur fuer 30 Grad"). +;; +;; Warum erst NACH dem Winkel: die Achsenfrage gilt nur fuer AS_Element_30, der +;; Winkel muss also schon feststehen. Der Kettenstartpunkt bleibt davon +;; unberuehrt - er ist und bleibt der echte Sitz des AS-Elements; die Achse +;; entsteht aus ihm plus EINEM weiteren Punkt, der nur die Richtung gibt. +;; +;; JOURNAL - deswegen ist die Reihenfolge so gewaehlt: +;; 90 Grad : [STR winkel] [STR seite] <- Eintrag fuer Eintrag wie bisher +;; 30 + Seite : [STR winkel] [STR seite] <- ebenfalls wie bisher +;; 30 + Achse : [STR winkel] [PT p2] +;; Die Modus-Wahl selbst wird BEWUSST NICHT journalisiert: sie ist aus der Art +;; des naechsten Eintrags eindeutig rekonstruierbar (PT = Achse, STR = Seite). +;; Dadurch bleiben alle aelteren Ketten ohne Sonderbehandlung editierbar. +;; +;; Setzt *vfl-as-basis-hz*/-p1 (nil, wenn keine Achse gewaehlt wurde). +;; Rueckgabe: Seite. Im Achsen-Modus vorlaeufig "links" - die endgueltige Seite +;; folgt aus der Lage des naechsten Kettenpunkts und wird in +;; vfl-kettenanfang-baustein gesetzt (Laengsverbrauch ist seitengleich, nur das +;; Vorzeichen des Querversatzes dreht). +(defun vfl-frage-as-winkel-seite-oder-achse (seiten-headerkey startpunkt + / antwort as-seite modus p2) + (setq *vfl-as-basis-hz* nil *vfl-as-basis-p1* nil) + (princ (ssg-text "vf-winkel-aus-header")) + (princ (ssg-text "vf-winkel-90")) + (princ (ssg-text "vf-winkel-30")) + (setq *vfl-as-winkel* + (vfl-in-value "STR" + (function (lambda () (vf-frage-element-winkel "vf-winkel-aus-header"))))) + ;; Beim 30-Grad-Element wird die Seite NICHT gefragt (im Gruppendialog + ;; ausgegraut) - stattdessen direkt die Zufuehrungsachse ueber einen zweiten + ;; Punkt. Es gibt also keine Modus-Frage: 30 Grad = Achse, 90 Grad = Seite. + ;; + ;; AUSNAHME Replay: aeltere 30-Grad-Ketten wurden noch MIT Seitenfrage + ;; gebaut, ihr Journal hat an dieser Stelle ein "STR" statt eines "PT". + ;; Steht dort ein STR, ist es ein Altbestand und es wird wie frueher die + ;; Seite gelesen - sonst liefe die Queue aus dem Takt. + (setq modus (if (= *vfl-as-winkel* "30") "1" "2")) + (if (and (= modus "1") *vfl-replay-queue* (/= (vfl-replay-peek-art) "PT")) + (setq modus "2")) + (if (= modus "1") + (progn + ;; Der AS-Gruppendialog legt beim 30-Grad-Element bewusst KEINE Seite in + ;; die Pending-Queue (siehe vflw-gruppe-as-impl) - die Queue ist hier + ;; also leer und der folgende vfl-in-point fragt wirklich nach dem Punkt. + ;; Zweiter Punkt gibt NUR die Richtung der Zufuehrung; der Startpunkt + ;; bleibt der Sitz des AS-Elements. + (setq p2 (vfl-in-point startpunkt (ssg-text "vfl-prompt-as-achse-p2"))) + (if (or (null p2) + (and (< (abs (- (car p2) (car startpunkt))) 1e-9) + (< (abs (- (cadr p2) (cadr startpunkt))) 1e-9))) + (progn + ;; Keine brauchbare Richtung -> auf die Seitenfrage zurueckfallen. + ;; (Der PT-Eintrag steht dann trotzdem im Journal und wird beim + ;; Replay wieder als "Achse" gelesen - deshalb hier KEIN stiller + ;; Rueckfall, sondern Abbruch.) + (princ (ssg-text "vfl-basislinie-punkte-gleich")) + (exit)) + (progn + (setq *vfl-as-basis-p1* startpunkt) + (setq *vfl-as-basis-hz* (vfl-planar-hz startpunkt p2)) + (princ (ssg-textf "vfl-basislinie-info" (list (rtos *vfl-as-basis-hz* 2 1)))) + (setq as-seite "links"))) ; vorlaeufig, s.o. + ) + (progn + (princ (ssg-text seiten-headerkey)) + (princ (ssg-text "gf-seite-links")) + (princ (ssg-text "gf-seite-rechts")) + (setq antwort (vfl-menu (ssg-text "prompt-wahl-1-2") + (list (ssg-text "gf-seite-links") (ssg-text "gf-seite-rechts")) 1 + seiten-headerkey)) + (setq as-seite (if (= antwort "2") "rechts" "links")))) + (vf-set-as-masse *vfl-as-winkel* as-seite) + as-seite) + ;; ES-Winkel (30/90) + Seite abfragen - MARKER-FREIE Schale fuer die Modi 2/3, ;; die das ES-Element als eigene Praeambel (Start/Ziel bereits fest) abfragen ;; und ihr eigenes Journal-/Masse-Schema fuehren. Unterscheidet sich bewusst @@ -6731,6 +6908,9 @@ (cons "L_VF_m" (vfl-join-komma *vfl-acc-lvf*)) (cons "ANTRIEBFAHRTRICHTUNG" (vfl-join-komma *vfl-acc-richtung*)) (cons "VF_WINKEL" (vfl-join-komma *vfl-acc-winkel*)) + ;; Hoehe je Foerdereinheit (Mittelwert Umlenk-KS_EIN / Motor-KS_AUS), + ;; Meter mit 3 Nachkommastellen - Sivas 4433-4437. + (cons "VF_HOEHE_m" (vfl-join-komma *vf-acc-vfhoehe*)) ;; Vario-Kurven (Richtungswechsel im VF-Teil), A=aussen / I=innen (cons "VF_Bogen_A_90" (itoa (vfl-get-count *vfl-acc-variokurve* "A_90"))) (cons "VF_Bogen_A_60" (itoa (vfl-get-count *vfl-acc-variokurve* "A_60"))) @@ -6995,9 +7175,12 @@ ;; werden - sonst wuerde ein WINKEL_AS-Attribut den Wert der VORHERIGEN Kette ;; tragen, wenn diesmal kein AS gewaehlt wird. (setq *vfl-as-winkel* nil *vfl-es-winkel* nil) + ;; Winkel, dann Seite ODER (nur bei 30 Grad) eine Zufuehrungsachse - siehe + ;; vfl-frage-as-winkel-seite-oder-achse. Im Achsen-Modus entfaellt die + ;; Seitenfrage; die Seite folgt aus der Lage des naechsten Kettenpunkts und + ;; wird in vfl-kettenanfang-baustein bestimmt. (if as-vorhanden - (setq as-seite (vfl-frage-as-winkel-seite "vfl-aus-seite-header")) - ) + (setq as-seite (vfl-frage-as-winkel-seite-oder-achse "vfl-aus-seite-header" startpunkt))) ;; ES-Seite wird erst am Kettenende abgefragt (siehe vfl-frage-es-seite), ;; da das ES-Element erst dort eingefuegt wird. @@ -10650,8 +10833,10 @@ (progn (setq pt (vfl3-flach-ein pt letzt-koerper-hz)) (setq flat-p t) ;; Fueller-A: der im Kletter-Segment durch 1/2 GF1 frei werdende Platz (if (and (> filler-A-len 0.1) (not filler-a-done)) - (progn (setq pt (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" + (progn (vf-vfhoehe-merke pt) + (setq pt (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" pt filler-A-len 0 letzt-koerper-hz)) + (vf-vfhoehe-schliesse pt) (vfl-acc-vf-seg "horizontal" 0 filler-A-len) (setq anzahl-vf (1+ anzahl-vf) filler-a-done t))))) (if (= i vf-ende) @@ -10684,7 +10869,9 @@ "vfl-m3-warnung-fueller-ausgang-zu-kurz") (list (rtos fill-len 2 0) (rtos *vfk-restlaenge-min-clamp* 2 0))))) (setq fill-len (max *vfk-restlaenge-min-clamp* fill-len)) + (vf-vfhoehe-merke pt) (setq pt (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" pt fill-len 0 seg-hz)) + (vf-vfhoehe-schliesse pt) (vfl-acc-vf-seg "horizontal" 0 fill-len) (setq anzahl-vf (1+ anzahl-vf)) (setq letzt-koerper-hz seg-hz)) ;; --- Vario-Kurve (flach, direkt bei 0 Grad) --- @@ -10693,8 +10880,10 @@ (progn (setq pt (vfl3-flach-ein pt letzt-koerper-hz)) (setq flat-p t) ;; Fueller-A: der im Kletter-Segment durch 1/2 GF1 frei werdende Platz (if (and (> filler-A-len 0.1) (not filler-a-done)) - (progn (setq pt (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" + (progn (vf-vfhoehe-merke pt) + (setq pt (insert-inclined-scaled-block "Staustrecke_SP_1000_mm" pt filler-A-len 0 letzt-koerper-hz)) + (vf-vfhoehe-schliesse pt) (vfl-acc-vf-seg "horizontal" 0 filler-A-len) (setq anzahl-vf (1+ anzahl-vf) filler-a-done t))))) (setq bwinkel (nth 3 seg) bseite (nth 4 seg) kv-variante (nth 6 seg)) @@ -11230,6 +11419,12 @@ (setq gemessen (vfl-kette-neigung (vfl-kette-rec-ein entry-info) (vfl-kette-rec-aus rec))) (setq betrag (vfl-kette-round (abs gemessen))) (setq richtung (if (< gemessen 0.0) "Auf" "Ab")))) + ;; Hoehe dieses Segments aus DENSELBEN Punkten, aus denen auch + ;; die Laenge kommt (Ende des Eingangsbogens bis Anfang des + ;; Ausgangsbogens) - dadurch bleiben VF_HOEHE_m und L_VF_m auch + ;; beim Rekonstruieren aus bestehenden Bloecken gleich lang. + (vf-vfhoehe-segment (caddr (vfl-kette-rec-aus entry-info)) + (caddr (vfl-kette-rec-ein rec))) (vfl-acc-vf-seg richtung betrag (distance (vfl-kette-rec-aus entry-info) (vfl-kette-rec-ein rec))) (setq entry-info nil) @@ -11286,6 +11481,8 @@ (cons "L_VF_m" (vfl-join-komma *vfl-acc-lvf*)) (cons "ANTRIEBFAHRTRICHTUNG" (vfl-join-komma *vfl-acc-richtung*)) (cons "VF_WINKEL" (vfl-join-komma *vfl-acc-winkel*)) + ;; Hoehe je Foerdereinheit - siehe oben. + (cons "VF_HOEHE_m" (vfl-join-komma *vf-acc-vfhoehe*)) (cons "VF_Bogen_A_90" (itoa (vfl-get-count *vfl-acc-variokurve* "A_90"))) (cons "VF_Bogen_A_60" (itoa (vfl-get-count *vfl-acc-variokurve* "A_60"))) (cons "VF_Bogen_A_30" (itoa (vfl-get-count *vfl-acc-variokurve* "A_30"))) diff --git a/Lisp/vf_standard.lsp b/Lisp/vf_standard.lsp index 658bf1f..53f3d9d 100644 --- a/Lisp/vf_standard.lsp +++ b/Lisp/vf_standard.lsp @@ -612,9 +612,15 @@ ;; beliebig aneinanderreihen (siehe doc/VarioFoerderer_Linienzug_Prinzipien.md). ;; best-winkel=0 => horizontales Sub-Segment (Boegen fest auf_3/ab_3). (defun vfs-vf-koerper (aktueller-punkt richtung best-winkel L_VF hz / - bogen-name bogen-mass bogen-dx bogen-dz) + bogen-name bogen-mass bogen-dx bogen-dz z-ein) (if (null hz) (setq hz 0.0)) (setq hz (float hz)) + ;; Hoehe DIESES VF-Segments (Attribut VF_HOEHE_m, Sivas 4433-4437): + ;; KS_EIN ist der Punkt beim Eintritt, KS_AUS der Rueckgabewert am Ende - + ;; der Mittelwert beider wird unten angehaengt. Eine Kette mit drei durch + ;; Vario-Boegen getrennten Abschnitten bekommt dadurch drei Werte, parallel + ;; zu L_VF_m und VF_WINKEL (Nutzer-Vorgabe 2026-10-21). + (setq z-ein (caddr aktueller-punkt)) ;; 5. 1. Vertikalbogen ;; Sonderfall best-winkel=0 (horizontale Zwischenstrecke, siehe @@ -717,6 +723,8 @@ ) ) + ;; Segment-Hoehe anhaengen: Mittelwert aus KS_EIN (z-ein) und KS_AUS. + (vf-vfhoehe-segment z-ein (caddr aktueller-punkt)) aktueller-punkt ) diff --git a/cfg/Merkmalsstamm_in_Sivas.xlsx b/cfg/Merkmalsstamm_in_Sivas.xlsx index 0dd6ba7c69b28fbe881c8e5da018b5ebd690676d..7d6c57eeee63f14b55e2821db116665d3257dc28 100644 GIT binary patch delta 56546 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

>aQhJ$9<}uOi1807D(Sb} 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 s;Fu66uRw8FZ~+LT4`47XI6o8 _l 1430.0) (< _l 1431.0))) + + ;; --- AS-Seite aus der Lage des naechsten Punkts zur Basislinie --- + ;; Basislinie zeigt nach +X; ein Ziel mit +Y liegt links davon, mit -Y rechts. + (tu-eq "vfl-seite-aus-lage/links" + "links" (vfl-seite-aus-lage '(0.0 0.0 0.0) '(1000.0 0.0 0.0) '(500.0 800.0 0.0))) + (tu-eq "vfl-seite-aus-lage/rechts" + "rechts" (vfl-seite-aus-lage '(0.0 0.0 0.0) '(1000.0 0.0 0.0) '(500.0 -800.0 0.0))) + ;; Richtung der Basislinie umdrehen -> Seite dreht mit + (tu-eq "vfl-seite-aus-lage/basislinie-umgedreht" + "rechts" (vfl-seite-aus-lage '(1000.0 0.0 0.0) '(0.0 0.0 0.0) '(500.0 800.0 0.0))) + ;; schraege Basislinie (45 Grad): Ziel oberhalb davon liegt links + (tu-eq "vfl-seite-aus-lage/schraeg" + "links" (vfl-seite-aus-lage '(0.0 0.0 0.0) '(1000.0 1000.0 0.0) '(0.0 1000.0 0.0))) + ;; Z spielt keine Rolle (rein planare Entscheidung) + (tu-eq "vfl-seite-aus-lage/z-ignoriert" + "rechts" (vfl-seite-aus-lage '(0.0 0.0 5000.0) '(1000.0 0.0 -200.0) '(500.0 -800.0 999.0))) + + ;; --- VF-Hoehe je SEGMENT (Attribut VF_HOEHE_m, Sivas 4433-4437) --- + ;; Ein Eintrag je GERADEM VF-Abschnitt: Mittelwert aus dessen KS_EIN und + ;; KS_AUS, in METERN mit 3 Nachkommastellen. Zwischen Umlenk- und + ;; Motorstation koennen mehrere Abschnitte liegen (auf/ab/horizontal), die + ;; Liste laeuft darum parallel zu L_VF_m und VF_WINKEL. + (vf-vfhoehe-reset) + (tu-eq "vf-vfhoehe/leer-nach-reset" "" (vfl-join-komma *vf-acc-vfhoehe*)) + + ;; 2000 mm und 3000 mm -> Mittel 2500 mm -> "2.500" + (vf-vfhoehe-segment 2000.0 3000.0) + (tu-eq "vf-vfhoehe/mittelwert-meter" "2.500" (vfl-join-komma *vf-acc-vfhoehe*)) + + ;; Drei Abschnitte wie im realen Block (L_VF_m hatte dort 3 Eintraege): + ;; horizontal, horizontal, steigend - alle drei bekommen einen Wert. + (vf-vfhoehe-reset) + (vf-vfhoehe-segment 2076.0 2076.0) ; horizontal + (vf-vfhoehe-segment 2076.0 2076.0) ; horizontal + (vf-vfhoehe-segment 2076.0 2600.0) ; steigend -> Mittel 2338 + (tu-eq "vf-vfhoehe/drei-abschnitte" + "2.076,2.076,2.338" (vfl-join-komma *vf-acc-vfhoehe*)) + + ;; Unvollstaendige Messung haengt NICHTS an - sonst verschoebe sich die + ;; Liste gegen L_VF_m und eine Hoehe landete beim falschen Foerderer. + (vf-vfhoehe-reset) + (vf-vfhoehe-segment 1000.0 2000.0) + (vf-vfhoehe-segment nil 3000.0) + (vf-vfhoehe-segment 4000.0 nil) + (tu-eq "vf-vfhoehe/unvollstaendig-ignoriert" "1.500" (vfl-join-komma *vf-acc-vfhoehe*)) + + ;; negative Hoehen (Kette unter Null) muessen durchgehen + (vf-vfhoehe-reset) + (vf-vfhoehe-segment -500.0 -1500.0) + (tu-eq "vf-vfhoehe/negativ" "-1.000" (vfl-join-komma *vf-acc-vfhoehe*)) + (vf-vfhoehe-reset) + + ;; vf-meter-3: GENAU 3 Nachkommastellen, unabhaengig von DIMZIN. + ;; (rtos x 2 3) allein kuerzt nachfolgende Nullen ("2.5", "-1") - real im + ;; Testlauf aufgetreten, deshalb eigene Formatierung. + (tu-eq "vf-meter-3/glatt" "2.500" (vf-meter-3 2500.0)) + (tu-eq "vf-meter-3/ganzzahlig" "3.000" (vf-meter-3 3000.0)) + (tu-eq "vf-meter-3/negativ" "-1.000" (vf-meter-3 -1000.0)) + (tu-eq "vf-meter-3/null" "0.000" (vf-meter-3 0.0)) + (tu-eq "vf-meter-3/drei-stellen" "1.234" (vf-meter-3 1234.0)) + + ;; --- SONDERFALL Standard/Etage: Hoehe ueber die GANZE Kette --- + ;; Nur ein Motor und nur ein gerader VF-Abschnitt, darum zaehlt dort + ;; AS-KS_EIN .. ES-KS_AUS statt des Segmentwerts (Nutzer-Vorgabe 2026-10-21). + (vf-vfhoehe-reset) + (vf-vfhoehe-kette 1000.0 3000.0) + (tu-eq "vf-vfhoehe-kette/mittelwert" "2.000" (vfl-join-komma *vf-acc-vfhoehe*)) + + ;; ERSETZT den beim Bau gesammelten Segmentwert, haengt ihn NICHT an - + ;; sonst stuenden fuer eine Standard-Anlage zwei Hoehen in der Liste. + (vf-vfhoehe-reset) + (vf-vfhoehe-segment 5000.0 5000.0) ; Segmentwert aus vfs-vf-koerper + (vf-vfhoehe-kette 1000.0 3000.0) + (tu-eq "vf-vfhoehe-kette/ersetzt-segmentwert" "2.000" (vfl-join-komma *vf-acc-vfhoehe*)) + + ;; fehlender Endpunkt -> lieber leer als geraten + (vf-vfhoehe-reset) + (vf-vfhoehe-kette 1000.0 nil) + (tu-eq "vf-vfhoehe-kette/ohne-endpunkt-leer" "" (vfl-join-komma *vf-acc-vfhoehe*)) + (vf-vfhoehe-reset) )