c01dad28f3
test_ks.lsp in test_kseinaus.lsp umbenannt und alle Testroutinen (foerderer, kreisel, omniflo) sowie run_tests.bat und README entsprechend angepasst.
262 lines
8.9 KiB
Common Lisp
262 lines
8.9 KiB
Common Lisp
;; ============================================================
|
|
;; test_kseinaus.lsp - Automatischer Integrationstest fuer KS_EIN/KS_AUS
|
|
;;
|
|
;; Fuegt alle Vario-Bloecke in 3 Gruppen ein, jeweils 2 Reihen:
|
|
;; Gruppe 1: Stationaere Elemente (AUS, EIN, Separator, Umlenk, Motor)
|
|
;; Gruppe 2: Alle Boegen aufwaerts (in Z verschoben)
|
|
;; Gruppe 3: Alle Boegen abwaerts (in Z verschoben)
|
|
;;
|
|
;; Pro Gruppe:
|
|
;; Reihe A: nach KS_EIN ausgerichtet
|
|
;; Reihe B: nach KS_AUS ausgerichtet
|
|
;; Luecke von 400mm zwischen den Reihen
|
|
;;
|
|
;; Speichert:
|
|
;; - tests/output/kseinaus_results.json (Ergebnisse)
|
|
;; - tests/output/kseinaus_tests.dxf (Zeichnung)
|
|
;;
|
|
;; Voraussetzungen:
|
|
;; - SSG_LIB geladen (VarioFoerderer.lsp, ssg_core.lsp)
|
|
;; - Umgebungsvariable DXFMAKRO gesetzt
|
|
;;
|
|
;; Aufruf in BricsCAD:
|
|
;; (load (strcat (getenv "DXFMAKRO") "/tests/test_kseinaus.lsp"))
|
|
;; TEST_KSEINAUS
|
|
;; ============================================================
|
|
|
|
|
|
;; --- Ergebnis eines Testfalls als JSON-String erzeugen ---
|
|
(defun kseinaus:test-result-json (test-id block-name gruppe ks-type status /
|
|
json)
|
|
(setq json (strcat " {\n"
|
|
" \"test_id\": \"" test-id "\",\n"
|
|
" \"block_name\": \"" (if block-name block-name "") "\",\n"
|
|
" \"gruppe\": \"" gruppe "\",\n"
|
|
" \"ks_type\": \"" ks-type "\",\n"
|
|
" \"status\": \"" status "\"\n"
|
|
" }"))
|
|
json
|
|
)
|
|
|
|
|
|
;; --- Eine Reihe Bloecke einfuegen und Ergebnisse sammeln ---
|
|
;; Rueckgabe: (naechste-y-pos . results-list)
|
|
(defun kseinaus:test-reihe (namen x-start y-start z-offset y-abstand y-luecke
|
|
gruppe results-in /
|
|
bname block-obj ks-data ks-ein ks-aus
|
|
insert-pt offset-vec y-pos idx
|
|
test-id results-out)
|
|
|
|
(setq results-out results-in)
|
|
|
|
;; --- Reihe A: nach KS_EIN ---
|
|
(princ "\n Reihe KS_EIN:")
|
|
(setq y-pos y-start)
|
|
(setq idx 0)
|
|
|
|
(foreach bname namen
|
|
(setq idx (1+ idx))
|
|
(setq test-id (strcat gruppe "_KS_EIN_" (itoa idx)))
|
|
(setq insert-pt (list x-start y-pos z-offset))
|
|
(setq block-obj (vla-InsertBlock modelspace
|
|
(vlax-3D-point insert-pt)
|
|
bname 1.0 1.0 1.0 0))
|
|
(setq ks-data (extract-ks-from-block block-obj))
|
|
(setq ks-ein (cadr (assoc "KS_EIN" ks-data)))
|
|
|
|
(if ks-ein
|
|
(progn
|
|
(setq offset-vec (list (- x-start (car (car ks-ein)))
|
|
(- y-pos (cadr (car ks-ein)))
|
|
(- z-offset (caddr (car ks-ein)))))
|
|
(vla-Move block-obj
|
|
(vlax-3D-point '(0 0 0))
|
|
(vlax-3D-point offset-vec))
|
|
(princ (strcat "\n " (itoa idx) ". " bname " OK"))
|
|
(setq results-out (cons
|
|
(kseinaus:test-result-json test-id bname gruppe "KS_EIN" "OK")
|
|
results-out))
|
|
)
|
|
(progn
|
|
(princ (strcat "\n " (itoa idx) ". " bname " WARNUNG: KS_EIN fehlt!"))
|
|
(setq results-out (cons
|
|
(kseinaus:test-result-json test-id bname gruppe "KS_EIN" "KS_FEHLT")
|
|
results-out))
|
|
)
|
|
)
|
|
(setq y-pos (- y-pos y-abstand))
|
|
)
|
|
|
|
;; --- Luecke ---
|
|
(setq y-pos (- y-pos y-luecke))
|
|
|
|
;; --- Reihe B: nach KS_AUS ---
|
|
(princ "\n Reihe KS_AUS:")
|
|
(setq idx 0)
|
|
|
|
(foreach bname namen
|
|
(setq idx (1+ idx))
|
|
(setq test-id (strcat gruppe "_KS_AUS_" (itoa idx)))
|
|
(setq insert-pt (list x-start y-pos z-offset))
|
|
(setq block-obj (vla-InsertBlock modelspace
|
|
(vlax-3D-point insert-pt)
|
|
bname 1.0 1.0 1.0 0))
|
|
(setq ks-data (extract-ks-from-block block-obj))
|
|
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
|
|
|
|
(if ks-aus
|
|
(progn
|
|
(setq offset-vec (list (- x-start (car (car ks-aus)))
|
|
(- y-pos (cadr (car ks-aus)))
|
|
(- z-offset (caddr (car ks-aus)))))
|
|
(vla-Move block-obj
|
|
(vlax-3D-point '(0 0 0))
|
|
(vlax-3D-point offset-vec))
|
|
(princ (strcat "\n " (itoa idx) ". " bname " OK"))
|
|
(setq results-out (cons
|
|
(kseinaus:test-result-json test-id bname gruppe "KS_AUS" "OK")
|
|
results-out))
|
|
)
|
|
(progn
|
|
(princ (strcat "\n " (itoa idx) ". " bname " WARNUNG: KS_AUS fehlt!"))
|
|
(setq results-out (cons
|
|
(kseinaus:test-result-json test-id bname gruppe "KS_AUS" "KS_FEHLT")
|
|
results-out))
|
|
)
|
|
)
|
|
(setq y-pos (- y-pos y-abstand))
|
|
)
|
|
|
|
;; Rueckgabe: (naechste-y-pos . results-list)
|
|
(cons y-pos results-out)
|
|
)
|
|
|
|
|
|
;; --- JSON-Export der KS-Testergebnisse ---
|
|
(defun kseinaus:export-results (tests-out-dir / out-json f first)
|
|
(if (null *kseinaus-test-results*)
|
|
(princ "\n Keine KS-Ergebnisse vorhanden.")
|
|
(progn
|
|
(vl-mkdir tests-out-dir)
|
|
(setq out-json (strcat tests-out-dir "/kseinaus_results.json"))
|
|
(setq f (open out-json "w"))
|
|
(if f
|
|
(progn
|
|
(write-line "[" f)
|
|
(setq first T)
|
|
(foreach r *kseinaus-test-results*
|
|
(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!"))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
;; ============================================================
|
|
;; C:TEST_KSEINAUS - Hauptbefehl
|
|
;; ============================================================
|
|
(defun c:TEST_KSEINAUS ( / stationen boegen-auf-liste boegen-ab-liste
|
|
bname y-pos y-abstand y-luecke z-bogen
|
|
results-list reihe-result
|
|
anz-ok anz-fehlt)
|
|
|
|
;; Bibliothek initialisieren
|
|
(if (not *lib-initialized*)
|
|
(init-bibliothek)
|
|
)
|
|
|
|
(ssg-start "TEST_KSEINAUS" '(("OSMODE") ("CECOLOR") ("ATTREQ") ("ATTDIA")))
|
|
(setvar "OSMODE" 0)
|
|
(setvar "ATTREQ" 0)
|
|
(setvar "ATTDIA" 0)
|
|
|
|
(setq y-abstand 200)
|
|
(setq y-luecke 400)
|
|
(setq z-bogen 2500)
|
|
(setq results-list '())
|
|
|
|
;; Gruppe 1: Stationaere Elemente
|
|
(setq stationen (list
|
|
"_3D_AS_90_links"
|
|
"Staustrecke_Separator_SP_300_mm"
|
|
"Vario_Umlenkstation_500mm"
|
|
"Vario_Motorstation_500mm"
|
|
"_3D_ES_90_links"
|
|
))
|
|
|
|
;; Gruppe 2+3: Boegen sammeln
|
|
(setq boegen-auf-liste '())
|
|
(setq boegen-ab-liste '())
|
|
(foreach w '(3 6 9 12 15 18 21 27 33 39 45 51)
|
|
(setq bname (strcat "Vario_Bogen_auf_" (itoa w) grad-zeichen))
|
|
(if (tblsearch "BLOCK" bname)
|
|
(setq boegen-auf-liste (append boegen-auf-liste (list bname)))
|
|
)
|
|
(setq bname (strcat "Vario_Bogen_ab_" (itoa w) grad-zeichen))
|
|
(if (tblsearch "BLOCK" bname)
|
|
(setq boegen-ab-liste (append boegen-ab-liste (list bname)))
|
|
)
|
|
)
|
|
|
|
(princ "\n================================================================")
|
|
(princ "\n TEST_KSEINAUS - KS-Ausrichtungstest")
|
|
(princ (strcat "\n Stationen: " (itoa (length stationen))))
|
|
(princ (strcat "\n Boegen auf: " (itoa (length boegen-auf-liste))))
|
|
(princ (strcat "\n Boegen ab: " (itoa (length boegen-ab-liste))))
|
|
(princ (strcat "\n Z-Offset Boegen: " (rtos z-bogen 2 0) " mm"))
|
|
(princ "\n================================================================")
|
|
|
|
;; Gruppe 1: Stationaere Elemente bei X=0, Z=0
|
|
(princ "\n\n GRUPPE 1: Stationaere Elemente (Z=0)")
|
|
(setq reihe-result (kseinaus:test-reihe stationen 0 0 0 y-abstand y-luecke
|
|
"Stationen" results-list))
|
|
(setq y-pos (car reihe-result))
|
|
(setq results-list (cdr reihe-result))
|
|
|
|
;; Gruppe 2: Boegen aufwaerts bei X=3000, Z=z-bogen
|
|
(princ (strcat "\n\n GRUPPE 2: Boegen aufwaerts (Z=" (rtos z-bogen 2 0) ")"))
|
|
(setq reihe-result (kseinaus:test-reihe boegen-auf-liste 3000 0 z-bogen y-abstand y-luecke
|
|
"Boegen_Auf" results-list))
|
|
(setq y-pos (car reihe-result))
|
|
(setq results-list (cdr reihe-result))
|
|
|
|
;; Gruppe 3: Boegen abwaerts bei X=6000, Z=z-bogen
|
|
(princ (strcat "\n\n GRUPPE 3: Boegen abwaerts (Z=" (rtos z-bogen 2 0) ")"))
|
|
(setq reihe-result (kseinaus:test-reihe boegen-ab-liste 6000 0 z-bogen y-abstand y-luecke
|
|
"Boegen_Ab" results-list))
|
|
(setq y-pos (car reihe-result))
|
|
(setq results-list (cdr reihe-result))
|
|
|
|
;; Zusammenfassung
|
|
(setq anz-ok 0)
|
|
(setq anz-fehlt 0)
|
|
(foreach r results-list
|
|
(if (vl-string-search "\"OK\"" r)
|
|
(setq anz-ok (1+ anz-ok))
|
|
(setq anz-fehlt (1+ anz-fehlt))
|
|
)
|
|
)
|
|
|
|
(princ "\n================================================================")
|
|
(princ (strcat "\n Ergebnis: " (itoa anz-ok) " OK, "
|
|
(itoa anz-fehlt) " KS fehlt"))
|
|
(princ "\n================================================================")
|
|
|
|
;; Ergebnisse in globaler Variable speichern
|
|
(setq *kseinaus-test-results* (reverse results-list))
|
|
|
|
(ssg-end)
|
|
(princ "\n================================================================")
|
|
(princ "\n TEST_KSEINAUS abgeschlossen.")
|
|
(princ "\n================================================================")
|
|
(princ)
|
|
)
|