222 lines
7.9 KiB
Common Lisp
222 lines
7.9 KiB
Common Lisp
;; ============================================================
|
|
;; test_foerderer.lsp - Automatischer Integrationstest fuer VarioFoerderer
|
|
;;
|
|
;; Erzeugt 12 Variofoerderer (6x Auf, 6x Ab) mit deltaL=7000
|
|
;; und verschiedenen Hoehenstufen. Speichert:
|
|
;; - tests/output/foerderer_results.json (Ergebnisse)
|
|
;; - tests/output/foerderer_tests.dxf (Zeichnung)
|
|
;;
|
|
;; Voraussetzungen:
|
|
;; - SSG_LIB geladen (VarioFoerderer.lsp, ssg_core.lsp)
|
|
;; - Umgebungsvariable DXFMAKRO gesetzt
|
|
;;
|
|
;; Aufruf in BricsCAD:
|
|
;; (load (strcat (getenv "DXFMAKRO") "/tests/test_foerderer.lsp"))
|
|
;; TEST_FOERDERER
|
|
;; ============================================================
|
|
|
|
|
|
;; --- Ergebnis eines Testfalls als JSON-String erzeugen ---
|
|
(defun foerderer:test-result-json (test-id richtung deltaL deltaH status
|
|
winkel L_GF L_VF /
|
|
json)
|
|
(setq json (strcat " {\n"
|
|
" \"test_id\": \"" test-id "\",\n"
|
|
" \"richtung\": \"" richtung "\",\n"
|
|
" \"deltaL\": " (rtos deltaL 2 0) ",\n"
|
|
" \"deltaH\": " (rtos deltaH 2 0) ",\n"
|
|
" \"status\": \"" status "\""))
|
|
|
|
(if winkel
|
|
(setq json (strcat json ",\n"
|
|
" \"winkel\": " (itoa winkel) ",\n"
|
|
" \"L_GF\": " (rtos L_GF 2 1) ",\n"
|
|
" \"L_VF\": " (rtos L_VF 2 1)))
|
|
)
|
|
|
|
(setq json (strcat json "\n }"))
|
|
json
|
|
)
|
|
|
|
|
|
;; ============================================================
|
|
;; C:TEST_FOERDERER - Hauptbefehl
|
|
;; ============================================================
|
|
(defun c:TEST_FOERDERER ( / deltaL deltaH richtung ergebnis
|
|
best-winkel L_GF L_VF
|
|
y-offset hoehen-liste idx
|
|
anz-gebaut anz-nicht-gebaut
|
|
results-list result-json first
|
|
tests-out-dir out-json out-dxf f
|
|
test-id)
|
|
|
|
;; Bibliothek initialisieren (laedt Block-Library und extrahiert Masse)
|
|
(if (not *lib-initialized*)
|
|
(init-bibliothek)
|
|
)
|
|
|
|
(ssg-start "TEST_FOERDERER" '(("OSMODE") ("CECOLOR") ("ATTREQ") ("ATTDIA")))
|
|
(setvar "OSMODE" 0)
|
|
(setvar "ATTREQ" 0)
|
|
(setvar "ATTDIA" 0)
|
|
|
|
(setq deltaL 7000)
|
|
(setq hoehen-liste '(0 1000 2000 3000 4000 5000))
|
|
(setq y-offset 0)
|
|
(setq idx 0)
|
|
(setq results-list '())
|
|
(setq anz-gebaut 0)
|
|
(setq anz-nicht-gebaut 0)
|
|
|
|
(princ "\n")
|
|
(princ "\n================================================================")
|
|
(princ "\n TEST_FOERDERER - Variofoerderer Integrationstest")
|
|
(princ "\n================================================================")
|
|
(princ (strcat "\n Distanz dL = " (rtos deltaL 2 0) " mm"))
|
|
(princ "\n Hoehenstufen: 0, 1000, 2000, 3000, 4000, 5000 mm")
|
|
(princ "\n Richtungen: Auf + Ab")
|
|
(princ "\n================================================================")
|
|
|
|
;; ==========================================================
|
|
;; TEIL 1: Aufwaerts-Tests (6 Foerderer)
|
|
;; ==========================================================
|
|
(foreach deltaH hoehen-liste
|
|
(setq idx (1+ idx))
|
|
(setq richtung "Auf")
|
|
(setq test-id (strcat "VF_Auf_" (rtos deltaH 2 0)))
|
|
|
|
(setq ergebnis (berechne-alle-winkel deltaL deltaH richtung))
|
|
(setq best-winkel (car ergebnis))
|
|
(setq L_GF (cadr ergebnis))
|
|
(setq L_VF (caddr ergebnis))
|
|
|
|
(if (and best-winkel L_GF L_VF (> L_GF 0) (> L_VF 0))
|
|
(progn
|
|
(setq anz-gebaut (1+ anz-gebaut))
|
|
(princ (strcat "\n " (itoa idx) ". " test-id " -> GEBAUT "
|
|
(itoa best-winkel) " Grad L_GF=" (rtos L_GF 2 1)
|
|
" L_VF=" (rtos L_VF 2 1)))
|
|
|
|
(foerderanlage-einfuegen deltaL deltaH richtung best-winkel
|
|
(/ L_GF 2.0) (/ L_GF 2.0) L_VF
|
|
(list 0 y-offset 0))
|
|
|
|
(setq results-list (cons
|
|
(foerderer:test-result-json test-id richtung deltaL deltaH
|
|
"GEBAUT" best-winkel L_GF L_VF)
|
|
results-list))
|
|
)
|
|
(progn
|
|
(setq anz-nicht-gebaut (1+ anz-nicht-gebaut))
|
|
(princ (strcat "\n " (itoa idx) ". " test-id " -> NICHT_GEBAUT"))
|
|
|
|
(setq results-list (cons
|
|
(foerderer:test-result-json test-id richtung deltaL deltaH
|
|
"NICHT_GEBAUT" nil nil nil)
|
|
results-list))
|
|
)
|
|
)
|
|
(setq y-offset (- y-offset 200))
|
|
)
|
|
|
|
;; ==========================================================
|
|
;; TEIL 2: Abwaerts-Tests (6 Foerderer)
|
|
;; ==========================================================
|
|
(foreach deltaH hoehen-liste
|
|
(setq idx (1+ idx))
|
|
(setq richtung "Ab")
|
|
(setq test-id (strcat "VF_Ab_" (rtos deltaH 2 0)))
|
|
|
|
(if (< deltaH 1)
|
|
(progn
|
|
(setq anz-nicht-gebaut (1+ anz-nicht-gebaut))
|
|
(princ (strcat "\n " (itoa idx) ". " test-id " -> GEOMETRISCH_UNMOEGLICH"))
|
|
|
|
(setq results-list (cons
|
|
(foerderer:test-result-json test-id richtung deltaL deltaH
|
|
"GEOMETRISCH_UNMOEGLICH" nil nil nil)
|
|
results-list))
|
|
)
|
|
(progn
|
|
(setq ergebnis (berechne-alle-winkel deltaL deltaH richtung))
|
|
(setq best-winkel (car ergebnis))
|
|
(setq L_GF (cadr ergebnis))
|
|
(setq L_VF (caddr ergebnis))
|
|
|
|
(if (and best-winkel L_GF L_VF (> L_GF 0) (> L_VF 0))
|
|
(progn
|
|
(setq anz-gebaut (1+ anz-gebaut))
|
|
(princ (strcat "\n " (itoa idx) ". " test-id " -> GEBAUT "
|
|
(itoa best-winkel) " Grad L_GF=" (rtos L_GF 2 1)
|
|
" L_VF=" (rtos L_VF 2 1)))
|
|
|
|
(foerderanlage-einfuegen deltaL deltaH richtung best-winkel
|
|
(/ L_GF 2.0) (/ L_GF 2.0) L_VF
|
|
(list 0 y-offset 0))
|
|
|
|
(setq results-list (cons
|
|
(foerderer:test-result-json test-id richtung deltaL deltaH
|
|
"GEBAUT" best-winkel L_GF L_VF)
|
|
results-list))
|
|
)
|
|
(progn
|
|
(setq anz-nicht-gebaut (1+ anz-nicht-gebaut))
|
|
(princ (strcat "\n " (itoa idx) ". " test-id " -> NICHT_GEBAUT"))
|
|
|
|
(setq results-list (cons
|
|
(foerderer:test-result-json test-id richtung deltaL deltaH
|
|
"NICHT_GEBAUT" nil nil nil)
|
|
results-list))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(setq y-offset (- y-offset 200))
|
|
)
|
|
|
|
;; ==========================================================
|
|
;; Zusammenfassung
|
|
;; ==========================================================
|
|
(princ "\n================================================================")
|
|
(princ (strcat "\n Ergebnis: " (itoa anz-gebaut) " GEBAUT, "
|
|
(itoa anz-nicht-gebaut) " NICHT_GEBAUT"))
|
|
(princ "\n================================================================")
|
|
|
|
;; ==========================================================
|
|
;; Ergebnisse speichern
|
|
;; ==========================================================
|
|
(setq tests-out-dir (strcat (getenv "DXFMAKRO") "/tests/output"))
|
|
(vl-mkdir tests-out-dir)
|
|
|
|
;; JSON schreiben
|
|
(setq out-json (strcat tests-out-dir "/foerderer_results.json"))
|
|
(setq f (open out-json "w"))
|
|
(if f
|
|
(progn
|
|
(write-line "[" f)
|
|
(setq results-list (reverse results-list))
|
|
(setq first T)
|
|
(foreach r results-list
|
|
(if (not first) (write-line "," f))
|
|
(write-line r f)
|
|
(setq first nil)
|
|
)
|
|
(write-line "]" f)
|
|
(close f)
|
|
(princ (strcat "\n Ergebnisse: " out-json))
|
|
)
|
|
(princ (strcat "\n FEHLER: Kann " out-json " nicht schreiben!"))
|
|
)
|
|
|
|
;; DXF speichern
|
|
(setq out-dxf (strcat tests-out-dir "/foerderer_tests.dxf"))
|
|
(command "_.SAVEAS" "DXF" out-dxf)
|
|
(princ (strcat "\n DXF gespeichert: " out-dxf))
|
|
|
|
(ssg-end)
|
|
(princ "\n================================================================")
|
|
(princ "\n TEST_FOERDERER abgeschlossen.")
|
|
(princ "\n================================================================")
|
|
(princ)
|
|
)
|