;; ============================================================ ;; 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 :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)