Debug-Logging fuer VF-Linienzug Modus 1 und Modus 3

Zentrale Debug-Schalter-Sammlung (*dbg-schalter*, Default AUS) in
ssg_dbg.lsp: dbg-schalter-on/-off/-p/-open/-liste. dbg*-Aufrufe bleiben
dauerhaft im Code, ohne im Normalbetrieb .dbg-Dateien zu erzeugen.

Modus 1 (vf-linienzug-modus): Session-Logging ueber Schalter
"vfl-modus1" nach DXFM_LOG/vfl_modus1.dbg. Da alle interaktiven
Eingaben bereits ueber die gemeinsamen vfl-in-point/-string/-real/
-int/-value/-selection-Wrapper laufen, reicht eine einzige
Instrumentierung in vfl-journal-record/-mark/-steplabel, um jede
Frage/Antwort automatisch mitzuloggen.

Modus 3 (vf-linienzug-modus3): auf dieselben vfl-in-*-Wrapper
umgestellt (vorher rohe getstring/getreal/getint/ssget) - profitiert
dadurch vom selben automatischen Logging (Schalter "vfl-modus3",
DXFM_LOG/vfl_modus3.dbg). Kein Journal-Replay/XDATA wie bei Modus 1/2,
nur das Logging wurde uebernommen. Fix nebenbei: Dialog-Kopfzeile
"Hoehe (Z) des Endpunkts [%1]" zeigte den Platzhalter woertlich statt
des Vorschlagswerts (ssg-text statt ssg-textf).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-27 10:59:10 +02:00
parent c9ce3bbe4a
commit 4238509e7d
3 changed files with 299 additions and 58 deletions
+52
View File
@@ -34,6 +34,58 @@
(setq *dbg-active* T) ; Debug-Ausgabe aktiv (Standard: ein)
(setq *dbg-buffer* nil) ; Zeilenpuffer (Liste von Strings)
;; ------------------------------------------------------------
;; ZENTRALE DEBUG-SCHALTER-SAMMLUNG
;;
;; Jedes Feature/jede Routine hat ihren eigenen Schalter (Symbol -> 0/1).
;; DEFAULT: alle AUS (0). Dadurch bleiben (dbg-schalter-openp "name" ...)-
;; Aufrufe im Code stehen, ohne dass beim normalen Arbeiten .dbg-Dateien
;; entstehen. Erst wenn der passende Schalter auf 1 gesetzt wird, wird die
;; Datei angelegt und beschrieben.
;;
;; (dbg-schalter-on "vfl-modus3") ; Schalter einschalten (1)
;; (dbg-schalter-off "vfl-modus3") ; Schalter ausschalten (0)
;; (dbg-schalter-p "vfl-modus3") ; T wenn eingeschaltet, sonst nil
;; (dbg-schalter-open "vfl-modus3" "vfl_modus3.dbg" "DXFM_LOG")
;; ; oeffnet die Datei NUR wenn Schalter=1;
;; ; gibt T zurueck wenn geoeffnet, sonst nil
;; (dbg-schalter-liste) ; alle bekannten Schalter + Zustand zeigen
;; ------------------------------------------------------------
(if (not (boundp '*dbg-schalter*)) (setq *dbg-schalter* nil))
;; Bekannte Schalter mit Default 0 vorregistrieren (rein informativ fuer
;; dbg-schalter-liste; unbekannte Namen gelten ebenfalls als 0/aus).
(foreach nm '("vfl-modus1" "vfl-modus3")
(if (not (assoc nm *dbg-schalter*))
(setq *dbg-schalter* (cons (cons nm 0) *dbg-schalter*))))
(defun dbg-schalter-set (name wert)
(setq *dbg-schalter*
(cons (cons name wert)
(vl-remove-if '(lambda (p) (= (car p) name)) *dbg-schalter*)))
wert)
(defun dbg-schalter-on (name) (dbg-schalter-set name 1) (princ))
(defun dbg-schalter-off (name) (dbg-schalter-set name 0) (princ))
(defun dbg-schalter-p (name / p)
(setq p (assoc name *dbg-schalter*))
(and p (= (cdr p) 1)))
;; Oeffnet die Debug-Datei NUR, wenn der Schalter <name> eingeschaltet ist.
;; Rueckgabe: T wenn eine Datei geoeffnet wurde, sonst nil.
(defun dbg-schalter-open (name filename envvar)
(if (dbg-schalter-p name)
(progn (dbgon) (dbgopen filename envvar) T)
nil))
(defun dbg-schalter-liste ( / )
(prompt "\n[DBG] Bekannte Debug-Schalter:")
(foreach p (reverse *dbg-schalter*)
(prompt (strcat "\n " (car p) " = " (itoa (cdr p))
(if (= (cdr p) 1) " (EIN)" " (aus)"))))
(princ))
;; ------------------------------------------------------------
;; DBGON - Debug-Ausgabe aktivieren
;; ------------------------------------------------------------