From ddb5dfa0f54452742c6f5e5ed4d0e730da5a429d Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Mon, 31 Aug 2026 13:53:41 +0200 Subject: [PATCH] =?UTF-8?q?WINKEL=5FAS=20und=20WINKEL=5FES=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lisp/Gefaellestrecke.lsp | 11 ++++++++--- Lisp/ssg_core.lsp | 4 ++++ Lisp/vf_core.lsp | 2 ++ Lisp/vf_linienzug.lsp | 24 +++++++++++++++++++++--- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/Lisp/Gefaellestrecke.lsp b/Lisp/Gefaellestrecke.lsp index 1f6ab82..f8626f5 100644 --- a/Lisp/Gefaellestrecke.lsp +++ b/Lisp/Gefaellestrecke.lsp @@ -1043,7 +1043,8 @@ bR90 bR60 bR30 startpunkt last-ent nach-aus-pt entry-hz (caddr (nth first-idx segmente)) - es-seite "0" "Schoenenberger Geruest") + es-seite "0" "Schoenenberger Geruest" + gf-as-winkel gf-es-winkel) (princ "\n\n=========================================") (princ (ssg-text "gf-status-fertig")) @@ -1141,7 +1142,8 @@ bogen-L90 bogen-L60 bogen-L30 bogen-R90 bogen-R60 bogen-R30 startpunkt last-ent nach-aus-pt entry-hz L-first-seg - es-seite geruest-einzelmodul geruest-typ / + es-seite geruest-einzelmodul geruest-typ + as-winkel es-winkel / gf-bname gf-ss ent gf-insert typ-str anzahl-gf gf-winkel-str i gf-g10z gf-korr-dz gf-osmode-alt) (if (null geruest-einzelmodul) (setq geruest-einzelmodul "1")) @@ -1217,7 +1219,9 @@ (cons "DELTA_L_mm" (itoa (fix deltaL))) (cons "TYP" typ-str) (cons "SEITE_AS" seite) + (cons "WINKEL_AS" (if as-winkel as-winkel "")) (cons "SEITE_ES" es-seite) + (cons "WINKEL_ES" (if es-winkel es-winkel "")) (cons "ANZAHL_GF" (itoa anzahl-gf)) (cons "L_GF_m" L-gf-str) (cons "GF_WINKEL" gf-winkel-str) @@ -1357,7 +1361,8 @@ 0 0 0 0 0 0 0 0 startpunkt last-ent nach-aus-pt (float hz) (float L_stau) - es-seite geruest-einzelmodul geruest-typ)) + es-seite geruest-einzelmodul geruest-typ + as-winkel es-winkel)) ;; Edit-Metadaten (Fahrtrichtung, Gefaellewinkel, Element-Winkel) als XDATA ;; auf das GF_N-INSERT schreiben, damit GEFAELLESTRECKE_EDIT die Strecke diff --git a/Lisp/ssg_core.lsp b/Lisp/ssg_core.lsp index 55ab336..83d7dfe 100644 --- a/Lisp/ssg_core.lsp +++ b/Lisp/ssg_core.lsp @@ -754,6 +754,8 @@ ;; ARTINR fest 6220 (alle GF/VF). TYP-Wert wird zur Laufzeit gesetzt. ;; ID zuerst (global, jeder eingefuegte Baustein - Kreisel/GF/VF - erhaelt eine ;; neue ID), danach Bezeichnung (= Blockname). Hoehen/Delta mit Einheit _mm. +;; WINKEL_AS/WINKEL_ES: Elementwinkel (30/60/90, als String) des AS-/ES- +;; Elements, sofern eines gewaehlt wurde - sonst leer (kein AS/ES vorhanden). (setq *strecke-attr-front* '(("ID" "") ("Bezeichnung" "") @@ -765,7 +767,9 @@ ("DELTA_L_mm" "0") ("TYP" "Streckengruppe") ("SEITE_AS" "rechts") + ("WINKEL_AS" "") ("SEITE_ES" "rechts") + ("WINKEL_ES" "") ("ANZAHL_GF" "0") ("L_GF_m" "0.000") ("GF_WINKEL" "0.0"))) diff --git a/Lisp/vf_core.lsp b/Lisp/vf_core.lsp index ffb5cb7..f0ceaff 100644 --- a/Lisp/vf_core.lsp +++ b/Lisp/vf_core.lsp @@ -896,7 +896,9 @@ (cons "DELTA_L_mm" (itoa (fix deltaL))) (cons "TYP" "Streckengruppe") (cons "SEITE_AS" seite) + (cons "WINKEL_AS" (if (= anlage-typ "etage") "30" "90")) (cons "SEITE_ES" seite) + (cons "WINKEL_ES" (if (= anlage-typ "etage") "30" "90")) (cons "ANZAHL_GF" "2") ; GF1 + GF2 (cons "L_GF_m" L_GF_m-str) ;; GF_WINKEL: Neigung je GF-Segment (GF1,GF2 - beide feste Grundneigung) diff --git a/Lisp/vf_linienzug.lsp b/Lisp/vf_linienzug.lsp index c99fcb4..0c00f7d 100644 --- a/Lisp/vf_linienzug.lsp +++ b/Lisp/vf_linienzug.lsp @@ -2798,7 +2798,9 @@ (cons "DELTA_L_mm" (itoa (fix delta-l-total))) (cons "TYP" typ-str) (cons "SEITE_AS" as-seite) + (cons "WINKEL_AS" (if (boundp '*vfl-as-winkel*) *vfl-as-winkel* "")) (cons "SEITE_ES" es-seite) + (cons "WINKEL_ES" (if (boundp '*vfl-es-winkel*) *vfl-es-winkel* "")) ;; ANZAHL_GF = alle GF-Stuecke: eigenstaendige GF-Segmente UND die GF1/GF2 ;; jeder VF-Einheit (alle ueber vfl-acc-gf-seg in *vfl-acc-lgf* gesammelt). (cons "ANZAHL_GF" (itoa (length *vfl-acc-lgf*))) @@ -3045,6 +3047,11 @@ (list (ssg-text "vfl-ja") (ssg-text "vfl-as-nein")) 1 "vfl-as-setzen-frage")) (setq as-vorhanden (/= antwort "2")) + ;; *vfl-as-winkel*/*vfl-es-winkel* sind Globals (fuer vfl-as-winkel/-es-winkel- + ;; Zugriff aus AS-/ES-Einfuegefunktionen) und muessen pro Kette zurueckgesetzt + ;; 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) (if as-vorhanden (progn (setq *vfl-as-winkel* @@ -4875,6 +4882,8 @@ (list (ssg-text "vfl-ja") (ssg-text "vfl-m3-as-nein")) 1 "vfl-as-setzen-frage")) (setq as-vorhanden (/= antwort "2")) + ;; Globals pro Lauf zuruecksetzen (siehe Kommentar in vf-linienzug-modus). + (setq *vfl-as-winkel* nil *vfl-es-winkel* nil) (if as-vorhanden (progn (setq *vfl-as-winkel* @@ -5694,7 +5703,7 @@ ;; Rueckgabe: (list attribut-alist typ-str). (defun vfl-kette-baue-attribute (kette neuer-bname chain-start chain-end / rec typ bname anzahl-vf phase entry-info gemessen betrag richtung - as-seite es-seite delta-l erster letzter ergebnis typ-str) + as-seite es-seite as-winkel es-winkel delta-l erster letzter ergebnis typ-str) (vfl-acc-reset) (setq anzahl-vf 0) (setq phase "gf") @@ -5704,6 +5713,7 @@ ;; eigenes AS-/ES-Element beginnt/endet, soll das im Attribut auch als ;; "keins vorhanden" erkennbar bleiben statt eine falsche Seite vorzutaeuschen. (setq as-seite "" es-seite "") + (setq as-winkel "" es-winkel "") (setq erster (car kette)) (setq letzter (car (reverse kette))) @@ -5719,10 +5729,16 @@ ;; aufgeloest; jedes davon durchlaeuft hier dieselbe Typ-Klassifikation ;; wie ein von Anfang an loses Bauteil. ((= typ "AS") - (if (equal rec erster) (setq as-seite (vfl-kette-teil bname 3)))) + (if (equal rec erster) + (progn + (setq as-seite (vfl-kette-teil bname 3)) + (setq as-winkel (vfl-kette-teil bname 2))))) ((= typ "ES") - (if (equal rec letzter) (setq es-seite (vfl-kette-teil bname 3)))) + (if (equal rec letzter) + (progn + (setq es-seite (vfl-kette-teil bname 3)) + (setq es-winkel (vfl-kette-teil bname 2))))) ((= typ "GFBOGEN") ;; Gefaellebogen___R500 @@ -5797,7 +5813,9 @@ (cons "DELTA_L_mm" (itoa (fix delta-l))) (cons "TYP" typ-str) (cons "SEITE_AS" as-seite) + (cons "WINKEL_AS" as-winkel) (cons "SEITE_ES" es-seite) + (cons "WINKEL_ES" es-winkel) (cons "ANZAHL_GF" (itoa (length *vfl-acc-lgf*))) (cons "L_GF_m" (vfl-join-komma *vfl-acc-lgf*)) (cons "GF_WINKEL" (vfl-join-komma *vfl-acc-gfwinkel*))