Ausgabeverzeichnis nur über Lisp Variable festlegen. Anscheinend speichert Bricscad Umgebungen über die Sessions hinweg. Die Ausgaben der Tests landen woanders als der generelle Export
This commit is contained in:
@@ -248,6 +248,21 @@ Der Omniflo-CSV-Export (Bogen/Weiche/Gerade, inkl. Merkmale-Aufbau und Sum-Zeile
|
||||
seit Entfernung von `c:OMNI_EXPORT` ausschließlich über `c:EXPORTCSV` → `lib/export_csv.py`
|
||||
(`build_bogen_merkmale`, `build_weiche_merkmale`, `build_gerade_merkmale`, `build_omni_sum_merkmale`).
|
||||
|
||||
**Ausgabeordner:** `c:EXPORTSIVAS`/`c:EXPORTCSV` schreiben immer nach `DXFM_RESULTS`.
|
||||
`TEST_EXPORT_ALL` (siehe `tests/test_export_all.lsp`) leitet waehrend des Testlaufs stattdessen
|
||||
nach `DXFM_TESTOUT` um, über die reine Lisp-Sitzungsvariable `*export-test-override*` (wird von
|
||||
`csv:run-export` zusaetzlich zu `DXFM_RESULTS` abgefragt und danach garantiert wieder auf `nil`
|
||||
zurueckgesetzt, auch bei einem Fehler, ueber `vl-catch-all-apply`).
|
||||
|
||||
**Wichtig:** Der Umweg über `*export-test-override*` ist bewusst gewaehlt und **kein**
|
||||
`(setenv "DXFM_RESULTS" ...)`. In BricsCAD/AutoCAD schreibt `(setenv ...)` nicht nur in den
|
||||
Windows-Prozess, sondern dauerhaft in die Profil-Registry der Anwendung – der Wert überlebt
|
||||
damit jeden Neustart und jedes `setenv.bat`, bis er erneut per `(setenv)` überschrieben wird.
|
||||
Ein einziger `(setenv "DXFM_RESULTS" ...)`-Aufruf (z. B. ein frueherer, unvollstaendiger
|
||||
Testlauf) würde `DXFM_RESULTS` für alle künftigen Sitzungen unwiderruflich auf den Testordner
|
||||
umbiegen. Falls das bereits passiert ist, hilft nur ein manuelles
|
||||
`(setenv "DXFM_RESULTS" "<richtiger Pfad>")` in BricsCAD, um den Profil-Wert zu korrigieren.
|
||||
|
||||
---
|
||||
|
||||
### `tests.lsp` – Testbefehle
|
||||
|
||||
+25
-3
@@ -41,6 +41,14 @@
|
||||
;; Beim Laden des Moduls einmalig einlesen (Lazy-Loading via ssg-ensure "export")
|
||||
(export:load-cfg)
|
||||
|
||||
;; --- Test-Override fuer den Ausgabeordner (nur Lisp-Sitzungsspeicher) ---
|
||||
;; Wird ausschliesslich von TEST_EXPORT_ALL (tests/test_export_all.lsp)
|
||||
;; waehrend des Testlaufs auf DXFM_TESTOUT gesetzt und danach garantiert
|
||||
;; wieder auf nil zurueckgesetzt. Bewusst KEIN (setenv "DXFM_RESULTS" ...):
|
||||
;; (setenv ...) schreibt in BricsCAD dauerhaft in die Profil-Registry und
|
||||
;; ueberlebt damit jeden Neustart.
|
||||
(setq *export-test-override* nil)
|
||||
|
||||
|
||||
;; --- Feste Datei-/Skriptnamen dieses Moduls (keine Config, direkt im Code) ---
|
||||
(setq *export-filenames*
|
||||
@@ -196,7 +204,7 @@
|
||||
;; py-name = Python-Skript-Name (z.B. "export_csv.py")
|
||||
;; csv-name = Ergebnis-CSV-Name (z.B. "export.csv")
|
||||
(defun csv:run-export (label py-name csv-name / ss i ename fh out-pfad
|
||||
py-skript ergebnis-pfad cmd first-block count)
|
||||
py-skript ergebnis-pfad cmd first-block count out-dir)
|
||||
;; Vor dem Export: IDs aller Bloecke sicherstellen und Duplikate korrigieren
|
||||
(princ (strcat "\n[" label "] Pruefe und vergebe IDs..."))
|
||||
(ssg-id-check-all)
|
||||
@@ -215,8 +223,22 @@
|
||||
(setq count (sslength ss))
|
||||
(princ (strcat "\n[" label "] " (itoa count) " Bloecke gefunden."))
|
||||
|
||||
;; Ausgabeordner: DXFM_RESULTS, ausser *export-test-override* ist gesetzt
|
||||
;; (nur waehrend TEST_EXPORT_ALL, siehe tests/test_export_all.lsp).
|
||||
;; WICHTIG: Hier bewusst KEIN (setenv "DXFM_RESULTS" ...) verwenden!
|
||||
;; (setenv ...) schreibt in BricsCAD dauerhaft in die Profil-Registry
|
||||
;; und ueberlebt damit jeden Neustart - ein einziger Testlauf wuerde
|
||||
;; DXFM_RESULTS fuer alle zukuenftigen Sitzungen unwiderruflich auf den
|
||||
;; Testordner umbiegen. *export-test-override* ist eine reine
|
||||
;; Lisp-Variable (nur Prozess-/Sitzungsspeicher) und daher sicher.
|
||||
(setq out-dir (if *export-test-override*
|
||||
*export-test-override*
|
||||
(getenv "DXFM_RESULTS")))
|
||||
(if (not (vl-file-directory-p out-dir)) (vl-mkdir out-dir))
|
||||
(princ (strcat "\n[" label "] Ausgabeordner: " out-dir))
|
||||
|
||||
;; JSON-Datei zusammenbauen
|
||||
(setq out-pfad (strcat (getenv "DXFM_RESULTS") "/"
|
||||
(setq out-pfad (strcat out-dir "/"
|
||||
(export:filename "raw_json_datei")))
|
||||
(setq fh (open out-pfad "w"))
|
||||
(if (null fh)
|
||||
@@ -244,7 +266,7 @@
|
||||
(setq py-skript (strcat (getenv "DXFM_LIB") "/" py-name))
|
||||
(if (findfile py-skript)
|
||||
(progn
|
||||
(setq ergebnis-pfad (strcat (getenv "DXFM_RESULTS") "/" csv-name))
|
||||
(setq ergebnis-pfad (strcat out-dir "/" csv-name))
|
||||
(setq cmd (strcat "python \"" py-skript "\""
|
||||
" \"" out-pfad "\""
|
||||
" \"" (getenv "DXFM_DATA") "\""
|
||||
|
||||
@@ -122,11 +122,41 @@
|
||||
;; ============================================================
|
||||
(defun c:TEST_EXPORT_ALL (/ tests-out-dir dateien datei basis doc
|
||||
csv-name sivas-name csv-pfad sivas-pfad
|
||||
csv-ok sivas-ok results-list old-filenames)
|
||||
csv-ok sivas-ok results-list old-filenames
|
||||
ablauf-fehler)
|
||||
|
||||
(setq tests-out-dir (strcat (getenv "DXFMAKRO") "/tests/output"))
|
||||
(vl-mkdir tests-out-dir)
|
||||
(setenv "DXFM_RESULTS" tests-out-dir)
|
||||
|
||||
;; *export-test-override* (Lisp/export.lsp, csv:run-export) fuer die Dauer
|
||||
;; des Testlaufs setzen, damit c:EXPORTCSV/c:EXPORTSIVAS nach tests/output
|
||||
;; statt in den normalen Ergebnisordner schreiben.
|
||||
;; WICHTIG: Absichtlich KEIN (setenv "DXFM_RESULTS" ...)! In BricsCAD
|
||||
;; schreibt (setenv ...) dauerhaft in die Profil-Registry und ueberlebt
|
||||
;; damit jeden Neustart - ein einziger Testlauf wuerde DXFM_RESULTS fuer
|
||||
;; alle zukuenftigen Sitzungen unwiderruflich auf den Testordner umbiegen.
|
||||
;; *export-test-override* ist eine reine Lisp-Variable (nur Prozess-/
|
||||
;; Sitzungsspeicher) und wird per vl-catch-all-apply garantiert wieder
|
||||
;; auf nil gesetzt, auch bei einem Fehler/Abbruch im Testlauf.
|
||||
(setq *export-test-override* tests-out-dir)
|
||||
|
||||
(setq ablauf-fehler (vl-catch-all-apply 'ssg-test-export-all-ablauf
|
||||
(list tests-out-dir)))
|
||||
|
||||
(setq *export-test-override* nil)
|
||||
|
||||
(if (vl-catch-all-error-p ablauf-fehler)
|
||||
(princ (strcat "\n[TEST_EXPORT_ALL] FEHLER: "
|
||||
(vl-catch-all-error-message ablauf-fehler)))
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; --- Eigentlicher Ablauf von TEST_EXPORT_ALL, gekapselt fuer vl-catch-all-apply ---
|
||||
(defun ssg-test-export-all-ablauf (tests-out-dir
|
||||
/ dateien datei basis doc
|
||||
csv-name sivas-name csv-pfad sivas-pfad
|
||||
csv-ok sivas-ok results-list old-filenames)
|
||||
|
||||
(setq dateien (append
|
||||
(vl-directory-files tests-out-dir "*.dxf" 1)
|
||||
|
||||
Reference in New Issue
Block a user