[REFACTOR] VF-Linienzug: GF-Bogen/Vario-Kurve-Winkel zentral aus *vfk-gf-bogen-winkel*

Statt das '(30 60 90)-Literal an ~12 Stellen in vf_linienzug zu wiederholen
(Schema, schema-feld-pruefen, Live-Menue GF-Bogen + Vario-Kurve, Slice-Reader,
beide Edit-Dialoge), verweisen jetzt alle auf die EINMALIGE zentrale Definition
*vfk-gf-bogen-winkel* in vf_konstanten.lsp (war dort schon vorhanden, wurde aber
nirgends genutzt).

Kein Config-Eintrag (bewusst nicht in component_defaults.json): die Winkel sind
an die vorhandenen DWG-Bloecke gebunden, eine Config waere nur halb verdrahtet.
vf_konstanten ist zentrale Quelle; vf_linienzug hat einen Fallback, falls die
Datei nicht geladen wurde. Werte unveraendert (30/60/90), Journal/Blocknamen
kompatibel.

Paren-Balance geprueft.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-29 10:32:42 +02:00
parent 089fbb8eed
commit 3a0caadbb5
2 changed files with 28 additions and 19 deletions
+8 -4
View File
@@ -70,10 +70,14 @@
;; nicht greifen.
(if (null *vfk-bogen-winkel*) (setq *vfk-bogen-winkel* '(3 6 9 12 15 18 21 27 33 39 45 51)))
;; GF-Bogen-Winkel (horizontale Kurve): 30/60/90 Grad, ueberall als
;; Menue-Auswahl hartcodiert (KEIN Config-Bezug, auch nicht ueber
;; ssg-cfg-or) - Blocknamen "Gefaellebogen_<seite>_<winkel>_R500" leiten
;; sich direkt aus diesen drei Werten ab.
;; GF-Bogen-Winkel (horizontale Kurve): 30/60/90 Grad. AKTIVE, EINMALIGE Quelle
;; fuer die Winkel-Menues/Schema/Slice/Edit im VF-Linienzug (vf_linienzug.lsp
;; referenziert *vfk-gf-bogen-winkel* statt eigener '(30 60 90)-Literale) - gilt
;; auch fuer die Vario-Kurve (gleiche drei Winkel). Blocknamen
;; "Gefaellebogen_<seite>_<winkel>_R500" / "Vario_Kurve_<seite>_<winkel>_TEF_*"
;; leiten sich direkt aus diesen Werten ab. Kein Config-Bezug (bewusst: an die
;; vorhandenen DWG-Bloecke gebunden). vf_linienzug hat einen eigenen Fallback,
;; falls diese Datei nicht geladen wurde.
(if (null *vfk-gf-bogen-winkel*) (setq *vfk-gf-bogen-winkel* '(30 60 90)))
;; Etage-Typ: Schwenkwinkel der Ein-/Auslauf-Schraegsektion. Bereits als
+20 -15
View File
@@ -215,6 +215,11 @@
;; seite "1"=links / "2"=rechts
;; menue fuehrende "Naechstes Element waehlen"-Antwort (nur GF-Bogen: "1")
;; winkel GF-Bogen/Vario-Kurve als INT (30/60/90), AS/ES als STR ("30"/"90")
;; GF-Bogen/Vario-Kurve-Winkel kommen zentral aus *vfk-gf-bogen-winkel*
;; (vf_konstanten.lsp, einmalige Definition '(30 60 90)) - hier nicht mehr
;; hartcodiert. Daher (list ...) statt Quote fuer die betroffenen Winkel-Slots.
;; Fallback, falls vf_konstanten (aus irgendeinem Grund) nicht geladen wurde.
(if (null *vfk-gf-bogen-winkel*) (setq *vfk-gf-bogen-winkel* '(30 60 90)))
(setq *vfl-glied-schema*
(list
(cons "AS"
@@ -225,10 +230,10 @@
'("seite" "STR" ("1" "2"))))
(cons "GF-Bogen"
(list '("menue" "STR" ("1"))
'("winkel" "INT" (30 60 90))
(list "winkel" "INT" *vfk-gf-bogen-winkel*)
'("seite" "STR" ("1" "2"))))
(cons "Vario-Kurve"
(list '("winkel" "INT" (30 60 90))
(list (list "winkel" "INT" *vfk-gf-bogen-winkel*)
'("seite" "STR" ("1" "2"))
'("variante" "STR" ("1" "2"))))))
@@ -361,7 +366,7 @@
((= kind "REAL") (cons "hoehe" nil)) ; Zielhoehe (Auf/Ab bzw. Linie-VF)
((= kind "PT") (cons "punkt" nil))
((= kind "INT") ; eingebettete Vario-Kurve
(setq fehler (vfl-schema-feld-pruefen '("vk-winkel" "INT" (30 60 90)) val))
(setq fehler (vfl-schema-feld-pruefen (list "vk-winkel" "INT" *vfk-gf-bogen-winkel*) val))
(cons "variokurve.winkel" fehler))
((= kind "STR")
(cond
@@ -695,7 +700,7 @@
(unload_dialog dat)
(if (= ergebnis 1)
(vflw-pending-push-all
(list (nth (atoi gwinkel) '(30 60 90))
(list (nth (atoi gwinkel) *vfk-gf-bogen-winkel*)
(if (= gseite "1") "2" "1")
(if (= gvariante "1") "2" "1"))))))
(princ))
@@ -2506,7 +2511,7 @@
(vl-catch-all-apply 'vflw-gruppe-winkel-seite-impl
(list "vfl-gf-bogen-winkel-header"
(list (ssg-text "vfl-winkel-30") (ssg-text "vfl-winkel-60") (ssg-text "vfl-winkel-90"))
'(30 60 90))))
*vfk-gf-bogen-winkel*)))
(princ (ssg-text "vfl-gf-bogen-winkel-header"))
(princ (ssg-text "vfl-winkel-30"))
(princ (ssg-text "vfl-winkel-60"))
@@ -2514,7 +2519,7 @@
(setq bwinkel (vfl-menu-winkel (ssg-text "vfl-prompt-wahl-winkel-30-60-90")
(list (ssg-text "vfl-winkel-30") (ssg-text "vfl-winkel-60")
(ssg-text "vfl-winkel-90"))
'(30 60 90) 90 "vfl-gf-bogen-winkel-header"))
*vfk-gf-bogen-winkel* 90 "vfl-gf-bogen-winkel-header"))
(princ (ssg-text "vfl-gf-bogen-seite-header"))
(princ (ssg-text "gf-seite-links"))
(princ (ssg-text "gf-seite-rechts"))
@@ -2589,7 +2594,7 @@
(setq kwinkel (vfl-menu-winkel (ssg-text "vfl-prompt-wahl-winkel-30-60-90")
(list (ssg-text "vfl-opt3-30grad") (ssg-text "vfl-opt2-60grad")
(ssg-text "vfl-opt1-90grad"))
'(30 60 90) 90 "vfl-variokurve-winkel-header"))
*vfk-gf-bogen-winkel* 90 "vfl-variokurve-winkel-header"))
(princ (ssg-text "vfl-variokurve-seite-header"))
(princ (ssg-text "gf-seite-links"))
(princ (ssg-text "gf-seite-rechts"))
@@ -3663,7 +3668,7 @@
(defun vfl-gf-bogen-slice-werte (slice / werte w s)
(setq werte (vfl-schema-slice-werte "GF-Bogen" slice (list "1" 90 "1")))
(setq w (cadr werte) s (caddr werte))
(list (vfl-winkel-normieren w '(30 60 90) 90) s))
(list (vfl-winkel-normieren w *vfk-gf-bogen-winkel* 90) s))
;; Pre-fill-faehiger Winkel+Seite-Dialog fuer den GF-Bogen (nutzt das
;; bestehende vflw_winkel_seite-Tile aus dem Wizard-DCL, aber mit Vorbelegung
@@ -3686,8 +3691,8 @@
(add_list (ssg-text "vfl-winkel-90"))
(end_list)
;; Winkel 30/60/90 -> Listenposition 0/1/2
(set_tile "winkel" (itoa (- (length '(30 60 90))
(length (member vor-winkel '(30 60 90))))))
(set_tile "winkel" (itoa (- (length *vfk-gf-bogen-winkel*)
(length (member vor-winkel *vfk-gf-bogen-winkel*)))))
(start_list "seite")
(add_list (ssg-text "gf-seite-links"))
(add_list (ssg-text "gf-seite-rechts"))
@@ -3699,7 +3704,7 @@
(setq ergebnis (start_dialog))
(unload_dialog dat)
(if (= ergebnis 1)
(list (nth (atoi gwinkel) '(30 60 90)) ; Listenposition 0/1/2 -> 30/60/90
(list (nth (atoi gwinkel) *vfk-gf-bogen-winkel*) ; Listenposition 0/1/2 -> 30/60/90
(if (= gseite "1") "2" "1")) ; Liste 0=links/1=rechts -> code "1"/"2"
nil))))
@@ -3724,8 +3729,8 @@
(add_list (ssg-text "vfl-opt1-90grad"))
(end_list)
;; Winkel 30/60/90 -> Listenposition 0/1/2
(set_tile "winkel" (itoa (- (length '(30 60 90))
(length (member vor-winkel '(30 60 90))))))
(set_tile "winkel" (itoa (- (length *vfk-gf-bogen-winkel*)
(length (member vor-winkel *vfk-gf-bogen-winkel*)))))
(start_list "seite")
(add_list (ssg-text "gf-seite-links"))
(add_list (ssg-text "gf-seite-rechts"))
@@ -3742,7 +3747,7 @@
(setq ergebnis (start_dialog))
(unload_dialog dat)
(if (= ergebnis 1)
(list (nth (atoi gwinkel) '(30 60 90)) ; Listenposition 0/1/2 -> 30/60/90
(list (nth (atoi gwinkel) *vfk-gf-bogen-winkel*) ; Listenposition 0/1/2 -> 30/60/90
(if (= gseite "1") "2" "1") ; Liste 0=links/1=rechts -> "1"/"2"
(if (= gvariante "1") "2" "1")) ; Liste 0=aussen/1=innen -> "1"/"2"
nil))))
@@ -3815,7 +3820,7 @@
(defun vfl-vario-slice-werte (slice / werte)
(setq werte (vfl-schema-slice-werte "Vario-Kurve" slice (list 90 "1" "2")))
;; Winkel gegen Fremdwerte absichern (analog GF-Bogen).
(list (vfl-winkel-normieren (car werte) '(30 60 90) 90)
(list (vfl-winkel-normieren (car werte) *vfk-gf-bogen-winkel* 90)
(cadr werte) (caddr werte)))
;; Neue Vario-Kurve-Slice bauen.