From 64e8ebf6e1bbf1a0c654217730c94be372a55cb7 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Sun, 30 Aug 2026 08:34:08 +0200 Subject: [PATCH] [REFACTOR] VF-Linienzug: GF-Abhaengigkeitscheck der 3 Modi zusammengefuehrt Der Block 'Gefaellestrecke-Modul geladen? + init-bibliothek falls noetig' war in vf-linienzug-modus/-modus2/-modus3 wortwoertlich (bis auf den Alert-Text- Key) dreifach vorhanden. Neue Hilfsfunktion vfl-gf-abhaengigkeit-sicherstellen (alert-key) ersetzt alle drei Stellen; die modusspezifischen Alert-Texte (Modus 1 ausfuehrlicher als 2/3) bleiben als Parameter erhalten, keine Verhaltensaenderung. Hintergrund: Analyse der beiden verbliebenen Punkt-4-Baustellen (siehe vorige Session) ergab, dass der Journal-Serialisierer (String+JSON) KEIN Duplikat ist (JSON ist reine Diagnose-Einbahnstrasse fuers .dbg-Log, kein Parser zurueck) und das Modi-1/2/3-Praeludium bewusst NICHT weiter vereinheitlicht werden sollte (die Abbruch-Handler-Aktivierung unterscheidet sich gewollt pro Modus - Risiko > Nutzen). Dieser 3x identische GF-Check war der einzige echte Rest. Co-Authored-By: Claude Sonnet 5 --- Lisp/vf_linienzug.lsp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/Lisp/vf_linienzug.lsp b/Lisp/vf_linienzug.lsp index 58bee24..df6aadd 100644 --- a/Lisp/vf_linienzug.lsp +++ b/Lisp/vf_linienzug.lsp @@ -111,6 +111,18 @@ (defun vfl-as-winkel () (if (boundp '*vfl-as-winkel*) *vfl-as-winkel* "90")) (defun vfl-es-winkel () (if (boundp '*vfl-es-winkel*) *vfl-es-winkel* "90")) +;; Gemeinsame Vorbedingung aller drei Linienzug-Modi: die GF-Segmente/-Boegen +;; nutzen Funktionen aus Gefaellestrecke.lsp (gf-insert-hz-incl-scaled, +;; gf-bogen-blockname, ...). Bei reiner VarioFoerderer-Ladung ohne +;; Gefaellestrecke wuerde der GF-Zweig fehlschlagen - deshalb hier pruefen und +;; danach die AS/ES-/Bogen-Bibliothek initialisieren (init-bibliothek), falls +;; noch nicht geschehen. alert-key: modusspezifischer i18n-Text (Modus 1 ist +;; ausfuehrlicher als 2/3, daher als Parameter statt vereinheitlicht). +(defun vfl-gf-abhaengigkeit-sicherstellen (alert-key) + (if (null (car (atoms-family 1 '("GF-INSERT-HZ-INCL-SCALED")))) + (progn (alert (ssg-text alert-key)) (exit))) + (if (or (not *lib-initialized*) (null bogen-auf)) (init-bibliothek))) + ;; ============================================================ ;; TEIL 0b: EINGABE-JOURNAL (RECORD & REPLAY) ;; ============================================================ @@ -2962,18 +2974,7 @@ (dbgmsg "LIVE-BAU (kein Replay)")) (dbgflush))) - ;; Abhaengigkeit: die GF-Segmente/-Boegen nutzen Funktionen aus - ;; Gefaellestrecke.lsp (gf-insert-hz-incl-scaled, gf-bogen-blockname, ...). - ;; Bei reiner VarioFoerderer-Ladung ohne Gefaellestrecke wuerde der GF-Zweig - ;; fehlschlagen - deshalb hier pruefen. - (if (null (car (atoms-family 1 '("GF-INSERT-HZ-INCL-SCALED")))) - (progn - (alert (ssg-text "vfl-alert-gf-modul-fehlt")) - (exit) - ) - ) - - (if (or (not *lib-initialized*) (null bogen-auf)) (init-bibliothek)) + (vfl-gf-abhaengigkeit-sicherstellen "vfl-alert-gf-modul-fehlt") ;; --- Abbruch-Sicherung scharf schalten (VOR dem ersten Prompt!) --- ;; Ab hier kann jederzeit Geometrie entstehen. Ein *error*-Handler faengt @@ -4339,10 +4340,7 @@ (dbgclose))) (if old-error (old-error msg) (princ))))) - ;; Abhaengigkeit Gefaellestrecke-Modul (GF-Bausteine) - (if (null (car (atoms-family 1 '("GF-INSERT-HZ-INCL-SCALED")))) - (progn (alert (ssg-text "vfl-m3-alert-gf-modul")) (exit))) - (if (or (not *lib-initialized*) (null bogen-auf)) (init-bibliothek)) + (vfl-gf-abhaengigkeit-sicherstellen "vfl-m3-alert-gf-modul") ;; --- 1. Pfad-Objekte waehlen (LINE/ARC) --- (princ (ssg-text "vfl-m3-pfad-waehlen")) @@ -4789,10 +4787,7 @@ (dbgclose))) (if dbg-old-error (dbg-old-error msg) (princ))))) - ;; Abhaengigkeit Gefaellestrecke-Modul - (if (null (car (atoms-family 1 '("GF-INSERT-HZ-INCL-SCALED")))) - (progn (alert (ssg-text "vfl-m3-alert-gf-modul")) (exit))) - (if (or (not *lib-initialized*) (null bogen-auf)) (init-bibliothek)) + (vfl-gf-abhaengigkeit-sicherstellen "vfl-m3-alert-gf-modul") ;; --- 1. Pfad-Objekte waehlen --- (princ (ssg-text "vfl-m3-pfad-waehlen"))