[ADD] Gerüstoptionen werden nun mit dem Befehl GERUEST in Bricscad aufgerufen; Über ein Dropdown in den Oberflächen kann zwischen verschiedenen Arten (Säulen, Abhänger,...) umgeschaltet werden, dann erscheint ein neues Menü; Zusammenstellung der Anbauteile über die Oberfläche mit Anzahl und Checkbox; Speichern von konfigurierten Zusammenstellungen noch fehlerhaft
This commit is contained in:
+138
-7
@@ -471,12 +471,27 @@
|
||||
(tu-eq "json/escape-newline" (chr 10)
|
||||
(ssg-json-get (ssg-json-parse "{\"a\": \"\\n\"}") "a"))
|
||||
|
||||
;; ssg-json-escape: Gegenstueck zum Parser
|
||||
(tu-eq "json-escape/quote" "a\\\"b" (ssg-json-escape "a\"b"))
|
||||
(tu-eq "json-escape/backslash" "a\\\\b" (ssg-json-escape "a\\b"))
|
||||
(tu-eq "json-escape/newline" "a\\nb" (ssg-json-escape (strcat "a" (chr 10) "b")))
|
||||
(tu-eq "json-escape/leer" "" (ssg-json-escape nil))
|
||||
;; Rundlauf: maskieren -> parsen ergibt den Originaltext zurueck
|
||||
(tu-eq "json-escape/rundlauf" "ROHRKLAMMER 1\" KPL. VERTIKAL"
|
||||
(ssg-json-get
|
||||
(ssg-json-parse
|
||||
(strcat "{\"a\": \""
|
||||
(ssg-json-escape "ROHRKLAMMER 1\" KPL. VERTIKAL") "\"}"))
|
||||
"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))
|
||||
;; Drei Bereiche: Rohrabhaenger, Saeulen (1 und 2 Zoll zusammengefuehrt),
|
||||
;; Wandbefestigung
|
||||
(tu-eq "json/geruest-baugruppen" 3 (length _daten))
|
||||
;; Baugruppe ueber das ASCII-Feld "id" finden (aeusserer Schluessel
|
||||
;; traegt Umlaute bzw. Anfuehrungszeichen)
|
||||
(setq _bg nil)
|
||||
@@ -509,7 +524,8 @@
|
||||
;; ------------------------------------------------------------
|
||||
;; TESTS: GeruestInsert.lsp - reine Hilfsfunktionen
|
||||
;; ------------------------------------------------------------
|
||||
(defun tu-tests-geruest ( / _eintrag _gruppe)
|
||||
(defun tu-tests-geruest ( / _eintrag _gruppe _teile _konfig _rec _pfad _f
|
||||
_zurueck _bgtest _saeulen)
|
||||
(princ "\n[GeruestInsert]")
|
||||
(if (and (null (atoms-family 1 '("GERUEST-ARTIKELNUMMERN")))
|
||||
(atoms-family 1 '("SSG-ENSURE")))
|
||||
@@ -518,11 +534,6 @@
|
||||
(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))
|
||||
@@ -547,6 +558,126 @@
|
||||
(tu-eq "geruest-artnr/ohne-menge" '("333")
|
||||
(geruest-artikelnummern
|
||||
(ssg-json-parse "{\"artikel\": \"C\", \"sivas_id\": 333}")))
|
||||
|
||||
;; --- Mengenfeld ---
|
||||
(tu-eq "geruest-zahl-p/ziffern" T (geruest-zahl-p "12"))
|
||||
(tu-eq "geruest-zahl-p/text" nil (geruest-zahl-p "1a"))
|
||||
(tu-eq "geruest-zahl-p/leer" nil (geruest-zahl-p ""))
|
||||
;; Leeres Feld uebernimmt die JSON-Vorgabe, ungueltiges liefert nil
|
||||
(tu-eq "geruest-menge-wert/leer" 2 (geruest-menge-wert "" 2))
|
||||
(tu-eq "geruest-menge-wert/zahl" 5 (geruest-menge-wert "5" 2))
|
||||
(tu-eq "geruest-menge-wert/null" nil (geruest-menge-wert "0" 2))
|
||||
(tu-eq "geruest-menge-wert/text" nil (geruest-menge-wert "abc" 2))
|
||||
(tu-eq "geruest-menge-wert/negativ" nil (geruest-menge-wert "-3" 2))
|
||||
|
||||
;; --- Stueckzahl ersetzt die JSON-Menge (Einzelteil) ---
|
||||
(tu-eq "geruest-artnr-n/einzelteil" '("825002019" "825002019" "825002019")
|
||||
(geruest-artikelnummern-n _eintrag 3))
|
||||
;; --- Gruppe: ganzes Set n-mal, Mengen INNERHALB bleiben erhalten ---
|
||||
(tu-eq "geruest-artnr-n/gruppe" '("111" "222" "222" "111" "222" "222")
|
||||
(geruest-artikelnummern-n _gruppe 2))
|
||||
|
||||
;; --- DCL-Label: Anfuehrungszeichen wuerde die Datei zerstoeren ---
|
||||
(tu-eq "geruest-dcl-label/quote" "ROHRKLAMMER 1'' KPL. VERTIKAL"
|
||||
(geruest-dcl-label "ROHRKLAMMER 1\" KPL. VERTIKAL"))
|
||||
(tu-eq "geruest-dcl-label/ohne" "WINKEL 60X60X6X60"
|
||||
(geruest-dcl-label "WINKEL 60X60X6X60"))
|
||||
|
||||
;; --- Hilfslisten ---
|
||||
(tu-eq "geruest-nil-liste" '(nil nil nil) (geruest-nil-liste 3))
|
||||
(tu-eq "geruest-liste-setzen" '(nil 7 nil)
|
||||
(geruest-liste-setzen (geruest-nil-liste 3) 1 7))
|
||||
(tu-eq "geruest-alist-setzen/neu" '(("a" . 1))
|
||||
(geruest-alist-setzen nil "a" 1))
|
||||
(tu-eq "geruest-alist-setzen/ersetzt" '(("a" . 2))
|
||||
(geruest-alist-setzen '(("a" . 1)) "a" 2))
|
||||
(tu-eq "geruest-zahl-string/int" "2000" (geruest-zahl-string 2000))
|
||||
(tu-eq "geruest-zahl-string/leer" "" (geruest-zahl-string nil))
|
||||
|
||||
;; --- Konfiguration auf Anbauteile abbilden ---
|
||||
(setq _teile (list _eintrag _gruppe))
|
||||
(tu-eq "geruest-name-index/treffer" 1
|
||||
(geruest-name-index "Schraubenset" _teile))
|
||||
(tu-eq "geruest-name-index/fehlt" nil
|
||||
(geruest-name-index "gibt es nicht" _teile))
|
||||
;; Bekanntes Teil wird uebernommen, unbekanntes uebersprungen (nicht
|
||||
;; die ganze Konfiguration verworfen)
|
||||
(setq _konfig (ssg-json-parse
|
||||
(strcat "{\"name\": \"K1\", \"oben\": ["
|
||||
"{\"artikel\": \"Schraubenset\", \"menge\": 3},"
|
||||
"{\"artikel\": \"unbekannt\", \"menge\": 1}]}")))
|
||||
(tu-eq "geruest-konfig-position" '(nil 3)
|
||||
(geruest-konfig-position _konfig "oben" _teile))
|
||||
|
||||
;; --- Variante gewinnt vor Baugruppe (TEILEART/dummy) ---
|
||||
;; Die zusammengefuehrte Saeulen-Baugruppe unterscheidet 1 Zoll und
|
||||
;; 2 Zoll nur noch ueber das teileart-Feld der Variante.
|
||||
(setq _bgtest (ssg-json-parse
|
||||
"{\"teileart\": \"Basis\", \"dummy\": \"basis.dwg\"}"))
|
||||
(tu-eq "geruest-variante-wert/variante-gewinnt" "Speziell"
|
||||
(geruest-variante-wert
|
||||
(ssg-json-parse "{\"teileart\": \"Speziell\"}") _bgtest "teileart"))
|
||||
(tu-eq "geruest-variante-wert/rueckfall" "Basis"
|
||||
(geruest-variante-wert
|
||||
(ssg-json-parse "{\"name\": \"X\"}") _bgtest "teileart"))
|
||||
(tu-eq "geruest-variante-wert/ohne-variante" "basis.dwg"
|
||||
(geruest-variante-wert nil _bgtest "dummy"))
|
||||
|
||||
;; --- Zusammengefuehrte Saeulen-Baugruppe ---
|
||||
(setq _saeulen nil)
|
||||
(foreach _e (geruest-baugruppen-liste)
|
||||
(if (equal (car _e) "Saeulen") (setq _saeulen (cdr _e))))
|
||||
(tu-eq "geruest/saeulen-vorhanden" T (if _saeulen T nil))
|
||||
(if _saeulen
|
||||
(progn
|
||||
(tu-eq "geruest/saeulen-varianten" 6
|
||||
(length (ssg-json-get _saeulen "geometrie_varianten")))
|
||||
(tu-eq "geruest/saeulen-anbauteile" 7
|
||||
(length (ssg-json-get _saeulen "anbaugruppen")))
|
||||
(tu-eq "geruest/saeulen-titel" "Saeulen" (geruest-titel _saeulen))
|
||||
;; R 1" ist die erste Variante und traegt die eigene TEILEART
|
||||
(tu-eq "geruest/saeulen-1zoll-teileart" "Geruest Saeule 1 Zoll"
|
||||
(geruest-variante-wert
|
||||
(car (ssg-json-get _saeulen "geometrie_varianten"))
|
||||
_saeulen "teileart"))
|
||||
)
|
||||
)
|
||||
|
||||
;; --- Rundlauf Schreiber -> Parser ---
|
||||
;; Prueft den Konfigurations-Schreiber ohne BricsCAD-Dialog. Bewusst in
|
||||
;; eine temporaere Datei: ein Test darf cfg/geruest_user.json nicht
|
||||
;; ueberschreiben. Die Testdaten enthalten absichtlich Anfuehrungs-
|
||||
;; zeichen - genau daran wuerde eine fehlende Maskierung scheitern.
|
||||
(setq _rec
|
||||
(list (cons "name" "Mein \"Satz\"")
|
||||
(cons "variante" "ROHR R 1\" 33,7 x 2,6")
|
||||
(cons "laenge" "2000")
|
||||
(cons "teilefarbe" "RAL 7035 Lichtgrau")
|
||||
(cons "oben" (list (list (cons "artikel" "ROHRKLAMMER 1\" KPL. VERTIKAL")
|
||||
(cons "menge" 2))))
|
||||
(cons "unten" nil)))
|
||||
(setq _pfad (vl-filename-mktemp "grtest" nil ".json"))
|
||||
(setq _f (open _pfad "w"))
|
||||
(write-line "{ \"Test\": [" _f)
|
||||
(geruest-konfig-liste-schreiben _f (list _rec))
|
||||
(write-line "] }" _f)
|
||||
(close _f)
|
||||
(setq _zurueck (car (ssg-json-get (ssg-json-laden _pfad) "Test")))
|
||||
(vl-file-delete _pfad)
|
||||
(tu-eq "geruest-schreiber/name" "Mein \"Satz\""
|
||||
(ssg-json-get _zurueck "name"))
|
||||
(tu-eq "geruest-schreiber/variante" "ROHR R 1\" 33,7 x 2,6"
|
||||
(ssg-json-get _zurueck "variante"))
|
||||
(tu-eq "geruest-schreiber/laenge" "2000"
|
||||
(ssg-json-get _zurueck "laenge"))
|
||||
(tu-eq "geruest-schreiber/farbe" "RAL 7035 Lichtgrau"
|
||||
(ssg-json-get _zurueck "teilefarbe"))
|
||||
(tu-eq "geruest-schreiber/oben-artikel" "ROHRKLAMMER 1\" KPL. VERTIKAL"
|
||||
(ssg-json-get (car (ssg-json-get _zurueck "oben")) "artikel"))
|
||||
(tu-eq "geruest-schreiber/oben-menge" 2
|
||||
(ssg-json-get (car (ssg-json-get _zurueck "oben")) "menge"))
|
||||
(tu-eq "geruest-schreiber/unten-leer" nil
|
||||
(ssg-json-get _zurueck "unten"))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user