From 012c5da7f954dccdbac1fae0b71364e9f3b5e91a Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Sat, 29 Aug 2026 07:39:39 +0200 Subject: [PATCH] [REFACTOR] VF: 10-Feld-Eingabe-Entpackblock zentralisiert Der identische (setq deltaL (nth 0 eingabe) ...)-Block mit 10 Feldern stand 4x (vf_standard: vfs-standard-dialog-ablauf + c:VARIOFOERDERER_EDIT, vf_etage: vfe-etage-dialog-ablauf + vfe-edit-ent). Neu in vf_core.lsp: *vf-basis-eingabe-felder* (zentrale Feldreihenfolge) + vf-basis-eingabe-entpacken (set 'sym wert auf die dyn.-skopten Aufrufer-Locals). Alle 4 Aufrufer deklarieren die 10 Namen weiterhin in ihrer /-Liste. Reines Refactoring, identisches Verhalten. Paren-Balance geprueft. Co-Authored-By: Claude Opus 4.8 (1M context) --- Lisp/vf_core.lsp | 18 ++++++++++++++++++ Lisp/vf_etage.lsp | 22 ++-------------------- Lisp/vf_standard.lsp | 22 ++-------------------- 3 files changed, 22 insertions(+), 40 deletions(-) diff --git a/Lisp/vf_core.lsp b/Lisp/vf_core.lsp index 65ccac6..0fe2659 100644 --- a/Lisp/vf_core.lsp +++ b/Lisp/vf_core.lsp @@ -949,6 +949,24 @@ ;; ============================================================ ;; TEIL 9: GEMEINSAME EINGABE-ABFRAGE ;; ============================================================ + +;; Feld-Reihenfolge der Basis-Dialog-Ergebnisliste (vfs-dialog-eingabe-basis). +;; EINE zentrale Definition statt vierfach denselben (nth i eingabe)-Block. +(setq *vf-basis-eingabe-felder* + '(deltaL deltaH richtung z-start hz seite dim geruest-einzelmodul geruest-typ motorseite)) + +;; Entpackt die Basis-Dialog-Ergebnisliste in die gleichnamigen (dynamisch +;; skopten) Lokalvariablen des Aufrufers. Ersetzt den 10-zeiligen +;; (setq deltaL (nth 0 eingabe) ...)-Block. Nutzt (set 'sym wert): die Symbole +;; sind in der /-Deklaration des aufrufenden defun als Locals gebunden, daher +;; wirkt das Setzen nur dort (AutoLISP dynamic scoping). +(defun vf-basis-eingabe-entpacken (eingabe / i) + (setq i 0) + (foreach feld *vf-basis-eingabe-felder* + (set feld (nth i eingabe)) + (setq i (1+ i))) + eingabe) + (defun vf-eingabe-abfragen ( / eingabe-modus line-points startpunkt endpunkt differenz deltaL deltaH deltaX deltaY richtung antwort hz-winkel) (princ (ssg-text "vfc-eingabemodus-header")) diff --git a/Lisp/vf_etage.lsp b/Lisp/vf_etage.lsp index a0ee8ed..c6ba1a7 100644 --- a/Lisp/vf_etage.lsp +++ b/Lisp/vf_etage.lsp @@ -901,16 +901,7 @@ (if (null eingabe) (princ (ssg-text "vfc-vorgang-abgebrochen")) (progn - (setq deltaL (nth 0 eingabe) - deltaH (nth 1 eingabe) - richtung (nth 2 eingabe) - z-start (nth 3 eingabe) - hz (nth 4 eingabe) - seite (nth 5 eingabe) - dim (nth 6 eingabe) - geruest-einzelmodul (nth 7 eingabe) - geruest-typ (nth 8 eingabe) - motorseite (nth 9 eingabe)) + (vf-basis-eingabe-entpacken eingabe) (setq startpunkt (list (car startpunkt-xy) (cadr startpunkt-xy) z-start)) ;; Gewaehlte Dimension (2D/3D) + Motorseite fuer den Bau erzwingen, danach zurueck. (setq *ssg-ils-dim* dim) @@ -957,16 +948,7 @@ (if (null eingabe) (princ (ssg-text "vfc-vorgang-abgebrochen")) (progn - (setq deltaL (nth 0 eingabe) - deltaH (nth 1 eingabe) - richtung (nth 2 eingabe) - z-start (nth 3 eingabe) - hz (nth 4 eingabe) - seite (nth 5 eingabe) - dim (nth 6 eingabe) - geruest-einzelmodul (nth 7 eingabe) - geruest-typ (nth 8 eingabe) - motorseite (nth 9 eingabe)) + (vf-basis-eingabe-entpacken eingabe) (setq startpunkt (list (car startpunkt) (cadr startpunkt) z-start)) (setq best-winkel-attr (atoi (cond ((cdr (assoc "VF_WINKEL" attribs))) ("0")))) diff --git a/Lisp/vf_standard.lsp b/Lisp/vf_standard.lsp index 037b8b6..2c80281 100644 --- a/Lisp/vf_standard.lsp +++ b/Lisp/vf_standard.lsp @@ -1073,16 +1073,7 @@ (if (null eingabe) (princ (ssg-text "vfc-vorgang-abgebrochen")) (progn - (setq deltaL (nth 0 eingabe) - deltaH (nth 1 eingabe) - richtung (nth 2 eingabe) - z-start (nth 3 eingabe) - hz (nth 4 eingabe) - seite (nth 5 eingabe) - dim (nth 6 eingabe) - geruest-einzelmodul (nth 7 eingabe) - geruest-typ (nth 8 eingabe) - motorseite (nth 9 eingabe)) + (vf-basis-eingabe-entpacken eingabe) (setq startpunkt (list (car startpunkt-xy) (cadr startpunkt-xy) z-start)) ;; Gewaehlte Dimension (2D/3D) + Motorseite fuer den Bau erzwingen (Override), danach zurueck. (setq *ssg-ils-dim* dim) @@ -1229,16 +1220,7 @@ (if (null eingabe) (princ (ssg-text "vfc-vorgang-abgebrochen")) (progn - (setq deltaL (nth 0 eingabe) - deltaH (nth 1 eingabe) - richtung (nth 2 eingabe) - z-start (nth 3 eingabe) - hz (nth 4 eingabe) - seite (nth 5 eingabe) - dim (nth 6 eingabe) - geruest-einzelmodul (nth 7 eingabe) - geruest-typ (nth 8 eingabe) - motorseite (nth 9 eingabe)) + (vf-basis-eingabe-entpacken eingabe) (setq startpunkt (list (car startpunkt) (cadr startpunkt) z-start)) ;; Vorbelegung Winkel/Verteilung: bestehenden Winkel vorschlagen, L_GF-