[ADD] Gerüst Dummydateien sowie Zeichnungsdateien hinzugefügt; [FIX] Anzahl und menge der Baugruppenteile unterscheidet sich nun mit dem vorgabe wert für die Inputfelder; [CHANGE] Gerüstträger in separates JSON FIle ausgelagert, da andere Einfügelogik

This commit is contained in:
2026-10-05 09:49:20 +02:00
parent 6ec85905d4
commit fe5cb9664c
14 changed files with 488 additions and 348 deletions
+2 -2
View File
File diff suppressed because one or more lines are too long
+120 -67
View File
@@ -5,6 +5,7 @@
;; Nutzer eine Basis-Variante, Anbauteile fuer "Befestigung oben" UND ;; Nutzer eine Basis-Variante, Anbauteile fuer "Befestigung oben" UND
;; "Befestigung unten" (je mit eigener Stueckzahl), Laenge und Farbe waehlen, ;; "Befestigung unten" (je mit eigener Stueckzahl), Laenge und Farbe waehlen,
;; und fuegt das Ergebnis als Block GR_<id>_<Zeitstempel> ein. ;; und fuegt das Ergebnis als Block GR_<id>_<Zeitstempel> ein.
;; Rohr-Geruest-Traeger (GERUEST_TRAEGER) lesen data/json/geruest_traeger.json.
;; ;;
;; Beide Befestigungslisten enthalten ALLE Anbauteile der Baugruppe - dasselbe ;; Beide Befestigungslisten enthalten ALLE Anbauteile der Baugruppe - dasselbe
;; Teil kann oben, unten oder gleichzeitig an beiden Positionen sitzen. ;; Teil kann oben, unten oder gleichzeitig an beiden Positionen sitzen.
@@ -100,9 +101,10 @@
) )
) )
(defun geruest-json-pfad ( / basis) ;; Pfad einer Datendatei unter data/json, z.B. "geruest.json".
(defun geruest-json-pfad (datei / basis)
(if (setq basis (geruest-data-verzeichnis)) (if (setq basis (geruest-data-verzeichnis))
(strcat basis "/json/geruest.json") (strcat basis "/json/" datei)
) )
) )
@@ -112,36 +114,48 @@
) )
) )
;; Datendatei einmal je Zeichnungssitzung laden. ;; Datendatei unter data/json einmal je Zeichnungssitzung laden und im
(defun geruest-daten ( / pfad) ;; globalen Symbol cache-sym ablegen. Rueckgabe: die geparsten Daten oder nil
(if (null *geruest-daten*) ;; (mit Meldung).
(defun geruest-json-laden-cache (datei cache-sym / pfad daten)
(if (null (eval cache-sym))
(progn (progn
(setq pfad (geruest-json-pfad)) (setq pfad (geruest-json-pfad datei))
(cond (cond
((null pfad) (princ (ssg-text "gr-fehler-datenpfad"))) ((null pfad) (princ (ssg-text "gr-fehler-datenpfad")))
((null (findfile pfad)) (princ (ssg-textf "gr-fehler-json-fehlt" (list pfad)))) ((null (findfile pfad)) (princ (ssg-textf "gr-fehler-json-fehlt" (list pfad))))
(T (T
(setq *geruest-daten* (ssg-json-laden pfad)) (setq daten (ssg-json-laden pfad))
(if (null *geruest-daten*) (set cache-sym daten)
(if (null daten)
(princ (ssg-textf "gr-fehler-json-lesbar" (list pfad))) (princ (ssg-textf "gr-fehler-json-lesbar" (list pfad)))
) )
) )
) )
) )
) )
*geruest-daten* (eval cache-sym)
)
;; Baugruppen des GERUEST-Dialogs (Rohrabhaenger, Saeulen, Wandbefestigung).
(defun geruest-daten ( / )
(geruest-json-laden-cache "geruest.json" '*geruest-daten*)
)
;; Traeger-Baugruppen mit Linien-Logik (Rohr-Geruest-Traeger, spaeter z.B.
;; Gattertraeger) - bewusst eine eigene Datei: eigener Dialog, Laenge aus der
;; Zeichnung, Streben/Muffe/Beschriftung statt Anbaugruppen/Konfigurationen.
(defun geruest-traeger-daten ( / )
(geruest-json-laden-cache "geruest_traeger.json" '*geruest-traeger-daten*)
) )
;; Alle Baugruppen als ((id . objekt) ...) in Dateireihenfolge - diese ;; Alle Baugruppen als ((id . objekt) ...) in Dateireihenfolge - diese
;; Reihenfolge bestimmt auch die Reihenfolge im Bereichs-Dropdown. ;; Reihenfolge bestimmt auch die Reihenfolge im Bereichs-Dropdown. Die
;; Baugruppen mit "einfuegeart": "linie" (Rohr-Geruest-Traeger) fehlen hier: ;; Traeger stehen in geruest_traeger.json und gehoeren nicht hierher.
;; sie haben einen eigenen Dialog und einen eigenen Einfuegeablauf
;; (c:GERUEST_TRAEGER) und gehoeren nicht in das Bereichs-Dropdown.
(defun geruest-baugruppen-liste ( / erg) (defun geruest-baugruppen-liste ( / erg)
(setq erg nil) (setq erg nil)
(foreach eintrag (geruest-daten) (foreach eintrag (geruest-daten)
(if (and (listp (cdr eintrag)) (if (listp (cdr eintrag))
(not (equal (ssg-json-get (cdr eintrag) "einfuegeart") "linie")))
(setq erg (append erg (setq erg (append erg
(list (cons (ssg-json-get (cdr eintrag) "id") (cdr eintrag))))) (list (cons (ssg-json-get (cdr eintrag) "id") (cdr eintrag)))))
) )
@@ -169,6 +183,40 @@
(if (and w (/= w "")) w (ssg-json-get bg schluessel)) (if (and w (/= w "")) w (ssg-json-get bg schluessel))
) )
;; Pfad der Dummy-DWG fuer den Block. Ein "dummy" in der Geometrie-Variante
;; wird bevorzugt; fehlt die Datei unter data/geruest, wird gemeldet und auf
;; den "dummy" der Baugruppe zurueckgefallen. Rueckgabe: (datei . pfad) -
;; pfad ist nil, wenn kein Datenverzeichnis bekannt ist; ob die
;; Rueckfall-Datei existiert, prueft der Aufrufer.
(defun geruest-dummy-wahl (variante bg / v pfad)
(setq v (if variante (ssg-json-get variante "dummy")))
(if (and v (= (type v) 'STR) (/= v "")
(setq pfad (geruest-dummy-pfad v))
(findfile pfad))
(cons v pfad)
(progn
(if (and v (= (type v) 'STR) (/= v ""))
(princ (ssg-textf "gr-fehler-dummy-variante"
(list (if pfad pfad v)
(if (ssg-json-get bg "dummy")
(ssg-json-get bg "dummy")
"-"))))
)
(setq v (ssg-json-get bg "dummy"))
(cons v (geruest-dummy-pfad v))
)
)
)
;; Liste ohne die Eintraege, die (ohne Gross/Klein) gleich pfad sind. Damit
;; landet eine Teile-DWG, die zugleich der Dummy ist, nicht doppelt im Block.
(defun geruest-ohne-pfad (pfad liste)
(if pfad
(vl-remove-if '(lambda (p) (= (strcase p) (strcase pfad))) liste)
liste
)
)
;; ============================================================ ;; ============================================================
;; TEILE AUSWERTEN ;; TEILE AUSWERTEN
@@ -184,9 +232,23 @@
) )
) )
(defun geruest-menge (eintrag / m) ;; Zwei Mengenfelder im JSON, bewusst verschieden benannt:
(setq m (ssg-json-get eintrag "menge")) ;; "stueckzahl" = wie oft das Teil TATSAECHLICH geschrieben wird - je
(if (and m (numberp m) (> m 0)) (fix m) 1) ;; Einbau (Variante) bzw. je Satz/Anbauteil. Fehlt = 1.
;; "anzahl_vorgabe" = NUR die Vorbelegung des Anzahl-Feldes im Dialog
;; (Anbaugruppen). Fehlt = 1.
;; Ein Anbauteil wird Anzahl (Dialog) x stueckzahl mal geschrieben; bei einer
;; Gruppe ("teile") ist die Anzahl die Zahl der Saetze.
(defun geruest-positiv-int (w / )
(if (and w (numberp w) (> w 0)) (fix w) 1)
)
(defun geruest-stueckzahl (eintrag)
(geruest-positiv-int (ssg-json-get eintrag "stueckzahl"))
)
(defun geruest-anzahl-vorgabe (eintrag)
(geruest-positiv-int (ssg-json-get eintrag "anzahl_vorgabe"))
) )
;; Sivas-ID als String. Im JSON stehen rein numerische IDs als Zahl ;; Sivas-ID als String. Im JSON stehen rein numerische IDs als Zahl
@@ -212,7 +274,7 @@
) )
;; Alle Teile eines Eintrags als ((artnr . farbig) ...), jedes gemaess ;; Alle Teile eines Eintrags als ((artnr . farbig) ...), jedes gemaess
;; "menge" wiederholt. Benannte Gruppen ("teile") werden rekursiv aufgeloest. ;; "stueckzahl" wiederholt. Benannte Gruppen ("teile") werden rekursiv aufgeloest.
;; farbig = darf das Teil die Baugruppenfarbe tragen ("farbig" im JSON). Eine ;; farbig = darf das Teil die Baugruppenfarbe tragen ("farbig" im JSON). Eine
;; Gruppe mit "farbig": true vererbt das an ihre Teile (erbe); ein Teil kann ;; Gruppe mit "farbig": true vererbt das an ihre Teile (erbe); ein Teil kann
;; die Vererbung nicht per false aufheben - false und "fehlt" sind beide nil. ;; die Vererbung nicht per false aufheben - false und "fehlt" sind beide nil.
@@ -229,12 +291,12 @@
(setq erg (mapcar '(lambda (nr) (cons nr farbig)) (setq erg (mapcar '(lambda (nr) (cons nr farbig))
(geruest-wiederholen (geruest-wiederholen
(geruest-id-string (ssg-json-get eintrag "sivas_id")) (geruest-id-string (ssg-json-get eintrag "sivas_id"))
(geruest-menge eintrag)))) (geruest-stueckzahl eintrag))))
) )
erg erg
) )
;; Alle Artikelnummern eines Eintrags, jede gemaess "menge" wiederholt. ;; Alle Artikelnummern eines Eintrags, jede gemaess "stueckzahl" wiederholt.
(defun geruest-artikelnummern (eintrag) (defun geruest-artikelnummern (eintrag)
(mapcar 'car (geruest-teile-paare eintrag nil)) (mapcar 'car (geruest-teile-paare eintrag nil))
) )
@@ -289,7 +351,7 @@
;; Eingabe aus einem Mengenfeld auswerten. ;; Eingabe aus einem Mengenfeld auswerten.
;; Leer -> Vorgabewert aus dem JSON, gueltig -> Zahl >= 1, sonst nil. ;; Leer -> Vorgabewert aus dem JSON, gueltig -> Zahl >= 1, sonst nil.
(defun geruest-menge-wert (s vorgabe) (defun geruest-anzahl-wert (s vorgabe)
(setq s (ssg-cfg-trim (if s s ""))) (setq s (ssg-cfg-trim (if s s "")))
(cond (cond
((= s "") vorgabe) ((= s "") vorgabe)
@@ -310,30 +372,18 @@
) )
) )
;; Artikelnummern eines Eintrags bei frei gewaehlter Stueckzahl. ;; Teile eines Anbauteils bei der im Dialog gewaehlten Anzahl: der Eintrag
;; Einzelteil: die Sivas-ID anzahl-mal. Benannte Gruppe ("teile"): das ;; (Einzelteil mit seiner "stueckzahl" bzw. benannte Gruppe als kompletter
;; komplette Set anzahl-mal - die Mengen INNERHALB des Sets bleiben erhalten ;; Satz) anzahl-mal. Die Stueckzahlen INNERHALB eines Satzes bleiben erhalten
;; (ein Schraubenset bleibt 1 Scheibe + 2 Muttern + 1 Schraube je Satz). ;; (ein Schraubenset bleibt 1 Scheibe + 2 Muttern + 1 Schraube je Satz).
(defun geruest-teile-paare-n (eintrag anzahl / teile einmal erg i farbig) (defun geruest-teile-paare-n (eintrag anzahl / einmal erg i)
(setq teile (ssg-json-get eintrag "teile")) (setq einmal (geruest-teile-paare eintrag nil))
(setq farbig (if (ssg-json-get eintrag "farbig") T nil))
(if teile
(progn
(setq einmal nil)
(foreach teil teile
(setq einmal (append einmal (geruest-teile-paare teil farbig)))
)
(setq erg nil i 0) (setq erg nil i 0)
(while (< i anzahl) (while (< i anzahl)
(setq erg (append erg einmal)) (setq erg (append erg einmal))
(setq i (1+ i)) (setq i (1+ i))
) )
erg erg
)
(mapcar '(lambda (nr) (cons nr farbig))
(geruest-wiederholen
(geruest-id-string (ssg-json-get eintrag "sivas_id")) anzahl))
)
) )
(defun geruest-artikelnummern-n (eintrag anzahl) (defun geruest-artikelnummern-n (eintrag anzahl)
@@ -441,7 +491,7 @@
;; Positionsliste ("oben"/"unten") einer Konfiguration auf die Anbauteile ;; Positionsliste ("oben"/"unten") einer Konfiguration auf die Anbauteile
;; abbilden. Rueckgabe: ein Eintrag je Anbauteil - nil (nicht gewaehlt) oder ;; abbilden. Rueckgabe: ein Eintrag je Anbauteil - nil (nicht gewaehlt) oder
;; die Stueckzahl. Ein unbekannter Artikelname wird gemeldet und ;; die Anzahl (Feld "anzahl"). Ein unbekannter Artikelname wird gemeldet und
;; uebersprungen, statt die ganze Konfiguration scheitern zu lassen. ;; uebersprungen, statt die ganze Konfiguration scheitern zu lassen.
(defun geruest-konfig-position (konfig schluessel anbauteile / mengen idx n) (defun geruest-konfig-position (konfig schluessel anbauteile / mengen idx n)
(setq mengen (geruest-nil-liste (length anbauteile))) (setq mengen (geruest-nil-liste (length anbauteile)))
@@ -449,7 +499,7 @@
(setq idx (geruest-name-index (ssg-json-get e "artikel") anbauteile)) (setq idx (geruest-name-index (ssg-json-get e "artikel") anbauteile))
(if idx (if idx
(progn (progn
(setq n (ssg-json-get e "menge")) (setq n (ssg-json-get e "anzahl"))
(setq mengen (geruest-liste-setzen mengen idx (setq mengen (geruest-liste-setzen mengen idx
(if (and n (numberp n) (> n 0)) (fix n) 1))) (if (and n (numberp n) (> n 0)) (fix n) 1)))
) )
@@ -583,20 +633,20 @@
(defun geruest-dlg-standard ( / erg) (defun geruest-dlg-standard ( / erg)
(setq erg nil) (setq erg nil)
(foreach a *geruest-anbauteile* (foreach a *geruest-anbauteile*
(setq erg (append erg (list (cons "0" (itoa (geruest-menge a)))))) (setq erg (append erg (list (cons "0" (itoa (geruest-anzahl-vorgabe a))))))
) )
erg erg
) )
;; Mengenliste (nil oder Zahl je Teil) in den Tile-Zustand umsetzen. ;; Mengenliste (nil oder Zahl je Teil) in den Tile-Zustand umsetzen.
(defun geruest-mengen->tiles (mengen / erg i a) (defun geruest-anzahlen->tiles (mengen / erg i a)
(setq erg nil i 0) (setq erg nil i 0)
(foreach m mengen (foreach m mengen
(setq a (nth i *geruest-anbauteile*)) (setq a (nth i *geruest-anbauteile*))
(setq erg (append erg (setq erg (append erg
(list (if m (list (if m
(cons "1" (itoa m)) (cons "1" (itoa m))
(cons "0" (itoa (geruest-menge a))))))) (cons "0" (itoa (geruest-anzahl-vorgabe a)))))))
(setq i (1+ i)) (setq i (1+ i))
) )
erg erg
@@ -720,10 +770,10 @@
*geruest-dlg-frei* farbe)) *geruest-dlg-frei* farbe))
) )
(setq *geruest-dlg-oben* (setq *geruest-dlg-oben*
(geruest-mengen->tiles (geruest-anzahlen->tiles
(geruest-konfig-position k "oben" *geruest-anbauteile*))) (geruest-konfig-position k "oben" *geruest-anbauteile*)))
(setq *geruest-dlg-unten* (setq *geruest-dlg-unten*
(geruest-mengen->tiles (geruest-anzahlen->tiles
(geruest-konfig-position k "unten" *geruest-anbauteile*))) (geruest-konfig-position k "unten" *geruest-anbauteile*)))
) )
) )
@@ -745,16 +795,16 @@
) )
;; Angehakte Teile einer Spalte mit gueltiger Menge einsammeln. ;; Angehakte Teile einer Spalte mit gueltiger Menge einsammeln.
;; Rueckgabe: (T . ((index . menge) ...)) oder nil bei ungueltigem Mengenfeld. ;; Rueckgabe: (T . ((index . anzahl) ...)) oder nil bei ungueltigem Mengenfeld.
;; Das fuehrende T ist noetig, weil "nichts ausgewaehlt" ein gueltiges ;; Das fuehrende T ist noetig, weil "nichts ausgewaehlt" ein gueltiges
;; Ergebnis ist und sich sonst nicht von einem Fehler unterscheiden liesse. ;; Ergebnis ist und sich sonst nicht von einem Fehler unterscheiden liesse.
(defun geruest-mengen-lesen (zustand / erg i a m ok) (defun geruest-anzahlen-lesen (zustand / erg i a m ok)
(setq erg nil i 0 ok T) (setq erg nil i 0 ok T)
(foreach paar zustand (foreach paar zustand
(setq a (nth i *geruest-anbauteile*)) (setq a (nth i *geruest-anbauteile*))
(if (and ok (= (car paar) "1")) (if (and ok (= (car paar) "1"))
(progn (progn
(setq m (geruest-menge-wert (cdr paar) (geruest-menge a))) (setq m (geruest-anzahl-wert (cdr paar) (geruest-anzahl-vorgabe a)))
(if m (if m
(setq erg (append erg (list (cons i m)))) (setq erg (append erg (list (cons i m))))
(setq ok nil) (setq ok nil)
@@ -788,11 +838,11 @@
(setq a (nth i *geruest-anbauteile*)) (setq a (nth i *geruest-anbauteile*))
(if (= (car paar) "1") (if (= (car paar) "1")
(progn (progn
(setq m (geruest-menge-wert (cdr paar) (geruest-menge a))) (setq m (geruest-anzahl-wert (cdr paar) (geruest-anzahl-vorgabe a)))
(if m (if m
(setq erg (append erg (setq erg (append erg
(list (list (cons "artikel" (geruest-eintrag-name a)) (list (list (cons "artikel" (geruest-eintrag-name a))
(cons "menge" m))))) (cons "anzahl" m)))))
) )
) )
) )
@@ -818,7 +868,7 @@
(write-line (write-line
(strcat " { \"artikel\": \"" (strcat " { \"artikel\": \""
(ssg-json-escape (ssg-json-get e "artikel")) (ssg-json-escape (ssg-json-get e "artikel"))
"\", \"menge\": " (itoa (ssg-json-get e "menge")) " }" "\", \"anzahl\": " (itoa (ssg-json-get e "anzahl")) " }"
(if (< i n) "," "")) (if (< i n) "," ""))
f) f)
) )
@@ -963,7 +1013,7 @@
) )
;; Dialog fuer einen Bereich zeigen. Rueckgabe: ;; Dialog fuer einen Bereich zeigen. Rueckgabe:
;; ("OK" variante-index ((idx . menge) ...) ((idx . menge) ...) laenge farbe) ;; ("OK" variante-index ((idx . anzahl) ...) ((idx . anzahl) ...) laenge farbe)
;; - drittes Element = Befestigung oben, viertes = unten ;; - drittes Element = Befestigung oben, viertes = unten
;; ("WECHSEL" bereich-index) - Nutzer hat den Bereich umgestellt ;; ("WECHSEL" bereich-index) - Nutzer hat den Bereich umgestellt
;; nil - abgebrochen ;; nil - abgebrochen
@@ -1120,8 +1170,8 @@
) )
(T (T
(setq oben-m (geruest-mengen-lesen *geruest-dlg-oben*)) (setq oben-m (geruest-anzahlen-lesen *geruest-dlg-oben*))
(setq unten-m (geruest-mengen-lesen *geruest-dlg-unten*)) (setq unten-m (geruest-anzahlen-lesen *geruest-dlg-unten*))
(if (or (null oben-m) (null unten-m)) (if (or (null oben-m) (null unten-m))
(alert (ssg-text "gr-alert-menge")) (alert (ssg-text "gr-alert-menge"))
(progn (progn
@@ -1170,10 +1220,14 @@
;; Rueckgabe: (blockname . entity) oder nil. ;; Rueckgabe: (blockname . entity) oder nil.
(defun geruest-block-bauen (bg variante werte pt teile-dwgs / datei dummy lastEnt dummyEnt (defun geruest-block-bauen (bg variante werte pt teile-dwgs / datei dummy lastEnt dummyEnt
dummy-attribs attribs) dummy-attribs attribs)
;; Eine Variante darf eine eigene Dummy-DWG mitbringen; sonst gilt die der ;; Eine Variante darf eine eigene Dummy-DWG mitbringen; sonst (oder wenn
;; Baugruppe. ;; deren Datei fehlt) gilt die der Baugruppe.
(setq datei (geruest-variante-wert variante bg "dummy")) (setq datei (geruest-dummy-wahl variante bg))
(setq dummy (geruest-dummy-pfad datei)) (setq dummy (cdr datei)
datei (car datei))
;; Ist der Dummy zugleich eine Teile-DWG (z.B. 821006036.dwg beim
;; T-Abhaenger), nicht ein zweites Mal einfuegen.
(setq teile-dwgs (geruest-ohne-pfad dummy teile-dwgs))
(if (or (null dummy) (null (findfile dummy))) (if (or (null dummy) (null (findfile dummy)))
(progn (progn
(princ (ssg-textf "gr-fehler-dummy" (list (if dummy dummy datei)))) (princ (ssg-textf "gr-fehler-dummy" (list (if dummy dummy datei))))
@@ -1269,7 +1323,7 @@
;; ============================================================ ;; ============================================================
;; Teile-Paare ((artnr . farbig) ...) einer Befestigungsauswahl ;; Teile-Paare ((artnr . farbig) ...) einer Befestigungsauswahl
;; ((index . menge) ...). ;; ((index . anzahl) ...).
(defun geruest-auswahl-paare (auswahl anbauteile / erg) (defun geruest-auswahl-paare (auswahl anbauteile / erg)
(setq erg nil) (setq erg nil)
(foreach paar auswahl (foreach paar auswahl
@@ -1410,7 +1464,7 @@
;; ============================================================ ;; ============================================================
;; ROHR-GERUEST-TRAEGER (Baugruppe mit "einfuegeart": "linie") ;; ROHR-GERUEST-TRAEGER (Daten: data/json/geruest_traeger.json)
;; ============================================================ ;; ============================================================
;; Eigener Dialog (dcl/geruest_traeger.dcl): Variante, Farbe und zwei ;; Eigener Dialog (dcl/geruest_traeger.dcl): Variante, Farbe und zwei
;; Laengenabzuege. Die Laenge selbst wird DANACH in der Zeichnung bestimmt - ;; Laengenabzuege. Die Laenge selbst wird DANACH in der Zeichnung bestimmt -
@@ -1425,11 +1479,10 @@
;; Richtungswinkel eingefuegt. Es wird wiederholt eingefuegt, bis der Nutzer ;; Richtungswinkel eingefuegt. Es wird wiederholt eingefuegt, bis der Nutzer
;; ESC/Enter drueckt - jeder Traeger ist ein eigener GR_Traeger_<ts>-Block. ;; ESC/Enter drueckt - jeder Traeger ist ein eigener GR_Traeger_<ts>-Block.
;; Baugruppe ueber das ASCII-Feld "id" (auch solche, die ;; Baugruppe ueber das ASCII-Feld "id" in daten (z.B. (geruest-traeger-daten)).
;; geruest-baugruppen-liste auslaesst). (defun geruest-baugruppe (id daten / erg)
(defun geruest-baugruppe (id / erg)
(setq erg nil) (setq erg nil)
(foreach eintrag (geruest-daten) (foreach eintrag daten
(if (and (null erg) (listp (cdr eintrag)) (if (and (null erg) (listp (cdr eintrag))
(equal (ssg-json-get (cdr eintrag) "id") id)) (equal (ssg-json-get (cdr eintrag) "id") id))
(setq erg (cdr eintrag)) (setq erg (cdr eintrag))
@@ -2098,7 +2151,7 @@
cfg laenge lage lay handle code erg) cfg laenge lage lay handle code erg)
(setq ed (entget blockEnt)) (setq ed (entget blockEnt))
(setq attribs (ssg-attrib-read blockEnt)) (setq attribs (ssg-attrib-read blockEnt))
(setq bg (geruest-baugruppe "Traeger")) (setq bg (geruest-baugruppe "Traeger" (geruest-traeger-daten)))
(setq laenge (atof (cond ((cdr (assoc "LAENGE" attribs))) ("0")))) (setq laenge (atof (cond ((cdr (assoc "LAENGE" attribs))) ("0"))))
(if (and bg (> laenge 0.0)) (if (and bg (> laenge 0.0))
(progn (progn
@@ -2190,7 +2243,7 @@
) )
(defun c:GERUEST_TRAEGER ( / bg wahl) (defun c:GERUEST_TRAEGER ( / bg wahl)
(setq bg (geruest-baugruppe "Traeger")) (setq bg (geruest-baugruppe "Traeger" (geruest-traeger-daten)))
(cond (cond
((null bg) ((null bg)
(princ (ssg-textf "gr-fehler-baugruppe" (list "Traeger")))) (princ (ssg-textf "gr-fehler-baugruppe" (list "Traeger"))))
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+91 -243
View File
@@ -29,13 +29,13 @@
"artikel": "ROHR R 1\" 33,7 x 2,6", "artikel": "ROHR R 1\" 33,7 x 2,6",
"sivas_id": 821006026, "sivas_id": 821006026,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1
}, },
{ {
"artikel": "CAD - ROHRABH. 1\" NICHT GEQUETSCHT - MONTAGEELEMENTE KPL.", "artikel": "CAD - ROHRABH. 1\" NICHT GEQUETSCHT - MONTAGEELEMENTE KPL.",
"sivas_id": 821004202, "sivas_id": 821004202,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
}, },
@@ -46,13 +46,13 @@
"artikel": "ROHR R 1\" 33,7 x 2,6 einseitig gequetscht", "artikel": "ROHR R 1\" 33,7 x 2,6 einseitig gequetscht",
"sivas_id": 821006034, "sivas_id": 821006034,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1
}, },
{ {
"artikel": "CAD - ROHRABHÄNGER 1\" EINSEITIG GEQUETSCHT - MONTAGEELEMENTE KPL.", "artikel": "CAD - ROHRABHÄNGER 1\" EINSEITIG GEQUETSCHT - MONTAGEELEMENTE KPL.",
"sivas_id": 821004203, "sivas_id": 821004203,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
}, },
@@ -63,13 +63,25 @@
"artikel": "ROHR R 1\" 33,7 x 2,6 beidseitig gequetscht", "artikel": "ROHR R 1\" 33,7 x 2,6 beidseitig gequetscht",
"sivas_id": 821006035, "sivas_id": 821006035,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1
}, },
{ {
"artikel": "CAD - ROHRABHÄNGER 1\" BEIDSEITIG GEQUETSCHT - MONTAGEELEMENTE KPL.", "artikel": "CAD - ROHRABHÄNGER 1\" BEIDSEITIG GEQUETSCHT - MONTAGEELEMENTE KPL.",
"sivas_id": 821004204, "sivas_id": 821004204,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
}
]
},
{
"name": "T-Abhaenger mit 300 mm Flanschrohr R 1\" 33,7 x 2,6",
"dummy": "821006036.dwg",
"teile": [
{
"artikel": "T-ABHÄNGER MIT FLANSCH-ROHR 33,7 x 2,6",
"sivas_id": 821006036,
"farbig": true,
"stueckzahl": 1
} }
] ]
} }
@@ -79,34 +91,37 @@
"artikel": "SPANNPRATZE ST - KH 8-11 KPL.SELBSTSICHERND", "artikel": "SPANNPRATZE ST - KH 8-11 KPL.SELBSTSICHERND",
"sivas_id": 821004120, "sivas_id": 821004120,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "SPANNPRATZE SELBSTSICHERND KPL.", "artikel": "SPANNPRATZE SELBSTSICHERND KPL.",
"sivas_id": 821004058, "sivas_id": 821004058,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"name": "Schraubenset", "name": "Schraubenset",
"anzahl_vorgabe": 1,
"teile": [ "teile": [
{ {
"artikel": "Scheibe DIN 125 - A 10,5 - 140 HV - St", "artikel": "Scheibe DIN 125 - A 10,5 - 140 HV - St",
"sivas_id": 913011010, "sivas_id": 913011010,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
}, },
{ {
"artikel": "Sechskantmutter DIN 934 - M10 - 8", "artikel": "Sechskantmutter DIN 934 - M10 - 8",
"sivas_id": 912011010, "sivas_id": 912011010,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 2
}, },
{ {
"artikel": "Sechskantschraube DIN 933 - M10 x 30 - 8.8", "artikel": "Sechskantschraube DIN 933 - M10 x 30 - 8.8",
"sivas_id": 911011008, "sivas_id": 911011008,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
}, },
@@ -114,43 +129,50 @@
"artikel": "U-BÜGEL M7 41X49 FÜR PROFILGERÜST - BG", "artikel": "U-BÜGEL M7 41X49 FÜR PROFILGERÜST - BG",
"sivas_id": 825004049, "sivas_id": 825004049,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "ROHRKLAMMER 1\" KPL. VERTIKAL", "artikel": "ROHRKLAMMER 1\" KPL. VERTIKAL",
"sivas_id": 825004040, "sivas_id": 825004040,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "WINKEL 60X60X6X300", "artikel": "WINKEL 60X60X6X300",
"sivas_id": 821006043, "sivas_id": 821006043,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "WINKEL 60X60X6X60", "artikel": "WINKEL 60X60X6X60",
"sivas_id": 821006042, "sivas_id": 821006042,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "ROHRKLAMMER 1\" T-VERBINDUNG KPL.", "artikel": "ROHRKLAMMER 1\" T-VERBINDUNG KPL.",
"sivas_id": 825004030, "sivas_id": 825004030,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "ROHRKLAMMER 1\" FLACH UND LANG, KPL.", "artikel": "ROHRKLAMMER 1\" FLACH UND LANG, KPL.",
"sivas_id": 825002021, "sivas_id": 825002021,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "DURCHSTECKANKER HST M12X115X20", "artikel": "DURCHSTECKANKER HST M12X115X20",
"sivas_id": 922021003, "sivas_id": 922021003,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
} }
], ],
"konfigurationen": [ "konfigurationen": [
@@ -162,17 +184,17 @@
"oben": [ "oben": [
{ {
"artikel": "SPANNPRATZE SELBSTSICHERND KPL.", "artikel": "SPANNPRATZE SELBSTSICHERND KPL.",
"menge": 1 "anzahl": 1
}, },
{ {
"artikel": "Schraubenset", "artikel": "Schraubenset",
"menge": 1 "anzahl": 1
} }
], ],
"unten": [ "unten": [
{ {
"artikel": "ROHRKLAMMER 1\" KPL. VERTIKAL", "artikel": "ROHRKLAMMER 1\" KPL. VERTIKAL",
"menge": 2 "anzahl": 2
} }
] ]
}, },
@@ -184,13 +206,13 @@
"oben": [ "oben": [
{ {
"artikel": "DURCHSTECKANKER HST M12X115X20", "artikel": "DURCHSTECKANKER HST M12X115X20",
"menge": 2 "anzahl": 2
} }
], ],
"unten": [ "unten": [
{ {
"artikel": "ROHRKLAMMER 1\" T-VERBINDUNG KPL.", "artikel": "ROHRKLAMMER 1\" T-VERBINDUNG KPL.",
"menge": 1 "anzahl": 1
} }
] ]
} }
@@ -200,7 +222,7 @@
"id": "Saeulen", "id": "Saeulen",
"titel": "Saeulen", "titel": "Saeulen",
"teileart": "Geruest Saeule", "teileart": "Geruest Saeule",
"dummy": "R2-Saeule_dummy.dwg", "dummy": "821006051.dwg",
"attribute": { "attribute": {
"LAENGE": { "LAENGE": {
"typ": "number", "typ": "number",
@@ -239,31 +261,32 @@
"artikel": "BODENSÄULE R 2\" 60,3 MIT FUSSPLATTE", "artikel": "BODENSÄULE R 2\" 60,3 MIT FUSSPLATTE",
"sivas_id": 821006051, "sivas_id": 821006051,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1
}, },
{ {
"artikel": "CAD - BODENSÄULE R 2\" - DURCHSTECKANKER KPL.", "artikel": "CAD - BODENSÄULE R 2\" - DURCHSTECKANKER KPL.",
"sivas_id": 821004201, "sivas_id": 821004201,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
}, },
{ {
"name": "R 1\"", "name": "R 1\"",
"teileart": "Geruest Saeule 1 Zoll", "teileart": "Geruest Saeule 1 Zoll",
"dummy": "821004200.dwg",
"teile": [ "teile": [
{ {
"artikel": "ROHR R 1\" 33,7 x 2,6", "artikel": "ROHR R 1\" 33,7 x 2,6",
"sivas_id": 821006026, "sivas_id": 821006026,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1
}, },
{ {
"artikel": "CAD - BODENSÄULE R 1\" - BODENPLATTE KPL.", "artikel": "CAD - BODENSÄULE R 1\" - BODENPLATTE KPL.",
"sivas_id": 821004200, "sivas_id": 821004200,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
} }
@@ -273,67 +296,78 @@
"artikel": "KLEMMRING MIT MUFFE EINFACH KPL.", "artikel": "KLEMMRING MIT MUFFE EINFACH KPL.",
"sivas_id": 825002019, "sivas_id": 825002019,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "KLEMMRING MIT MUFFE DOPPELT 90 Grad, KPL.", "artikel": "KLEMMRING MIT MUFFE DOPPELT 90 Grad, KPL.",
"sivas_id": 825002009, "sivas_id": 825002009,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "KLEMMRING MIT MUFFE DOPPELT 180 Grad, KPL.", "artikel": "KLEMMRING MIT MUFFE DOPPELT 180 Grad, KPL.",
"sivas_id": 825002008, "sivas_id": 825002008,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "KLEMMRING M. MUFFE DREIFACH 90 Grad/180 Grad KPL.", "artikel": "KLEMMRING M. MUFFE DREIFACH 90 Grad/180 Grad KPL.",
"sivas_id": 825002007, "sivas_id": 825002007,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "KLEMMRING MIT LASCHE KPL. ZUSAMMENBAUZEICHNUNG", "artikel": "KLEMMRING MIT LASCHE KPL. ZUSAMMENBAUZEICHNUNG",
"sivas_id": 825002020, "sivas_id": 825002020,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "QUERSCHELLE F. 1\" UND 2\" ROHR GESCHW./VZ. M. 4X M10X30 KPL.", "artikel": "QUERSCHELLE F. 1\" UND 2\" ROHR GESCHW./VZ. M. 4X M10X30 KPL.",
"sivas_id": 825002022, "sivas_id": 825002022,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "KREUZSCHELLE F. 2\" UND 1\" ROHR SCHWENKBAR 360 Grad", "artikel": "KREUZSCHELLE F. 2\" UND 1\" ROHR SCHWENKBAR 360 Grad",
"sivas_id": 922083009, "sivas_id": 922083009,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1,
"anzahl_vorgabe": 2
}, },
{ {
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 1-ARMIG KPL.", "artikel": "HALTEARM FÜR BODENSÄULE R 2\" 1-ARMIG KPL.",
"sivas_id": 821004051, "sivas_id": 821004051,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 2-ARMIG 90 Grad KPL.", "artikel": "HALTEARM FÜR BODENSÄULE R 2\" 2-ARMIG 90 Grad KPL.",
"sivas_id": 821004054, "sivas_id": 821004054,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 2-ARMIG 180 Grad KPL.", "artikel": "HALTEARM FÜR BODENSÄULE R 2\" 2-ARMIG 180 Grad KPL.",
"sivas_id": 821004052, "sivas_id": 821004052,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
}, },
{ {
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 3-ARMIG KPL.", "artikel": "HALTEARM FÜR BODENSÄULE R 2\" 3-ARMIG KPL.",
"sivas_id": 821004053, "sivas_id": 821004053,
"farbig": true, "farbig": true,
"menge": 1 "stueckzahl": 1,
"anzahl_vorgabe": 1
} }
], ],
"konfigurationen": [ "konfigurationen": [
@@ -353,7 +387,7 @@
"oben": [ "oben": [
{ {
"artikel": "KLEMMRING MIT MUFFE EINFACH KPL.", "artikel": "KLEMMRING MIT MUFFE EINFACH KPL.",
"menge": 2 "anzahl": 2
} }
], ],
"unten": [] "unten": []
@@ -366,13 +400,13 @@
"oben": [ "oben": [
{ {
"artikel": "KLEMMRING MIT MUFFE DOPPELT 90 Grad, KPL.", "artikel": "KLEMMRING MIT MUFFE DOPPELT 90 Grad, KPL.",
"menge": 2 "anzahl": 2
} }
], ],
"unten": [ "unten": [
{ {
"artikel": "QUERSCHELLE F. 1\" UND 2\" ROHR GESCHW./VZ. M. 4X M10X30 KPL.", "artikel": "QUERSCHELLE F. 1\" UND 2\" ROHR GESCHW./VZ. M. 4X M10X30 KPL.",
"menge": 2 "anzahl": 2
} }
] ]
} }
@@ -386,45 +420,49 @@
"geometrie_varianten": [ "geometrie_varianten": [
{ {
"name": "WANDFLANSCH EINZELTEIL", "name": "WANDFLANSCH EINZELTEIL",
"dummy": "821006031.dwg",
"teile": [ "teile": [
{ {
"artikel": "WANDFLANSCH EINZELTEIL", "artikel": "WANDFLANSCH EINZELTEIL",
"sivas_id": 821006031, "sivas_id": 821006031,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
}, },
{ {
"name": "WINKEL 60X60X6X60", "name": "WINKEL 60X60X6X60",
"dummy": "821006042.dwg",
"teile": [ "teile": [
{ {
"artikel": "WINKEL 60X60X6X60", "artikel": "WINKEL 60X60X6X60",
"sivas_id": 821006042, "sivas_id": 821006042,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
}, },
{ {
"name": "WINKEL 60X60X6X300", "name": "WINKEL 60X60X6X300",
"dummy": "821006043.dwg",
"teile": [ "teile": [
{ {
"artikel": "WINKEL 60X60X6X300", "artikel": "WINKEL 60X60X6X300",
"sivas_id": 821006043, "sivas_id": 821006043,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
}, },
{ {
"name": "ROHRSCHELLE 1\" OBERTEIL", "name": "ROHRSCHELLE 1\" OBERTEIL",
"dummy": "825006009.dwg",
"teile": [ "teile": [
{ {
"artikel": "ROHRSCHELLE 1\" OBERTEIL", "artikel": "ROHRSCHELLE 1\" OBERTEIL",
"sivas_id": 825006009, "sivas_id": 825006009,
"farbig": false, "farbig": false,
"menge": 1 "stueckzahl": 1
} }
] ]
} }
@@ -432,29 +470,31 @@
"anbaugruppen": [ "anbaugruppen": [
{ {
"name": "Nylondübel 12x60 inkl. Holzschrauben", "name": "Nylondübel 12x60 inkl. Holzschrauben",
"anzahl_vorgabe": 2,
"teile": [ "teile": [
{ {
"artikel": "HOLZSCHRAUB,10X70, 6KT DIN 571 VZ", "artikel": "HOLZSCHRAUB,10X70, 6KT DIN 571 VZ",
"sivas_id": 911271027, "sivas_id": 911271027,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1
}, },
{ {
"artikel": "NYLON - DUEBEL 12X60 (TYP S)", "artikel": "NYLON - DUEBEL 12X60 (TYP S)",
"sivas_id": 922013003, "sivas_id": 922013003,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1
} }
] ]
}, },
{ {
"name": "HST M12X115X20", "name": "HST M12X115X20",
"anzahl_vorgabe": 2,
"teile": [ "teile": [
{ {
"artikel": "DURCHSTECKANKER HST M12X115X20 WANDABH.", "artikel": "DURCHSTECKANKER HST M12X115X20 WANDABH.",
"sivas_id": 922021003, "sivas_id": 922021003,
"farbig": false, "farbig": false,
"menge": 2 "stueckzahl": 1
} }
] ]
} }
@@ -466,7 +506,7 @@
"oben": [ "oben": [
{ {
"artikel": "Nylondübel 12x60 inkl. Holzschrauben", "artikel": "Nylondübel 12x60 inkl. Holzschrauben",
"menge": 1 "anzahl": 2
} }
], ],
"unten": [] "unten": []
@@ -477,203 +517,11 @@
"oben": [ "oben": [
{ {
"artikel": "HST M12X115X20", "artikel": "HST M12X115X20",
"menge": 1 "anzahl": 2
} }
], ],
"unten": [] "unten": []
} }
] ]
},
"Rohr-Gerüst-Träger": {
"id": "Traeger",
"titel": "Traeger",
"teileart": "Geruest Traeger",
"einfuegeart": "linie",
"querstrebe": {
"dummy": "dummy_Strebe_30x4.dwg",
"abstand_max": 500,
"rand_min": 100,
"rand_max": 250
},
"muffe": {
"dummy": "dummy_Muffe_1zoll.dwg"
},
"beschriftung": {
"format": "%1 L=%2",
"stil": "Lan",
"ausrichtung": "BL",
"hoehe": 100
},
"attribute": {
"LAENGE": {
"typ": "number",
"min": 0,
"max": 6000,
"einheit": "mm"
},
"LAENGENABZUGANFANG": {
"typ": "number",
"einheit": "mm",
"vorgabe": 35,
"aktiv": false
},
"LAENGENABZUGENDE": {
"typ": "number",
"einheit": "mm",
"vorgabe": 35,
"aktiv": false
},
"TEILEFARBE": {
"typ": "auswahl",
"optionen": [
"RAL7035",
"RAL7030"
],
"frei_erlaubt": true,
"frei_option": "Individuell"
}
},
"geometrie_varianten": [
{
"name": "Rohr 1\"",
"beschriftung": {
"text": "Rohr 1\"",
"layer": "D-6-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-6",
"teile": [
{
"artikel": "ROHR R 1\"",
"sivas_id": 821006026,
"farbig": true,
"menge": 1
}
]
},
{
"name": "Rohr 1\" mit Muffe",
"beschriftung": {
"text": "Rohr 1\"",
"layer": "D-6-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-6",
"teile": [
{
"artikel": "ROHR R 1\" mit Muffe",
"sivas_id": 825004000,
"farbig": true,
"menge": 1
}
]
},
{
"name": "DRT 80 1\"",
"beschriftung": {
"text": "DRT 80",
"layer": "D-1-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-1",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 80 1\"",
"sivas_id": 825084000,
"farbig": true,
"menge": 1
}
]
},
{
"name": "DRT 80 1\" mit 2 Muffen",
"beschriftung": {
"text": "DRT 80",
"layer": "D-1-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-1",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 80 1\" mit 2 Muffen",
"sivas_id": 825084007,
"farbig": true,
"menge": 1
}
]
},
{
"name": "DRT 114 1\"",
"beschriftung": {
"text": "DRT 114",
"layer": "D-3-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-3",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 114 1\"",
"sivas_id": 825104000,
"farbig": true,
"menge": 1
}
]
},
{
"name": "DRT 114 1\" mit 2 Muffen",
"beschriftung": {
"text": "DRT 114",
"layer": "D-3-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-3",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 114 1\" mit 2 Muffen",
"sivas_id": 825104007,
"farbig": true,
"menge": 1
}
]
},
{
"name": "RT 80/80 1\"",
"beschriftung": {
"text": "RT 80/80",
"layer": "D-5-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-5",
"teile": [
{
"artikel": "RT ROHRTRAEGER 80/80 1\"",
"sivas_id": 825144000,
"farbig": true,
"menge": 1
}
]
},
{
"name": "RT 80/80 1\" mit 2 Muffen",
"beschriftung": {
"text": "RT 80/80",
"layer": "D-5-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-5",
"teile": [
{
"artikel": "RT ROHRTRAEGER 80/80 1\" mit 2 Muffen",
"sivas_id": 825144007,
"farbig": true,
"menge": 1
}
]
}
]
} }
} }
+193
View File
@@ -0,0 +1,193 @@
{
"Rohr-Gerüst-Träger": {
"id": "Traeger",
"titel": "Traeger",
"teileart": "Geruest Traeger",
"querstrebe": {
"dummy": "dummy_Strebe_30x4.dwg",
"abstand_max": 500,
"rand_min": 100,
"rand_max": 250
},
"muffe": {
"dummy": "dummy_Muffe_1zoll.dwg"
},
"beschriftung": {
"format": "%1 L=%2",
"stil": "Lan",
"ausrichtung": "BL",
"hoehe": 100
},
"attribute": {
"LAENGE": {
"typ": "number",
"min": 0,
"max": 6000,
"einheit": "mm"
},
"LAENGENABZUGANFANG": {
"typ": "number",
"einheit": "mm",
"vorgabe": 35,
"aktiv": false
},
"LAENGENABZUGENDE": {
"typ": "number",
"einheit": "mm",
"vorgabe": 35,
"aktiv": false
},
"TEILEFARBE": {
"typ": "auswahl",
"optionen": [
"RAL7035",
"RAL7030"
],
"frei_erlaubt": true,
"frei_option": "Individuell"
}
},
"geometrie_varianten": [
{
"name": "Rohr 1\"",
"beschriftung": {
"text": "Rohr 1\"",
"layer": "D-6-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-6",
"teile": [
{
"artikel": "ROHR R 1\"",
"sivas_id": 821006026,
"farbig": true,
"stueckzahl": 1
}
]
},
{
"name": "Rohr 1\" mit Muffe",
"beschriftung": {
"text": "Rohr 1\"",
"layer": "D-6-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-6",
"teile": [
{
"artikel": "ROHR R 1\" mit Muffe",
"sivas_id": 825004000,
"farbig": true,
"stueckzahl": 1
}
]
},
{
"name": "DRT 80 1\"",
"beschriftung": {
"text": "DRT 80",
"layer": "D-1-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-1",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 80 1\"",
"sivas_id": 825084000,
"farbig": true,
"stueckzahl": 1
}
]
},
{
"name": "DRT 80 1\" mit 2 Muffen",
"beschriftung": {
"text": "DRT 80",
"layer": "D-1-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-1",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 80 1\" mit 2 Muffen",
"sivas_id": 825084007,
"farbig": true,
"stueckzahl": 1
}
]
},
{
"name": "DRT 114 1\"",
"beschriftung": {
"text": "DRT 114",
"layer": "D-3-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-3",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 114 1\"",
"sivas_id": 825104000,
"farbig": true,
"stueckzahl": 1
}
]
},
{
"name": "DRT 114 1\" mit 2 Muffen",
"beschriftung": {
"text": "DRT 114",
"layer": "D-3-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-3",
"teile": [
{
"artikel": "DRT DOPPELROHRTRAEGER 114 1\" mit 2 Muffen",
"sivas_id": 825104007,
"farbig": true,
"stueckzahl": 1
}
]
},
{
"name": "RT 80/80 1\"",
"beschriftung": {
"text": "RT 80/80",
"layer": "D-5-BEM"
},
"teileart": "Geruest Traeger",
"layer": "D-5",
"teile": [
{
"artikel": "RT ROHRTRAEGER 80/80 1\"",
"sivas_id": 825144000,
"farbig": true,
"stueckzahl": 1
}
]
},
{
"name": "RT 80/80 1\" mit 3 Muffen",
"beschriftung": {
"text": "RT 80/80",
"layer": "D-5-BEM"
},
"mit_muffe": true,
"teileart": "Geruest Traeger",
"layer": "D-5",
"teile": [
{
"artikel": "RT ROHRTRAEGER 80/80 1\" mit 3 Muffen",
"sivas_id": 825144007,
"farbig": true,
"stueckzahl": 1
}
]
}
]
}
}
+2 -1
View File
@@ -1003,13 +1003,14 @@
"gr-fehler-baugruppe": "\nGeruest: Baugruppe '%1' steht nicht in der Datendatei.", "gr-fehler-baugruppe": "\nGeruest: Baugruppe '%1' steht nicht in der Datendatei.",
"gr-fehler-keine-varianten": "\nGeruest: Baugruppe '%1' hat keine Geometrie-Varianten.", "gr-fehler-keine-varianten": "\nGeruest: Baugruppe '%1' hat keine Geometrie-Varianten.",
"gr-fehler-dummy": "\nGeruest: Dummy-Baugruppe nicht gefunden: %1", "gr-fehler-dummy": "\nGeruest: Dummy-Baugruppe nicht gefunden: %1",
"gr-fehler-dummy-variante": "\nGeruest: Dummy der Variante nicht gefunden: %1 - verwende Dummy der Baugruppe (%2)",
"gr-fehler-dcl": "Dialog geruest.dcl konnte nicht geladen werden.", "gr-fehler-dcl": "Dialog geruest.dcl konnte nicht geladen werden.",
"gr-dlg-kopf": "%1 konfigurieren", "gr-dlg-kopf": "%1 konfigurieren",
"gr-alert-laenge": "Laenge ungueltig: '%1' mm. Erlaubt: %2 bis %3 mm.", "gr-alert-laenge": "Laenge ungueltig: '%1' mm. Erlaubt: %2 bis %3 mm.",
"gr-prompt-einfuegepunkt": "\nEinfuegepunkt waehlen: ", "gr-prompt-einfuegepunkt": "\nEinfuegepunkt waehlen: ",
"gr-abgebrochen": "\nAbgebrochen.", "gr-abgebrochen": "\nAbgebrochen.",
"gr-fertig": "\nGeruest-Baugruppe '%1' eingefuegt (Block %2).", "gr-fertig": "\nGeruest-Baugruppe '%1' eingefuegt (Block %2).",
"gr-alert-menge": "Ungueltige Stueckzahl. Erlaubt ist eine ganze Zahl ab 1; ein leeres Feld uebernimmt den Vorgabewert.", "gr-alert-menge": "Ungueltige Anzahl. Erlaubt ist eine ganze Zahl ab 1; ein leeres Feld uebernimmt den Vorgabewert.",
"gr-position-oben": "oben", "gr-position-oben": "oben",
"gr-position-unten": "unten", "gr-position-unten": "unten",
"gr-konfig-keine": "<keine>", "gr-konfig-keine": "<keine>",
+1
View File
@@ -1003,6 +1003,7 @@
"gr-fehler-baugruppe": "\nScaffold: assembly '%1' is not in the data file.", "gr-fehler-baugruppe": "\nScaffold: assembly '%1' is not in the data file.",
"gr-fehler-keine-varianten": "\nScaffold: assembly '%1' has no geometry variants.", "gr-fehler-keine-varianten": "\nScaffold: assembly '%1' has no geometry variants.",
"gr-fehler-dummy": "\nScaffold: dummy assembly not found: %1", "gr-fehler-dummy": "\nScaffold: dummy assembly not found: %1",
"gr-fehler-dummy-variante": "\nScaffold: dummy of the variant not found: %1 - using dummy of the assembly (%2)",
"gr-fehler-dcl": "Dialog geruest.dcl could not be loaded.", "gr-fehler-dcl": "Dialog geruest.dcl could not be loaded.",
"gr-dlg-kopf": "Configure %1", "gr-dlg-kopf": "Configure %1",
"gr-alert-laenge": "Invalid length: '%1' mm. Allowed: %2 to %3 mm.", "gr-alert-laenge": "Invalid length: '%1' mm. Allowed: %2 to %3 mm.",
+74 -30
View File
@@ -754,9 +754,9 @@
(if (findfile _datei) (if (findfile _datei)
(progn (progn
(setq _daten (ssg-json-laden _datei)) (setq _daten (ssg-json-laden _datei))
;; Vier Baugruppen: Rohrabhaenger, Saeulen (1 und 2 Zoll ;; Drei Bereiche: Rohrabhaenger, Saeulen (1 und 2 Zoll zusammengefuehrt),
;; zusammengefuehrt), Wandbefestigung, Rohr-Geruest-Traeger ;; Wandbefestigung. Die Traeger liegen in geruest_traeger.json.
(tu-eq "json/geruest-baugruppen" 4 (length _daten)) (tu-eq "json/geruest-baugruppen" 3 (length _daten))
;; Baugruppe ueber das ASCII-Feld "id" finden (aeusserer Schluessel ;; Baugruppe ueber das ASCII-Feld "id" finden (aeusserer Schluessel
;; traegt Umlaute bzw. Anfuehrungszeichen) ;; traegt Umlaute bzw. Anfuehrungszeichen)
(setq _bg nil) (setq _bg nil)
@@ -768,7 +768,7 @@
(progn (progn
(setq _var (ssg-json-get _bg "geometrie_varianten")) (setq _var (ssg-json-get _bg "geometrie_varianten"))
(setq _anb (ssg-json-get _bg "anbaugruppen")) (setq _anb (ssg-json-get _bg "anbaugruppen"))
(tu-eq "json/geruest-varianten" 3 (length _var)) (tu-eq "json/geruest-varianten" 4 (length _var))
(tu-eq "json/geruest-teileart" "Geruest Rohrabhaenger" (tu-eq "json/geruest-teileart" "Geruest Rohrabhaenger"
(ssg-json-get _bg "teileart")) (ssg-json-get _bg "teileart"))
(tu-eq "json/geruest-dummy" "Rohrabhaenger_dummy.dwg" (tu-eq "json/geruest-dummy" "Rohrabhaenger_dummy.dwg"
@@ -824,24 +824,24 @@
(tu-eq "geruest-id-string/str" "0_B10071" (geruest-id-string "0_B10071")) (tu-eq "geruest-id-string/str" "0_B10071" (geruest-id-string "0_B10071"))
(tu-eq "geruest-id-string/nil" nil (geruest-id-string nil)) (tu-eq "geruest-id-string/nil" nil (geruest-id-string nil))
;; Einzelteil mit menge 2 -> Artikelnummer zweimal (ARTINR-Regel) ;; Einzelteil mit stueckzahl 2 -> Artikelnummer zweimal (ARTINR-Regel)
(setq _eintrag (ssg-json-parse (setq _eintrag (ssg-json-parse
"{\"artikel\": \"X\", \"sivas_id\": 825002019, \"menge\": 2}")) "{\"artikel\": \"X\", \"sivas_id\": 825002019, \"stueckzahl\": 2}"))
(tu-eq "geruest-artnr/menge2" '("825002019" "825002019") (tu-eq "geruest-artnr/stueckzahl2" '("825002019" "825002019")
(geruest-artikelnummern _eintrag)) (geruest-artikelnummern _eintrag))
(tu-eq "geruest-name/artikel" "X" (geruest-eintrag-name _eintrag)) (tu-eq "geruest-name/artikel" "X" (geruest-eintrag-name _eintrag))
;; Benannte Gruppe -> teile rekursiv aufloesen, Mengen beachten ;; Benannte Gruppe -> teile rekursiv aufloesen, Mengen beachten
(setq _gruppe (ssg-json-parse (setq _gruppe (ssg-json-parse
(strcat "{\"name\": \"Schraubenset\", \"teile\": [" (strcat "{\"name\": \"Schraubenset\", \"teile\": ["
"{\"artikel\": \"A\", \"sivas_id\": 111, \"menge\": 1}," "{\"artikel\": \"A\", \"sivas_id\": 111, \"stueckzahl\": 1},"
"{\"artikel\": \"B\", \"sivas_id\": 222, \"menge\": 2}]}"))) "{\"artikel\": \"B\", \"sivas_id\": 222, \"stueckzahl\": 2}]}")))
(tu-eq "geruest-artnr/gruppe" '("111" "222" "222") (tu-eq "geruest-artnr/gruppe" '("111" "222" "222")
(geruest-artikelnummern _gruppe)) (geruest-artikelnummern _gruppe))
(tu-eq "geruest-name/gruppe" "Schraubenset" (geruest-eintrag-name _gruppe)) (tu-eq "geruest-name/gruppe" "Schraubenset" (geruest-eintrag-name _gruppe))
;; Fehlendes menge-Feld -> 1 ;; Fehlendes stueckzahl-Feld -> 1
(tu-eq "geruest-artnr/ohne-menge" '("333") (tu-eq "geruest-artnr/ohne-stueckzahl" '("333")
(geruest-artikelnummern (geruest-artikelnummern
(ssg-json-parse "{\"artikel\": \"C\", \"sivas_id\": 333}"))) (ssg-json-parse "{\"artikel\": \"C\", \"sivas_id\": 333}")))
@@ -859,21 +859,62 @@
(tu-eq "geruest-teile-dwgs/vorhanden" (list _pfad) (tu-eq "geruest-teile-dwgs/vorhanden" (list _pfad)
(geruest-teile-dwgs '("825002019" "999999999" "825002019"))) (geruest-teile-dwgs '("825002019" "999999999" "825002019")))
) )
;; --- Anzahl-Vorgabe (Dialogfeld) vs. stueckzahl (wirklich geschrieben) ---
(tu-eq "geruest-anzahl-vorgabe/gruppe" 2
(geruest-anzahl-vorgabe (ssg-json-parse
"{\"name\": \"G\", \"anzahl_vorgabe\": 2, \"teile\": [{\"sivas_id\": 1, \"stueckzahl\": 1}]}")))
;; stueckzahl ist KEINE Vorgabe fuer das Dialogfeld
(tu-eq "geruest-anzahl-vorgabe/stueckzahl-zaehlt-nicht" 1
(geruest-anzahl-vorgabe (ssg-json-parse "{\"sivas_id\": 1, \"stueckzahl\": 3}")))
(tu-eq "geruest-anzahl-vorgabe/ohne" 1
(geruest-anzahl-vorgabe (ssg-json-parse "{\"name\": \"G\", \"teile\": []}")))
;; anzahl_vorgabe bestimmt nur die Vorbelegung, nicht den Satzinhalt:
;; 3 Saetze a (1 Schraube + 1 Duebel) = 6 Nummern
(tu-eq "geruest-artikelnummern-n/anzahl-vorgabe" '("1" "2" "1" "2" "1" "2")
(geruest-artikelnummern-n (ssg-json-parse
"{\"name\": \"G\", \"anzahl_vorgabe\": 2, \"teile\": [{\"sivas_id\": 1, \"stueckzahl\": 1}, {\"sivas_id\": 2, \"stueckzahl\": 1}]}")
3))
;; Einzelteil-Anbauteil: Anzahl x stueckzahl
(tu-eq "geruest-artikelnummern-n/einzelteil-stueckzahl" '("7" "7" "7" "7")
(geruest-artikelnummern-n (ssg-json-parse
"{\"artikel\": \"X\", \"sivas_id\": 7, \"stueckzahl\": 2, \"anzahl_vorgabe\": 5}")
2))
;; Dummy, der zugleich Teile-DWG ist, faellt aus der Teileliste
(tu-eq "geruest-ohne-pfad/entfernt" '("b/2.dwg")
(geruest-ohne-pfad "A/1.DWG" '("a/1.dwg" "b/2.dwg")))
(tu-eq "geruest-ohne-pfad/nil" '("a/1.dwg")
(geruest-ohne-pfad nil '("a/1.dwg")))
;; Dummy-Wahl: Variante gewinnt, fehlende Varianten-DWG -> Baugruppe
(setq _pfad (geruest-dummy-pfad "821006036.dwg"))
(if (and _pfad (findfile _pfad))
(tu-eq "geruest-dummy-wahl/variante" "821006036.dwg"
(car (geruest-dummy-wahl
(ssg-json-parse "{\"dummy\": \"821006036.dwg\"}")
(ssg-json-parse "{\"dummy\": \"basis.dwg\"}"))))
)
(tu-eq "geruest-dummy-wahl/fehlt" "basis.dwg"
(car (geruest-dummy-wahl
(ssg-json-parse "{\"dummy\": \"gibtsnicht_999.dwg\"}")
(ssg-json-parse "{\"dummy\": \"basis.dwg\"}"))))
(tu-eq "geruest-dummy-wahl/ohne" "basis.dwg"
(car (geruest-dummy-wahl
(ssg-json-parse "{\"name\": \"X\"}")
(ssg-json-parse "{\"dummy\": \"basis.dwg\"}"))))
;; --- Mengenfeld --- ;; --- Mengenfeld ---
(tu-eq "geruest-zahl-p/ziffern" T (geruest-zahl-p "12")) (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/text" nil (geruest-zahl-p "1a"))
(tu-eq "geruest-zahl-p/leer" nil (geruest-zahl-p "")) (tu-eq "geruest-zahl-p/leer" nil (geruest-zahl-p ""))
;; Leeres Feld uebernimmt die JSON-Vorgabe, ungueltiges liefert nil ;; Leeres Feld uebernimmt die JSON-Vorgabe, ungueltiges liefert nil
(tu-eq "geruest-menge-wert/leer" 2 (geruest-menge-wert "" 2)) (tu-eq "geruest-anzahl-wert/leer" 2 (geruest-anzahl-wert "" 2))
(tu-eq "geruest-menge-wert/zahl" 5 (geruest-menge-wert "5" 2)) (tu-eq "geruest-anzahl-wert/zahl" 5 (geruest-anzahl-wert "5" 2))
(tu-eq "geruest-menge-wert/null" nil (geruest-menge-wert "0" 2)) (tu-eq "geruest-anzahl-wert/null" nil (geruest-anzahl-wert "0" 2))
(tu-eq "geruest-menge-wert/text" nil (geruest-menge-wert "abc" 2)) (tu-eq "geruest-anzahl-wert/text" nil (geruest-anzahl-wert "abc" 2))
(tu-eq "geruest-menge-wert/negativ" nil (geruest-menge-wert "-3" 2)) (tu-eq "geruest-anzahl-wert/negativ" nil (geruest-anzahl-wert "-3" 2))
;; --- Stueckzahl ersetzt die JSON-Menge (Einzelteil) --- ;; --- Einzelteil: Anzahl (Dialog) x stueckzahl (JSON, hier 2) ---
(tu-eq "geruest-artnr-n/einzelteil" '("825002019" "825002019" "825002019") (tu-eq "geruest-artnr-n/einzelteil" 6
(geruest-artikelnummern-n _eintrag 3)) (length (geruest-artikelnummern-n _eintrag 3)))
;; --- Gruppe: ganzes Set n-mal, Mengen INNERHALB bleiben erhalten --- ;; --- Gruppe: ganzes Set n-mal, Mengen INNERHALB bleiben erhalten ---
(tu-eq "geruest-artnr-n/gruppe" '("111" "222" "222" "111" "222" "222") (tu-eq "geruest-artnr-n/gruppe" '("111" "222" "222" "111" "222" "222")
(geruest-artikelnummern-n _gruppe 2)) (geruest-artikelnummern-n _gruppe 2))
@@ -894,7 +935,7 @@
(setq _teile (ssg-json-parse (setq _teile (ssg-json-parse
(strcat "{\"name\": \"Set\", \"farbig\": true, \"teile\": [" (strcat "{\"name\": \"Set\", \"farbig\": true, \"teile\": ["
"{\"artikel\": \"A\", \"sivas_id\": 111}," "{\"artikel\": \"A\", \"sivas_id\": 111},"
"{\"artikel\": \"B\", \"sivas_id\": 222, \"menge\": 2}]}"))) "{\"artikel\": \"B\", \"sivas_id\": 222, \"stueckzahl\": 2}]}")))
(tu-eq "geruest-paare/gruppe-erbt" '(("111" . T) ("222" . T) ("222" . T)) (tu-eq "geruest-paare/gruppe-erbt" '(("111" . T) ("222" . T) ("222" . T))
(geruest-teile-paare _teile nil)) (geruest-teile-paare _teile nil))
(tu-eq "geruest-paare-n/gruppe" 6 (length (geruest-teile-paare-n _teile 2))) (tu-eq "geruest-paare-n/gruppe" 6 (length (geruest-teile-paare-n _teile 2)))
@@ -934,8 +975,8 @@
;; die ganze Konfiguration verworfen) ;; die ganze Konfiguration verworfen)
(setq _konfig (ssg-json-parse (setq _konfig (ssg-json-parse
(strcat "{\"name\": \"K1\", \"oben\": [" (strcat "{\"name\": \"K1\", \"oben\": ["
"{\"artikel\": \"Schraubenset\", \"menge\": 3}," "{\"artikel\": \"Schraubenset\", \"anzahl\": 3},"
"{\"artikel\": \"unbekannt\", \"menge\": 1}]}"))) "{\"artikel\": \"unbekannt\", \"anzahl\": 1}]}")))
(tu-eq "geruest-konfig-position" '(nil 3) (tu-eq "geruest-konfig-position" '(nil 3)
(geruest-konfig-position _konfig "oben" _teile)) (geruest-konfig-position _konfig "oben" _teile))
@@ -1172,18 +1213,21 @@
_bgtest "LAENGENABZUGENDE" "aktiv")) _bgtest "LAENGENABZUGENDE" "aktiv"))
;; --- Rohr-Geruest-Traeger in der echten Datendatei --- ;; --- Rohr-Geruest-Traeger in der echten Datendatei ---
;; Eigener Dialog: im Bereichs-Dropdown von GERUEST darf er fehlen, ;; Eigene Datei data/json/geruest_traeger.json: im Bereichs-Dropdown von
;; ueber geruest-baugruppe muss er aber auffindbar sein. ;; GERUEST darf er nicht auftauchen, ueber geruest-traeger-daten muss er
;; auffindbar sein.
(setq _rec nil) (setq _rec nil)
(foreach _e (geruest-baugruppen-liste) (foreach _e (geruest-baugruppen-liste)
(if (equal (car _e) "Traeger") (setq _rec T))) (if (equal (car _e) "Traeger") (setq _rec T)))
(tu-nil "geruest/traeger-nicht-im-dropdown" _rec) (tu-nil "geruest/traeger-nicht-im-dropdown" _rec)
(setq _traeger (geruest-baugruppe "Traeger")) (tu-true "geruest/traeger-datei"
(findfile (geruest-json-pfad "geruest_traeger.json")))
(setq _traeger (geruest-baugruppe "Traeger" (geruest-traeger-daten)))
(tu-true "geruest/traeger-vorhanden" _traeger) (tu-true "geruest/traeger-vorhanden" _traeger)
(tu-nil "geruest/traeger-nicht-in-geruest-json"
(geruest-baugruppe "Traeger" (geruest-daten)))
(if _traeger (if _traeger
(progn (progn
(tu-eq "geruest/traeger-einfuegeart" "linie"
(ssg-json-get _traeger "einfuegeart"))
(tu-eq "geruest/traeger-varianten-artikel" 0 (tu-eq "geruest/traeger-varianten-artikel" 0
(tu-geruest-artikel-unvollstaendig (tu-geruest-artikel-unvollstaendig
(ssg-json-get _traeger "geometrie_varianten"))) (ssg-json-get _traeger "geometrie_varianten")))
@@ -1236,7 +1280,7 @@
(cons "laenge" "2000") (cons "laenge" "2000")
(cons "teilefarbe" "RAL 7035 Lichtgrau") (cons "teilefarbe" "RAL 7035 Lichtgrau")
(cons "oben" (list (list (cons "artikel" "ROHRKLAMMER 1\" KPL. VERTIKAL") (cons "oben" (list (list (cons "artikel" "ROHRKLAMMER 1\" KPL. VERTIKAL")
(cons "menge" 2)))) (cons "anzahl" 2))))
(cons "unten" nil))) (cons "unten" nil)))
(setq _pfad (vl-filename-mktemp "grtest" nil ".json")) (setq _pfad (vl-filename-mktemp "grtest" nil ".json"))
(setq _f (open _pfad "w")) (setq _f (open _pfad "w"))
@@ -1256,8 +1300,8 @@
(ssg-json-get _zurueck "teilefarbe")) (ssg-json-get _zurueck "teilefarbe"))
(tu-eq "geruest-schreiber/oben-artikel" "ROHRKLAMMER 1\" KPL. VERTIKAL" (tu-eq "geruest-schreiber/oben-artikel" "ROHRKLAMMER 1\" KPL. VERTIKAL"
(ssg-json-get (car (ssg-json-get _zurueck "oben")) "artikel")) (ssg-json-get (car (ssg-json-get _zurueck "oben")) "artikel"))
(tu-eq "geruest-schreiber/oben-menge" 2 (tu-eq "geruest-schreiber/oben-anzahl" 2
(ssg-json-get (car (ssg-json-get _zurueck "oben")) "menge")) (ssg-json-get (car (ssg-json-get _zurueck "oben")) "anzahl"))
(tu-eq "geruest-schreiber/unten-leer" nil (tu-eq "geruest-schreiber/unten-leer" nil
(ssg-json-get _zurueck "unten")) (ssg-json-get _zurueck "unten"))
) )