1250864849
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
139 lines
6.2 KiB
Common Lisp
139 lines
6.2 KiB
Common Lisp
;; ============================================================
|
|
;; test_dematic_arvato.lsp - Nachbau des Abschnitts Flowpuffer/Kreisel der
|
|
;; Anlage Dematic/Arvato aus der Scanner-Vorlage.
|
|
;;
|
|
;; Datenquelle: tests/testdata/dematic_arvato.json, erzeugt mit
|
|
;; python lib/dxf_scan_components.py \
|
|
;; C:/develop/sps_skel/data/Dematic_arvato.dxf data \
|
|
;; tests/testdata/dematic_arvato.json --projekt Arvato \
|
|
;; --fenster -3000 159000 49000 193000
|
|
;;
|
|
;; Die Datei ist eine VORLAGE fuer den Nachbau, kein fertiger Testfall:
|
|
;; Hoehen fehlen (flaches 2D-Schema, alles auf Z=0), Seiten/Winkel einiger
|
|
;; Bloecke sind geraten (siehe "comment" je Eintrag).
|
|
;;
|
|
;; Eintragsarten (Schema von dxf_scan_components.py):
|
|
;; "function": "insert" ohne "block" -> Kreisel (hundm05:bau-kreisel ->
|
|
;; kreisel-insert-script; x/y = Einfuegepunkt
|
|
;; einen Radius vor der AN8-Radmitte, abstand =
|
|
;; Mittenabstand AN8-SP8)
|
|
;; "function": "insert" + "block" -> Einzelblock (hundm05:bau-sensor,
|
|
;; Fallback Separator_SP bei unbekanntem Block)
|
|
;; "typ": "gerade" -> waagrechter Foerderer Antrieb->Umlenkung -
|
|
;; dafuer gibt es noch keinen Bau-Pfad, wird
|
|
;; gemeldet und uebersprungen
|
|
;;
|
|
;; Keine eigene Bau-Logik: hundm05:bau-kreisel/-sensor aus
|
|
;; tests/test_hundm05.lsp wird mitgeladen (die Datei definiert nur Funktionen).
|
|
;;
|
|
;; Aufruf in BricsCAD:
|
|
;; (load (strcat (getenv "DXFMAKRO") "/tests/test_dematic_arvato.lsp"))
|
|
;; TEST_DEMATIC_ARVATO
|
|
;; ============================================================
|
|
|
|
(if (not (boundp '*dematic-arvato-records*)) (setq *dematic-arvato-records* nil))
|
|
|
|
;; Module und die Bau-Funktionen aus test_hundm05.lsp beim LADEN dieser Datei
|
|
;; holen, nicht erst in c:TEST_DEMATIC_ARVATO: in BricsCAD werden per load
|
|
;; definierte Funktionen erst nach Rueckkehr zum Top-Level sichtbar (siehe
|
|
;; tests/test_unit.scr).
|
|
(ssg-ensure "KreiselInsert")
|
|
(ssg-ensure "VarioFoerderer")
|
|
(ssg-ensure "SSG_LIB_Commands")
|
|
(if (null (car (atoms-family 1 '("HUNDM05:BAU-SENSOR"))))
|
|
(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")))
|
|
|
|
(defun dematic_arvato:datei ()
|
|
(strcat (getenv "DXFMAKRO") "/tests/testdata/dematic_arvato.json"))
|
|
|
|
;; Foerderer "gerade": noch kein Bau-Pfad - nur melden.
|
|
(defun dematic_arvato:gerade-melden (obj / tid rec)
|
|
(setq tid (ssg-val obj "test_id"))
|
|
(princ (strcat "\n [GERADE] " (if tid tid "?")
|
|
" uebersprungen - waagrechter Foerderer noch nicht unterstuetzt"))
|
|
(setq rec (vsp-rec-neu (if tid tid "(ohne id)")))
|
|
(setq rec (vsp-set rec "kind" "gerade"))
|
|
(vsp-set (vsp-set rec "status" "uebersprungen") "fehler_text"
|
|
"kein Bau-Pfad fuer typ gerade"))
|
|
|
|
(defun dematic_arvato:bau-eintrag (obj / kind res)
|
|
(cond
|
|
((and (= (ssg-val obj "function") "insert") (ssg-val obj "block"))
|
|
(setq kind "sensor")
|
|
(setq res (vl-catch-all-apply 'hundm05:bau-sensor (list obj))))
|
|
((= (ssg-val obj "function") "insert")
|
|
(setq kind "kreisel")
|
|
(setq res (vl-catch-all-apply 'hundm05:bau-kreisel (list obj))))
|
|
((= (ssg-val obj "typ") "gerade")
|
|
(setq kind "gerade")
|
|
(setq res (dematic_arvato:gerade-melden obj)))
|
|
(T
|
|
(setq kind "unbekannt")
|
|
(princ "\n WARNUNG: unbekannter Eintrag uebersprungen")
|
|
(setq res (vsp-set (vsp-rec-neu "(unbekannt)") "status" "uebersprungen"))))
|
|
(if (vl-catch-all-error-p res)
|
|
(progn
|
|
(princ (strcat "\n [" (strcase kind) "] Ausnahme: "
|
|
(vl-catch-all-error-message res)))
|
|
(vsp-set (vsp-set (vsp-set (vsp-rec-neu (cond ((ssg-val obj "id"))
|
|
((ssg-val obj "block"))
|
|
("?")))
|
|
"kind" kind) "status" "abbruch")
|
|
"fehler_text" (vl-catch-all-error-message res)))
|
|
res))
|
|
|
|
(defun c:TEST_DEMATIC_ARVATO ( / datei daten out zaehler st)
|
|
(setq datei (dematic_arvato:datei))
|
|
(princ "\n\n================================================================")
|
|
(princ "\n TEST_DEMATIC_ARVATO - Abschnitt Flowpuffer/Kreisel (Vorlage)")
|
|
(princ (strcat "\n " datei))
|
|
(princ "\n================================================================")
|
|
(cond
|
|
((null (car (atoms-family 1 '("VSP-REC-NEU"))))
|
|
(princ "\n[TEST_DEMATIC_ARVATO] FEHLER: vf_spec.lsp nicht geladen"
|
|
" (VarioFoerderer laden).")
|
|
(setq *dematic-arvato-records* nil))
|
|
((null (findfile datei))
|
|
(princ (strcat "\n[TEST_DEMATIC_ARVATO] FEHLER: " datei " nicht gefunden!"))
|
|
(setq *dematic-arvato-records* nil))
|
|
(T
|
|
(setq daten (ssg-json-laden datei))
|
|
(princ (strcat "\n " (itoa (length daten)) " Eintraege geladen"))
|
|
(ssg-start "TEST_DEMATIC_ARVATO"
|
|
'(("OSMODE") ("CECOLOR") ("ATTREQ") ("ATTDIA")))
|
|
(setvar "OSMODE" 0)
|
|
(setvar "ATTREQ" 0)
|
|
(setvar "ATTDIA" 0)
|
|
(setq out '())
|
|
(foreach obj daten
|
|
(setq out (cons (dematic_arvato:bau-eintrag obj) out)))
|
|
(ssg-end)
|
|
(setq *dematic-arvato-records* (reverse out))
|
|
;; Zusammenfassung je Status
|
|
(setq zaehler '())
|
|
(foreach r *dematic-arvato-records*
|
|
(setq st (cond ((ssg-val r "status")) ("?")))
|
|
(if (assoc st zaehler)
|
|
(setq zaehler (subst (cons st (1+ (cdr (assoc st zaehler))))
|
|
(assoc st zaehler) zaehler))
|
|
(setq zaehler (cons (cons st 1) zaehler))))
|
|
(princ "\n================================================================")
|
|
(foreach z (reverse zaehler)
|
|
(princ (strcat "\n " (car z) ": " (itoa (cdr z)))))
|
|
(princ "\n================================================================")
|
|
(command "_.ZOOM" "_E")))
|
|
(princ))
|
|
|
|
;; Ergebnis-Export (Konvention <name>:export-results fuer test_run_all.lsp)
|
|
(defun dematic_arvato:export-results (out-dir / pfad)
|
|
(if (null *dematic-arvato-records*)
|
|
(princ "\n Keine Dematic/Arvato-Ergebnisse vorhanden.")
|
|
(progn
|
|
(vl-mkdir out-dir)
|
|
(setq pfad (strcat out-dir "/dematic_arvato_results.json"))
|
|
(vsp-results-schreiben *dematic-arvato-records* pfad)))
|
|
(princ))
|
|
|
|
(princ "\nTEST_DEMATIC_ARVATO geladen. Aufruf: TEST_DEMATIC_ARVATO")
|
|
(princ)
|