[ADD] Erste Einbindung eines Menüs zum Konfigurieren und Einfügen von Gerüstkomponenten; TODOs: Anzahl der Gerüstkompnenten Variabel machen und für den Benutzer die Anzahl der Baugruppe sichtbar machen; Vorkonfigurierte Baugruppen anbieten; Einfachere Auswahl mit Checkbox oder Input (Anzahl)
This commit is contained in:
@@ -424,6 +424,134 @@
|
||||
)
|
||||
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; TESTS: ssg_core.lsp - rekursiver JSON-Parser + ssg-join
|
||||
;; ------------------------------------------------------------
|
||||
(defun tu-tests-json ( / _p _datei _daten _bg _var _anb)
|
||||
(princ "\n[ssg_core/json]")
|
||||
|
||||
;; ssg-join
|
||||
(tu-eq "ssg-join/leer" "" (ssg-join '() ","))
|
||||
(tu-eq "ssg-join/eins" "a" (ssg-join '("a") ","))
|
||||
(tu-eq "ssg-join/drei" "a,b,c" (ssg-join '("a" "b" "c") ","))
|
||||
(tu-eq "ssg-join/plus" "a + b" (ssg-join '("a" "b") " + "))
|
||||
|
||||
;; Skalare und flaches Objekt
|
||||
(tu-eq "json/objekt-flach" '(("a" . 1)) (ssg-json-parse "{\"a\": 1}"))
|
||||
(tu-eq "json/zwei-keys" '(("a" . 1) ("b" . 2))
|
||||
(ssg-json-parse "{\"a\": 1, \"b\": 2}"))
|
||||
(tu-eq "json/string" "hallo" (ssg-json-get (ssg-json-parse "{\"a\": \"hallo\"}") "a"))
|
||||
(tu-eq "json/int" 6000 (ssg-json-get (ssg-json-parse "{\"a\": 6000}") "a"))
|
||||
(tu-eqf "json/real" 1.5 (ssg-json-get (ssg-json-parse "{\"a\": 1.5}") "a"))
|
||||
(tu-eq "json/true" T (ssg-json-get (ssg-json-parse "{\"a\": true}") "a"))
|
||||
(tu-eq "json/false" nil (ssg-json-get (ssg-json-parse "{\"a\": false}") "a"))
|
||||
(tu-eq "json/null" nil (ssg-json-get (ssg-json-parse "{\"a\": null}") "a"))
|
||||
|
||||
;; Verschachtelung - genau das, was die alten Zeilen-Parser nicht koennen
|
||||
(tu-eq "json/objekt-verschachtelt" '(("a" ("b" . 2)))
|
||||
(ssg-json-parse "{\"a\": {\"b\": 2}}"))
|
||||
(tu-eq "json/array" '(("a" 1 2 3))
|
||||
(ssg-json-parse "{\"a\": [1, 2, 3]}"))
|
||||
(tu-eq "json/array-objekte" '(("a" (("b" . 1)) (("b" . 2))))
|
||||
(ssg-json-parse "{\"a\": [{\"b\": 1}, {\"b\": 2}]}"))
|
||||
(tu-eq "json/array-leer" '(("a")) (ssg-json-parse "{\"a\": []}"))
|
||||
|
||||
;; Mehrzeilig (alte Parser verlangen Arrays in EINER Zeile)
|
||||
(tu-eq "json/mehrzeilig" '(("a" "x" "y"))
|
||||
(ssg-json-parse "{\n \"a\": [\n \"x\",\n \"y\"\n ]\n}"))
|
||||
|
||||
;; Maskiertes Anfuehrungszeichen und Komma im String - beides kommt in den
|
||||
;; Geruest-Artikelbezeichnungen real vor ("ROHR R 1\" 33,7 x 2,6")
|
||||
(tu-eq "json/escape-quote" "R 1\" x"
|
||||
(ssg-json-get (ssg-json-parse "{\"a\": \"R 1\\\" x\"}") "a"))
|
||||
(tu-eq "json/komma-im-string" "33,7 x 2,6"
|
||||
(ssg-json-get (ssg-json-parse "{\"a\": \"33,7 x 2,6\"}") "a"))
|
||||
(tu-eq "json/escape-backslash" "a\\b"
|
||||
(ssg-json-get (ssg-json-parse "{\"a\": \"a\\\\b\"}") "a"))
|
||||
(tu-eq "json/escape-newline" (chr 10)
|
||||
(ssg-json-get (ssg-json-parse "{\"a\": \"\\n\"}") "a"))
|
||||
|
||||
;; Echte Datendatei: der eigentliche Praxisfall
|
||||
(setq _datei (strcat (getenv "DXFMAKRO") "/data/json/geruest.json"))
|
||||
(if (findfile _datei)
|
||||
(progn
|
||||
(setq _daten (ssg-json-laden _datei))
|
||||
(tu-eq "json/geruest-baugruppen" 4 (length _daten))
|
||||
;; Baugruppe ueber das ASCII-Feld "id" finden (aeusserer Schluessel
|
||||
;; traegt Umlaute bzw. Anfuehrungszeichen)
|
||||
(setq _bg nil)
|
||||
(foreach _e _daten
|
||||
(if (and (null _bg) (= (ssg-json-get (cdr _e) "id") "Rohrabhaenger"))
|
||||
(setq _bg (cdr _e))))
|
||||
(tu-eq "json/geruest-id-gefunden" T (if _bg T nil))
|
||||
(if _bg
|
||||
(progn
|
||||
(setq _var (ssg-json-get _bg "geometrie_varianten"))
|
||||
(setq _anb (ssg-json-get _bg "anbaugruppen"))
|
||||
(tu-eq "json/geruest-varianten" 3 (length _var))
|
||||
(tu-eq "json/geruest-teileart" "Geruest Rohrabhaenger"
|
||||
(ssg-json-get _bg "teileart"))
|
||||
(tu-eq "json/geruest-dummy" "Rohrabhaenger_dummy.dwg"
|
||||
(ssg-json-get _bg "dummy"))
|
||||
;; Sivas-ID als Zahl geparst, Laengengrenze aus dem attribute-Block
|
||||
(tu-eq "json/geruest-sivas" 821006026
|
||||
(ssg-json-get (car (ssg-json-get (car _var) "teile")) "sivas_id"))
|
||||
(tu-eq "json/geruest-max" 6000
|
||||
(ssg-json-get (ssg-json-get (ssg-json-get _bg "attribute") "Laenge") "max"))
|
||||
)
|
||||
)
|
||||
)
|
||||
(tu-record nil "json/geruest-datei" (strcat "nicht gefunden: " _datei))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; TESTS: GeruestInsert.lsp - reine Hilfsfunktionen
|
||||
;; ------------------------------------------------------------
|
||||
(defun tu-tests-geruest ( / _eintrag _gruppe)
|
||||
(princ "\n[GeruestInsert]")
|
||||
(if (and (null (atoms-family 1 '("GERUEST-ARTIKELNUMMERN")))
|
||||
(atoms-family 1 '("SSG-ENSURE")))
|
||||
(ssg-ensure "GeruestInsert")
|
||||
)
|
||||
(if (null (atoms-family 1 '("GERUEST-ARTIKELNUMMERN")))
|
||||
(tu-record nil "geruest/modul" "GeruestInsert.lsp nicht geladen")
|
||||
(progn
|
||||
;; Indizes aus get_tile bei multiple_select
|
||||
(tu-eq "geruest-indizes/leer" '() (geruest-indizes ""))
|
||||
(tu-eq "geruest-indizes/eins" '(0) (geruest-indizes "0"))
|
||||
(tu-eq "geruest-indizes/drei" '(0 3 5) (geruest-indizes "0 3 5"))
|
||||
|
||||
(tu-eq "geruest-id-string/int" "821006026" (geruest-id-string 821006026))
|
||||
(tu-eq "geruest-id-string/str" "0_B10071" (geruest-id-string "0_B10071"))
|
||||
(tu-eq "geruest-id-string/nil" nil (geruest-id-string nil))
|
||||
|
||||
;; Einzelteil mit menge 2 -> Artikelnummer zweimal (ARTINR-Regel)
|
||||
(setq _eintrag (ssg-json-parse
|
||||
"{\"artikel\": \"X\", \"sivas_id\": 825002019, \"menge\": 2}"))
|
||||
(tu-eq "geruest-artnr/menge2" '("825002019" "825002019")
|
||||
(geruest-artikelnummern _eintrag))
|
||||
(tu-eq "geruest-name/artikel" "X" (geruest-eintrag-name _eintrag))
|
||||
|
||||
;; Benannte Gruppe -> teile rekursiv aufloesen, Mengen beachten
|
||||
(setq _gruppe (ssg-json-parse
|
||||
(strcat "{\"name\": \"Schraubenset\", \"teile\": ["
|
||||
"{\"artikel\": \"A\", \"sivas_id\": 111, \"menge\": 1},"
|
||||
"{\"artikel\": \"B\", \"sivas_id\": 222, \"menge\": 2}]}")))
|
||||
(tu-eq "geruest-artnr/gruppe" '("111" "222" "222")
|
||||
(geruest-artikelnummern _gruppe))
|
||||
(tu-eq "geruest-name/gruppe" "Schraubenset" (geruest-eintrag-name _gruppe))
|
||||
|
||||
;; Fehlendes menge-Feld -> 1
|
||||
(tu-eq "geruest-artnr/ohne-menge" '("333")
|
||||
(geruest-artikelnummern
|
||||
(ssg-json-parse "{\"artikel\": \"C\", \"sivas_id\": 333}")))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; REPORT SCHREIBEN
|
||||
;; ------------------------------------------------------------
|
||||
@@ -467,6 +595,8 @@
|
||||
(tu-tests-omni)
|
||||
(tu-tests-kreisel)
|
||||
(tu-tests-sepliste)
|
||||
(tu-tests-json)
|
||||
(tu-tests-geruest)
|
||||
|
||||
(princ "\n\n----------------------------------------------------------------")
|
||||
(princ (strcat "\n Gesamt: " (itoa (+ *tu-pass* *tu-fail*))
|
||||
|
||||
Reference in New Issue
Block a user