[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:
+125
-72
@@ -5,6 +5,7 @@
|
||||
;; Nutzer eine Basis-Variante, Anbauteile fuer "Befestigung oben" UND
|
||||
;; "Befestigung unten" (je mit eigener Stueckzahl), Laenge und Farbe waehlen,
|
||||
;; 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
|
||||
;; 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))
|
||||
(strcat basis "/json/geruest.json")
|
||||
(strcat basis "/json/" datei)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -112,36 +114,48 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; Datendatei einmal je Zeichnungssitzung laden.
|
||||
(defun geruest-daten ( / pfad)
|
||||
(if (null *geruest-daten*)
|
||||
;; Datendatei unter data/json einmal je Zeichnungssitzung laden und im
|
||||
;; globalen Symbol cache-sym ablegen. Rueckgabe: die geparsten Daten oder nil
|
||||
;; (mit Meldung).
|
||||
(defun geruest-json-laden-cache (datei cache-sym / pfad daten)
|
||||
(if (null (eval cache-sym))
|
||||
(progn
|
||||
(setq pfad (geruest-json-pfad))
|
||||
(setq pfad (geruest-json-pfad datei))
|
||||
(cond
|
||||
((null pfad) (princ (ssg-text "gr-fehler-datenpfad")))
|
||||
((null (findfile pfad)) (princ (ssg-textf "gr-fehler-json-fehlt" (list pfad))))
|
||||
(T
|
||||
(setq *geruest-daten* (ssg-json-laden pfad))
|
||||
(if (null *geruest-daten*)
|
||||
(setq daten (ssg-json-laden pfad))
|
||||
(set cache-sym daten)
|
||||
(if (null daten)
|
||||
(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
|
||||
;; Reihenfolge bestimmt auch die Reihenfolge im Bereichs-Dropdown.
|
||||
;; Baugruppen mit "einfuegeart": "linie" (Rohr-Geruest-Traeger) fehlen hier:
|
||||
;; sie haben einen eigenen Dialog und einen eigenen Einfuegeablauf
|
||||
;; (c:GERUEST_TRAEGER) und gehoeren nicht in das Bereichs-Dropdown.
|
||||
;; Reihenfolge bestimmt auch die Reihenfolge im Bereichs-Dropdown. Die
|
||||
;; Traeger stehen in geruest_traeger.json und gehoeren nicht hierher.
|
||||
(defun geruest-baugruppen-liste ( / erg)
|
||||
(setq erg nil)
|
||||
(foreach eintrag (geruest-daten)
|
||||
(if (and (listp (cdr eintrag))
|
||||
(not (equal (ssg-json-get (cdr eintrag) "einfuegeart") "linie")))
|
||||
(if (listp (cdr eintrag))
|
||||
(setq erg (append erg
|
||||
(list (cons (ssg-json-get (cdr eintrag) "id") (cdr eintrag)))))
|
||||
)
|
||||
@@ -169,6 +183,40 @@
|
||||
(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
|
||||
@@ -184,9 +232,23 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defun geruest-menge (eintrag / m)
|
||||
(setq m (ssg-json-get eintrag "menge"))
|
||||
(if (and m (numberp m) (> m 0)) (fix m) 1)
|
||||
;; Zwei Mengenfelder im JSON, bewusst verschieden benannt:
|
||||
;; "stueckzahl" = wie oft das Teil TATSAECHLICH geschrieben wird - je
|
||||
;; 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
|
||||
@@ -212,7 +274,7 @@
|
||||
)
|
||||
|
||||
;; 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
|
||||
;; 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.
|
||||
@@ -229,12 +291,12 @@
|
||||
(setq erg (mapcar '(lambda (nr) (cons nr farbig))
|
||||
(geruest-wiederholen
|
||||
(geruest-id-string (ssg-json-get eintrag "sivas_id"))
|
||||
(geruest-menge eintrag))))
|
||||
(geruest-stueckzahl eintrag))))
|
||||
)
|
||||
erg
|
||||
)
|
||||
|
||||
;; Alle Artikelnummern eines Eintrags, jede gemaess "menge" wiederholt.
|
||||
;; Alle Artikelnummern eines Eintrags, jede gemaess "stueckzahl" wiederholt.
|
||||
(defun geruest-artikelnummern (eintrag)
|
||||
(mapcar 'car (geruest-teile-paare eintrag nil))
|
||||
)
|
||||
@@ -289,7 +351,7 @@
|
||||
|
||||
;; Eingabe aus einem Mengenfeld auswerten.
|
||||
;; 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 "")))
|
||||
(cond
|
||||
((= s "") vorgabe)
|
||||
@@ -310,30 +372,18 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; Artikelnummern eines Eintrags bei frei gewaehlter Stueckzahl.
|
||||
;; Einzelteil: die Sivas-ID anzahl-mal. Benannte Gruppe ("teile"): das
|
||||
;; komplette Set anzahl-mal - die Mengen INNERHALB des Sets bleiben erhalten
|
||||
;; Teile eines Anbauteils bei der im Dialog gewaehlten Anzahl: der Eintrag
|
||||
;; (Einzelteil mit seiner "stueckzahl" bzw. benannte Gruppe als kompletter
|
||||
;; Satz) anzahl-mal. Die Stueckzahlen INNERHALB eines Satzes bleiben erhalten
|
||||
;; (ein Schraubenset bleibt 1 Scheibe + 2 Muttern + 1 Schraube je Satz).
|
||||
(defun geruest-teile-paare-n (eintrag anzahl / teile einmal erg i farbig)
|
||||
(setq teile (ssg-json-get eintrag "teile"))
|
||||
(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)
|
||||
(while (< i anzahl)
|
||||
(setq erg (append erg einmal))
|
||||
(setq i (1+ i))
|
||||
)
|
||||
erg
|
||||
)
|
||||
(mapcar '(lambda (nr) (cons nr farbig))
|
||||
(geruest-wiederholen
|
||||
(geruest-id-string (ssg-json-get eintrag "sivas_id")) anzahl))
|
||||
(defun geruest-teile-paare-n (eintrag anzahl / einmal erg i)
|
||||
(setq einmal (geruest-teile-paare eintrag nil))
|
||||
(setq erg nil i 0)
|
||||
(while (< i anzahl)
|
||||
(setq erg (append erg einmal))
|
||||
(setq i (1+ i))
|
||||
)
|
||||
erg
|
||||
)
|
||||
|
||||
(defun geruest-artikelnummern-n (eintrag anzahl)
|
||||
@@ -441,7 +491,7 @@
|
||||
|
||||
;; Positionsliste ("oben"/"unten") einer Konfiguration auf die Anbauteile
|
||||
;; 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.
|
||||
(defun geruest-konfig-position (konfig schluessel anbauteile / mengen idx n)
|
||||
(setq mengen (geruest-nil-liste (length anbauteile)))
|
||||
@@ -449,7 +499,7 @@
|
||||
(setq idx (geruest-name-index (ssg-json-get e "artikel") anbauteile))
|
||||
(if idx
|
||||
(progn
|
||||
(setq n (ssg-json-get e "menge"))
|
||||
(setq n (ssg-json-get e "anzahl"))
|
||||
(setq mengen (geruest-liste-setzen mengen idx
|
||||
(if (and n (numberp n) (> n 0)) (fix n) 1)))
|
||||
)
|
||||
@@ -583,20 +633,20 @@
|
||||
(defun geruest-dlg-standard ( / erg)
|
||||
(setq erg nil)
|
||||
(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
|
||||
)
|
||||
|
||||
;; 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)
|
||||
(foreach m mengen
|
||||
(setq a (nth i *geruest-anbauteile*))
|
||||
(setq erg (append erg
|
||||
(list (if m
|
||||
(cons "1" (itoa m))
|
||||
(cons "0" (itoa (geruest-menge a)))))))
|
||||
(cons "0" (itoa (geruest-anzahl-vorgabe a)))))))
|
||||
(setq i (1+ i))
|
||||
)
|
||||
erg
|
||||
@@ -720,10 +770,10 @@
|
||||
*geruest-dlg-frei* farbe))
|
||||
)
|
||||
(setq *geruest-dlg-oben*
|
||||
(geruest-mengen->tiles
|
||||
(geruest-anzahlen->tiles
|
||||
(geruest-konfig-position k "oben" *geruest-anbauteile*)))
|
||||
(setq *geruest-dlg-unten*
|
||||
(geruest-mengen->tiles
|
||||
(geruest-anzahlen->tiles
|
||||
(geruest-konfig-position k "unten" *geruest-anbauteile*)))
|
||||
)
|
||||
)
|
||||
@@ -745,16 +795,16 @@
|
||||
)
|
||||
|
||||
;; 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
|
||||
;; 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)
|
||||
(foreach paar zustand
|
||||
(setq a (nth i *geruest-anbauteile*))
|
||||
(if (and ok (= (car paar) "1"))
|
||||
(progn
|
||||
(setq m (geruest-menge-wert (cdr paar) (geruest-menge a)))
|
||||
(setq m (geruest-anzahl-wert (cdr paar) (geruest-anzahl-vorgabe a)))
|
||||
(if m
|
||||
(setq erg (append erg (list (cons i m))))
|
||||
(setq ok nil)
|
||||
@@ -788,11 +838,11 @@
|
||||
(setq a (nth i *geruest-anbauteile*))
|
||||
(if (= (car paar) "1")
|
||||
(progn
|
||||
(setq m (geruest-menge-wert (cdr paar) (geruest-menge a)))
|
||||
(setq m (geruest-anzahl-wert (cdr paar) (geruest-anzahl-vorgabe a)))
|
||||
(if m
|
||||
(setq erg (append erg
|
||||
(list (list (cons "artikel" (geruest-eintrag-name a))
|
||||
(cons "menge" m)))))
|
||||
(cons "anzahl" m)))))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -818,7 +868,7 @@
|
||||
(write-line
|
||||
(strcat " { \"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) "," ""))
|
||||
f)
|
||||
)
|
||||
@@ -963,7 +1013,7 @@
|
||||
)
|
||||
|
||||
;; 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
|
||||
;; ("WECHSEL" bereich-index) - Nutzer hat den Bereich umgestellt
|
||||
;; nil - abgebrochen
|
||||
@@ -1120,8 +1170,8 @@
|
||||
)
|
||||
|
||||
(T
|
||||
(setq oben-m (geruest-mengen-lesen *geruest-dlg-oben*))
|
||||
(setq unten-m (geruest-mengen-lesen *geruest-dlg-unten*))
|
||||
(setq oben-m (geruest-anzahlen-lesen *geruest-dlg-oben*))
|
||||
(setq unten-m (geruest-anzahlen-lesen *geruest-dlg-unten*))
|
||||
(if (or (null oben-m) (null unten-m))
|
||||
(alert (ssg-text "gr-alert-menge"))
|
||||
(progn
|
||||
@@ -1170,10 +1220,14 @@
|
||||
;; Rueckgabe: (blockname . entity) oder nil.
|
||||
(defun geruest-block-bauen (bg variante werte pt teile-dwgs / datei dummy lastEnt dummyEnt
|
||||
dummy-attribs attribs)
|
||||
;; Eine Variante darf eine eigene Dummy-DWG mitbringen; sonst gilt die der
|
||||
;; Baugruppe.
|
||||
(setq datei (geruest-variante-wert variante bg "dummy"))
|
||||
(setq dummy (geruest-dummy-pfad datei))
|
||||
;; Eine Variante darf eine eigene Dummy-DWG mitbringen; sonst (oder wenn
|
||||
;; deren Datei fehlt) gilt die der Baugruppe.
|
||||
(setq datei (geruest-dummy-wahl variante bg))
|
||||
(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)))
|
||||
(progn
|
||||
(princ (ssg-textf "gr-fehler-dummy" (list (if dummy dummy datei))))
|
||||
@@ -1269,7 +1323,7 @@
|
||||
;; ============================================================
|
||||
|
||||
;; Teile-Paare ((artnr . farbig) ...) einer Befestigungsauswahl
|
||||
;; ((index . menge) ...).
|
||||
;; ((index . anzahl) ...).
|
||||
(defun geruest-auswahl-paare (auswahl anbauteile / erg)
|
||||
(setq erg nil)
|
||||
(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
|
||||
;; Laengenabzuege. Die Laenge selbst wird DANACH in der Zeichnung bestimmt -
|
||||
@@ -1425,11 +1479,10 @@
|
||||
;; Richtungswinkel eingefuegt. Es wird wiederholt eingefuegt, bis der Nutzer
|
||||
;; ESC/Enter drueckt - jeder Traeger ist ein eigener GR_Traeger_<ts>-Block.
|
||||
|
||||
;; Baugruppe ueber das ASCII-Feld "id" (auch solche, die
|
||||
;; geruest-baugruppen-liste auslaesst).
|
||||
(defun geruest-baugruppe (id / erg)
|
||||
;; Baugruppe ueber das ASCII-Feld "id" in daten (z.B. (geruest-traeger-daten)).
|
||||
(defun geruest-baugruppe (id daten / erg)
|
||||
(setq erg nil)
|
||||
(foreach eintrag (geruest-daten)
|
||||
(foreach eintrag daten
|
||||
(if (and (null erg) (listp (cdr eintrag))
|
||||
(equal (ssg-json-get (cdr eintrag) "id") id))
|
||||
(setq erg (cdr eintrag))
|
||||
@@ -2098,7 +2151,7 @@
|
||||
cfg laenge lage lay handle code erg)
|
||||
(setq ed (entget 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"))))
|
||||
(if (and bg (> laenge 0.0))
|
||||
(progn
|
||||
@@ -2190,7 +2243,7 @@
|
||||
)
|
||||
|
||||
(defun c:GERUEST_TRAEGER ( / bg wahl)
|
||||
(setq bg (geruest-baugruppe "Traeger"))
|
||||
(setq bg (geruest-baugruppe "Traeger" (geruest-traeger-daten)))
|
||||
(cond
|
||||
((null bg)
|
||||
(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.
Binary file not shown.
+91
-243
@@ -29,13 +29,13 @@
|
||||
"artikel": "ROHR R 1\" 33,7 x 2,6",
|
||||
"sivas_id": 821006026,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "CAD - ROHRABH. 1\" NICHT GEQUETSCHT - MONTAGEELEMENTE KPL.",
|
||||
"sivas_id": 821004202,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -46,13 +46,13 @@
|
||||
"artikel": "ROHR R 1\" 33,7 x 2,6 einseitig gequetscht",
|
||||
"sivas_id": 821006034,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "CAD - ROHRABHÄNGER 1\" EINSEITIG GEQUETSCHT - MONTAGEELEMENTE KPL.",
|
||||
"sivas_id": 821004203,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -63,13 +63,25 @@
|
||||
"artikel": "ROHR R 1\" 33,7 x 2,6 beidseitig gequetscht",
|
||||
"sivas_id": 821006035,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "CAD - ROHRABHÄNGER 1\" BEIDSEITIG GEQUETSCHT - MONTAGEELEMENTE KPL.",
|
||||
"sivas_id": 821004204,
|
||||
"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",
|
||||
"sivas_id": 821004120,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "SPANNPRATZE SELBSTSICHERND KPL.",
|
||||
"sivas_id": 821004058,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"name": "Schraubenset",
|
||||
"anzahl_vorgabe": 1,
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "Scheibe DIN 125 - A 10,5 - 140 HV - St",
|
||||
"sivas_id": 913011010,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "Sechskantmutter DIN 934 - M10 - 8",
|
||||
"sivas_id": 912011010,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 2
|
||||
},
|
||||
{
|
||||
"artikel": "Sechskantschraube DIN 933 - M10 x 30 - 8.8",
|
||||
"sivas_id": 911011008,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -114,43 +129,50 @@
|
||||
"artikel": "U-BÜGEL M7 41X49 FÜR PROFILGERÜST - BG",
|
||||
"sivas_id": 825004049,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "ROHRKLAMMER 1\" KPL. VERTIKAL",
|
||||
"sivas_id": 825004040,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "WINKEL 60X60X6X300",
|
||||
"sivas_id": 821006043,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "WINKEL 60X60X6X60",
|
||||
"sivas_id": 821006042,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "ROHRKLAMMER 1\" T-VERBINDUNG KPL.",
|
||||
"sivas_id": 825004030,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "ROHRKLAMMER 1\" FLACH UND LANG, KPL.",
|
||||
"sivas_id": 825002021,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "DURCHSTECKANKER HST M12X115X20",
|
||||
"sivas_id": 922021003,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
}
|
||||
],
|
||||
"konfigurationen": [
|
||||
@@ -162,17 +184,17 @@
|
||||
"oben": [
|
||||
{
|
||||
"artikel": "SPANNPRATZE SELBSTSICHERND KPL.",
|
||||
"menge": 1
|
||||
"anzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "Schraubenset",
|
||||
"menge": 1
|
||||
"anzahl": 1
|
||||
}
|
||||
],
|
||||
"unten": [
|
||||
{
|
||||
"artikel": "ROHRKLAMMER 1\" KPL. VERTIKAL",
|
||||
"menge": 2
|
||||
"anzahl": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -184,13 +206,13 @@
|
||||
"oben": [
|
||||
{
|
||||
"artikel": "DURCHSTECKANKER HST M12X115X20",
|
||||
"menge": 2
|
||||
"anzahl": 2
|
||||
}
|
||||
],
|
||||
"unten": [
|
||||
{
|
||||
"artikel": "ROHRKLAMMER 1\" T-VERBINDUNG KPL.",
|
||||
"menge": 1
|
||||
"anzahl": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -200,7 +222,7 @@
|
||||
"id": "Saeulen",
|
||||
"titel": "Saeulen",
|
||||
"teileart": "Geruest Saeule",
|
||||
"dummy": "R2-Saeule_dummy.dwg",
|
||||
"dummy": "821006051.dwg",
|
||||
"attribute": {
|
||||
"LAENGE": {
|
||||
"typ": "number",
|
||||
@@ -239,31 +261,32 @@
|
||||
"artikel": "BODENSÄULE R 2\" 60,3 MIT FUSSPLATTE",
|
||||
"sivas_id": 821006051,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "CAD - BODENSÄULE R 2\" - DURCHSTECKANKER KPL.",
|
||||
"sivas_id": 821004201,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "R 1\"",
|
||||
"teileart": "Geruest Saeule 1 Zoll",
|
||||
"dummy": "821004200.dwg",
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "ROHR R 1\" 33,7 x 2,6",
|
||||
"sivas_id": 821006026,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "CAD - BODENSÄULE R 1\" - BODENPLATTE KPL.",
|
||||
"sivas_id": 821004200,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -273,67 +296,78 @@
|
||||
"artikel": "KLEMMRING MIT MUFFE EINFACH KPL.",
|
||||
"sivas_id": 825002019,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "KLEMMRING MIT MUFFE DOPPELT 90 Grad, KPL.",
|
||||
"sivas_id": 825002009,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "KLEMMRING MIT MUFFE DOPPELT 180 Grad, KPL.",
|
||||
"sivas_id": 825002008,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "KLEMMRING M. MUFFE DREIFACH 90 Grad/180 Grad KPL.",
|
||||
"sivas_id": 825002007,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "KLEMMRING MIT LASCHE KPL. ZUSAMMENBAUZEICHNUNG",
|
||||
"sivas_id": 825002020,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "QUERSCHELLE F. 1\" UND 2\" ROHR GESCHW./VZ. M. 4X M10X30 KPL.",
|
||||
"sivas_id": 825002022,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "KREUZSCHELLE F. 2\" UND 1\" ROHR SCHWENKBAR 360 Grad",
|
||||
"sivas_id": 922083009,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 2
|
||||
},
|
||||
{
|
||||
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 1-ARMIG KPL.",
|
||||
"sivas_id": 821004051,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 2-ARMIG 90 Grad KPL.",
|
||||
"sivas_id": 821004054,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 2-ARMIG 180 Grad KPL.",
|
||||
"sivas_id": 821004052,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
},
|
||||
{
|
||||
"artikel": "HALTEARM FÜR BODENSÄULE R 2\" 3-ARMIG KPL.",
|
||||
"sivas_id": 821004053,
|
||||
"farbig": true,
|
||||
"menge": 1
|
||||
"stueckzahl": 1,
|
||||
"anzahl_vorgabe": 1
|
||||
}
|
||||
],
|
||||
"konfigurationen": [
|
||||
@@ -353,7 +387,7 @@
|
||||
"oben": [
|
||||
{
|
||||
"artikel": "KLEMMRING MIT MUFFE EINFACH KPL.",
|
||||
"menge": 2
|
||||
"anzahl": 2
|
||||
}
|
||||
],
|
||||
"unten": []
|
||||
@@ -366,13 +400,13 @@
|
||||
"oben": [
|
||||
{
|
||||
"artikel": "KLEMMRING MIT MUFFE DOPPELT 90 Grad, KPL.",
|
||||
"menge": 2
|
||||
"anzahl": 2
|
||||
}
|
||||
],
|
||||
"unten": [
|
||||
{
|
||||
"artikel": "QUERSCHELLE F. 1\" UND 2\" ROHR GESCHW./VZ. M. 4X M10X30 KPL.",
|
||||
"menge": 2
|
||||
"anzahl": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -386,45 +420,49 @@
|
||||
"geometrie_varianten": [
|
||||
{
|
||||
"name": "WANDFLANSCH EINZELTEIL",
|
||||
"dummy": "821006031.dwg",
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "WANDFLANSCH EINZELTEIL",
|
||||
"sivas_id": 821006031,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "WINKEL 60X60X6X60",
|
||||
"dummy": "821006042.dwg",
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "WINKEL 60X60X6X60",
|
||||
"sivas_id": 821006042,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "WINKEL 60X60X6X300",
|
||||
"dummy": "821006043.dwg",
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "WINKEL 60X60X6X300",
|
||||
"sivas_id": 821006043,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ROHRSCHELLE 1\" OBERTEIL",
|
||||
"dummy": "825006009.dwg",
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "ROHRSCHELLE 1\" OBERTEIL",
|
||||
"sivas_id": 825006009,
|
||||
"farbig": false,
|
||||
"menge": 1
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -432,29 +470,31 @@
|
||||
"anbaugruppen": [
|
||||
{
|
||||
"name": "Nylondübel 12x60 inkl. Holzschrauben",
|
||||
"anzahl_vorgabe": 2,
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "HOLZSCHRAUB,10X70, 6KT DIN 571 VZ",
|
||||
"sivas_id": 911271027,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1
|
||||
},
|
||||
{
|
||||
"artikel": "NYLON - DUEBEL 12X60 (TYP S)",
|
||||
"sivas_id": 922013003,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "HST M12X115X20",
|
||||
"anzahl_vorgabe": 2,
|
||||
"teile": [
|
||||
{
|
||||
"artikel": "DURCHSTECKANKER HST M12X115X20 WANDABH.",
|
||||
"sivas_id": 922021003,
|
||||
"farbig": false,
|
||||
"menge": 2
|
||||
"stueckzahl": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -466,7 +506,7 @@
|
||||
"oben": [
|
||||
{
|
||||
"artikel": "Nylondübel 12x60 inkl. Holzschrauben",
|
||||
"menge": 1
|
||||
"anzahl": 2
|
||||
}
|
||||
],
|
||||
"unten": []
|
||||
@@ -477,203 +517,11 @@
|
||||
"oben": [
|
||||
{
|
||||
"artikel": "HST M12X115X20",
|
||||
"menge": 1
|
||||
"anzahl": 2
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -1003,13 +1003,14 @@
|
||||
"gr-fehler-baugruppe": "\nGeruest: Baugruppe '%1' steht nicht in der Datendatei.",
|
||||
"gr-fehler-keine-varianten": "\nGeruest: Baugruppe '%1' hat keine Geometrie-Varianten.",
|
||||
"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-dlg-kopf": "%1 konfigurieren",
|
||||
"gr-alert-laenge": "Laenge ungueltig: '%1' mm. Erlaubt: %2 bis %3 mm.",
|
||||
"gr-prompt-einfuegepunkt": "\nEinfuegepunkt waehlen: ",
|
||||
"gr-abgebrochen": "\nAbgebrochen.",
|
||||
"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-unten": "unten",
|
||||
"gr-konfig-keine": "<keine>",
|
||||
|
||||
@@ -1003,6 +1003,7 @@
|
||||
"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-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-dlg-kopf": "Configure %1",
|
||||
"gr-alert-laenge": "Invalid length: '%1' mm. Allowed: %2 to %3 mm.",
|
||||
|
||||
+74
-30
@@ -754,9 +754,9 @@
|
||||
(if (findfile _datei)
|
||||
(progn
|
||||
(setq _daten (ssg-json-laden _datei))
|
||||
;; Vier Baugruppen: Rohrabhaenger, Saeulen (1 und 2 Zoll
|
||||
;; zusammengefuehrt), Wandbefestigung, Rohr-Geruest-Traeger
|
||||
(tu-eq "json/geruest-baugruppen" 4 (length _daten))
|
||||
;; Drei Bereiche: Rohrabhaenger, Saeulen (1 und 2 Zoll zusammengefuehrt),
|
||||
;; Wandbefestigung. Die Traeger liegen in geruest_traeger.json.
|
||||
(tu-eq "json/geruest-baugruppen" 3 (length _daten))
|
||||
;; Baugruppe ueber das ASCII-Feld "id" finden (aeusserer Schluessel
|
||||
;; traegt Umlaute bzw. Anfuehrungszeichen)
|
||||
(setq _bg nil)
|
||||
@@ -768,7 +768,7 @@
|
||||
(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-varianten" 4 (length _var))
|
||||
(tu-eq "json/geruest-teileart" "Geruest Rohrabhaenger"
|
||||
(ssg-json-get _bg "teileart"))
|
||||
(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/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
|
||||
"{\"artikel\": \"X\", \"sivas_id\": 825002019, \"menge\": 2}"))
|
||||
(tu-eq "geruest-artnr/menge2" '("825002019" "825002019")
|
||||
"{\"artikel\": \"X\", \"sivas_id\": 825002019, \"stueckzahl\": 2}"))
|
||||
(tu-eq "geruest-artnr/stueckzahl2" '("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}]}")))
|
||||
"{\"artikel\": \"A\", \"sivas_id\": 111, \"stueckzahl\": 1},"
|
||||
"{\"artikel\": \"B\", \"sivas_id\": 222, \"stueckzahl\": 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")
|
||||
;; Fehlendes stueckzahl-Feld -> 1
|
||||
(tu-eq "geruest-artnr/ohne-stueckzahl" '("333")
|
||||
(geruest-artikelnummern
|
||||
(ssg-json-parse "{\"artikel\": \"C\", \"sivas_id\": 333}")))
|
||||
|
||||
@@ -859,21 +859,62 @@
|
||||
(tu-eq "geruest-teile-dwgs/vorhanden" (list _pfad)
|
||||
(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 ---
|
||||
(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))
|
||||
(tu-eq "geruest-anzahl-wert/leer" 2 (geruest-anzahl-wert "" 2))
|
||||
(tu-eq "geruest-anzahl-wert/zahl" 5 (geruest-anzahl-wert "5" 2))
|
||||
(tu-eq "geruest-anzahl-wert/null" nil (geruest-anzahl-wert "0" 2))
|
||||
(tu-eq "geruest-anzahl-wert/text" nil (geruest-anzahl-wert "abc" 2))
|
||||
(tu-eq "geruest-anzahl-wert/negativ" nil (geruest-anzahl-wert "-3" 2))
|
||||
|
||||
;; --- Stueckzahl ersetzt die JSON-Menge (Einzelteil) ---
|
||||
(tu-eq "geruest-artnr-n/einzelteil" '("825002019" "825002019" "825002019")
|
||||
(geruest-artikelnummern-n _eintrag 3))
|
||||
;; --- Einzelteil: Anzahl (Dialog) x stueckzahl (JSON, hier 2) ---
|
||||
(tu-eq "geruest-artnr-n/einzelteil" 6
|
||||
(length (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))
|
||||
@@ -894,7 +935,7 @@
|
||||
(setq _teile (ssg-json-parse
|
||||
(strcat "{\"name\": \"Set\", \"farbig\": true, \"teile\": ["
|
||||
"{\"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))
|
||||
(geruest-teile-paare _teile nil))
|
||||
(tu-eq "geruest-paare-n/gruppe" 6 (length (geruest-teile-paare-n _teile 2)))
|
||||
@@ -934,8 +975,8 @@
|
||||
;; die ganze Konfiguration verworfen)
|
||||
(setq _konfig (ssg-json-parse
|
||||
(strcat "{\"name\": \"K1\", \"oben\": ["
|
||||
"{\"artikel\": \"Schraubenset\", \"menge\": 3},"
|
||||
"{\"artikel\": \"unbekannt\", \"menge\": 1}]}")))
|
||||
"{\"artikel\": \"Schraubenset\", \"anzahl\": 3},"
|
||||
"{\"artikel\": \"unbekannt\", \"anzahl\": 1}]}")))
|
||||
(tu-eq "geruest-konfig-position" '(nil 3)
|
||||
(geruest-konfig-position _konfig "oben" _teile))
|
||||
|
||||
@@ -1172,18 +1213,21 @@
|
||||
_bgtest "LAENGENABZUGENDE" "aktiv"))
|
||||
|
||||
;; --- Rohr-Geruest-Traeger in der echten Datendatei ---
|
||||
;; Eigener Dialog: im Bereichs-Dropdown von GERUEST darf er fehlen,
|
||||
;; ueber geruest-baugruppe muss er aber auffindbar sein.
|
||||
;; Eigene Datei data/json/geruest_traeger.json: im Bereichs-Dropdown von
|
||||
;; GERUEST darf er nicht auftauchen, ueber geruest-traeger-daten muss er
|
||||
;; auffindbar sein.
|
||||
(setq _rec nil)
|
||||
(foreach _e (geruest-baugruppen-liste)
|
||||
(if (equal (car _e) "Traeger") (setq _rec T)))
|
||||
(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-nil "geruest/traeger-nicht-in-geruest-json"
|
||||
(geruest-baugruppe "Traeger" (geruest-daten)))
|
||||
(if _traeger
|
||||
(progn
|
||||
(tu-eq "geruest/traeger-einfuegeart" "linie"
|
||||
(ssg-json-get _traeger "einfuegeart"))
|
||||
(tu-eq "geruest/traeger-varianten-artikel" 0
|
||||
(tu-geruest-artikel-unvollstaendig
|
||||
(ssg-json-get _traeger "geometrie_varianten")))
|
||||
@@ -1236,7 +1280,7 @@
|
||||
(cons "laenge" "2000")
|
||||
(cons "teilefarbe" "RAL 7035 Lichtgrau")
|
||||
(cons "oben" (list (list (cons "artikel" "ROHRKLAMMER 1\" KPL. VERTIKAL")
|
||||
(cons "menge" 2))))
|
||||
(cons "anzahl" 2))))
|
||||
(cons "unten" nil)))
|
||||
(setq _pfad (vl-filename-mktemp "grtest" nil ".json"))
|
||||
(setq _f (open _pfad "w"))
|
||||
@@ -1256,8 +1300,8 @@
|
||||
(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/oben-anzahl" 2
|
||||
(ssg-json-get (car (ssg-json-get _zurueck "oben")) "anzahl"))
|
||||
(tu-eq "geruest-schreiber/unten-leer" nil
|
||||
(ssg-json-get _zurueck "unten"))
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user