Schnittstelle CAD-Import¶
Über die Schnittstelle ist es möglich Artikel inkl. CombiList zu erstellen / aktualisieren.
I.d.R. ist es möglich, in CAD-Programmen aus einer Baugruppe heraus eine Stückliste als XML-Datei, sowie die zugehörigen CAD-Dateien, zu erzeugen und in einem Ordner abzuspeichern.
Diese kann vom Octoflex ERP automatisiert eingelesen werden. Damit das funktioniert und die Möglichkeiten der CombiList (Laserteile, Arbeitsgänge, Fremdfertigungen) voll ausgenutzt werden können, sind ein paar Konventionen erforderlich.
Dabei werden die Daten im folgenden Format erwartet.
Beispieldatei¶
<xml>
<transactions>
<transaction date="1484819667" type="export_bom_spreadsheet" vaultname="Vault">
<bom config_id="3" config_name="Standard" document_id="15200" document_path="\Path\To\File\123456.sldprt" type="0">
<bomheader>
<bomcol col_no="0" name="MENGE" />
<bomcol col_no="1" name="Art.-Nr." />
<bomcol col_no="2" name="Beschreibung" />
<bomcol col_no="3" name="Beschreibung 2" />
<bomcol col_no="4" name="Eigenfertigung" />
<bomcol col_no="5" name="Einkaufsartikel" />
<bomcol col_no="6" name="Verkaufsartikel" />
<bomcol col_no="7" name="Einheit" />
<bomcol col_no="8" name="Gewicht" />
<bomcol col_no="9" name="Gruppe" />
<bomcol col_no="10" name="HZ_Art.-Nr." />
<bomcol col_no="11" name="HZ_Einheit" />
<bomcol col_no="12" name="HZ_Menge" />
<bomcol col_no="13" name="HZ_Stückzahl" />
<bomcol col_no="14" name="Material" />
<bomcol col_no="15" name="Oberfläche" />
<bomcol col_no="16" name="Revision" />
<bomcol col_no="17" name="Teileart" />
<bomcol col_no="18" name="Zeichnungsnummer" />
<bomcol col_no="19" name="Länge" />
<bomcol col_no="20" name="Breite" />
<bomcol col_no="21" name="Stärke" />
<bomcol col_no="22" name="Posnummer" />
<bomcol col_no="23" name="Abmessung" />
<bomcol col_no="24" name="Warengruppe" />
<bomcol col_no="25" name="Zulieferer" />
<bomcol col_no="26" name="Kommentar" />
<bomcol col_no="27" name="Lagerartikel" />
<bomcol col_no="28" name="Dispositionsartikel" />
<bomcol col_no="29" name="Posnr"/>
<bomcol col_no="30" name="SymbolLinks"/>
<bomcol col_no="31" name="SymbolRechts"/>
</bomheader>
<bomrow URL2D="http://vault/AutodeskTC/vault/Vault#/Entity/Details?id=mRklMRTpMQVRFU1Q6MjcyNTc5=&itemtype=File" URL3D="http://vault/AutodeskTC/vault/Vault/#/Entity/Details?id=mRklMRTpMQVRFU1Q6MjcyNTc2&itemtype=File" document_stp="C:\Temp\111776.ipt Test Platte 02.stp" document_path="C:\Temp\111776.idw Test Platte 02.pdf" document_id="1000679">
<bomcell col_no="0" value="1" />
<bomcell col_no="1" value="1000679" />
<bomcell col_no="2" value="Test Platte 02" />
<bomcell col_no="3" value="" />
<bomcell col_no="4" value="0" />
<bomcell col_no="5" value="1" />
<bomcell col_no="6" value="leer" />
<bomcell col_no="7" value="Stck." />
<bomcell col_no="8" value="0.16" />
<bomcell col_no="9" value="leer" />
<bomcell col_no="10" value="" />
<bomcell col_no="11" value="" />
<bomcell col_no="12" value="" />
<bomcell col_no="13" value="" />
<bomcell col_no="14" value="1.4301" />
<bomcell col_no="15" value="leer" />
<bomcell col_no="16" value="-" />
<bomcell col_no="17" value="leer" />
<bomcell col_no="18" value="111776" />
<bomcell col_no="19" value="-" />
<bomcell col_no="20" value="-" />
<bomcell col_no="21" value="-" />
<bomcell col_no="22" value="3" />
<bomcell col_no="23" value="100 x 100 x 2" />
<bomcell col_no="24" value="Laser- und Kantteile" />
<bomcell col_no="25" value="Musterkunde GmbH" />
<bomcell col_no="26" value="" />
<bomcell col_no="27" value="1" />
<bomcell col_no="28" value="0" />
<bomcell col_no="29" value="" />
<bomcell col_no="30" value="" />
<bomcell col_no="31" value="" />
</bomrow>
</bom>
</transaction>
</transactions>
</xml>
Schnittstellenbeschreibung¶
Das CAD-Programm schreibt in ein Übergabeverzeichnis XML-Dateien mit einer fortlaufenden Nummer.
<zähler>_<artikelnummer>.xml
(z.B. 00003255_2500129.xml)
Der Zähler sollte fortlaufend sein. Werden in einer Stückliste Artikel referenziert, so müssen diese vorab übertragen werden.
Beispiel:
- Artikel A enthält Artikel B
- Artikel B enthält Artikel C
Es wird erwartet, dass die Dateien in der Reihenfolge C, B, A übermittelt werden.
Die Dateien werden in aufsteigender Reihenfolge importiert. Hierdurch wird sichergestellt, dass alle in einer Datei referenzierten Artikel existieren / auf dem aktuellsten Revisionsstand sind.
Die Dateien bestehen aus einem Kopfdatensatz (bomheader
) sowei beliebig vielen Datensätzen (bomrow
).
Die Attribute URL2D und URL3D in dem bomrow
Objekt erstellen beim Import Hyperlinks im Dokumenteverzeichnis des Artikels sofern diese gefüllt sind.
Die erste Zeile wird als Artikel angelegt. Enthält eine Datei mehr als einen Datensatz, werden alle weiteren Zeilen als Positionen in die CombiList des Artikels der ersten Zeile übernommen. Hierbei werden sowohl Artikelpositionen als auch Zuschnittlisten-Positionen unterstützt.
Name | Beschreibung | Typ |
---|---|---|
URL2D/URL3D | Erstellt eine Hyperlink im Dokumentenverzeichnis des Artikels mit dem das Teil im DMS aufgerufen werden kann (sofern das DMS dieses Feature unterstützt). | String |
MENGE | Beim ersten Datensatz immer "1", bei weiteren Datensätzen die Anzahl in der CombiList. | Double |
Art.-Nr. | Die eindeutige Artikelnummer. Zum Erstellen / Aktualisieren von Zuschnittlisten-Positionen hier "7" eintragen. | String(45) |
Beschreibung | Bezeichnung in Octoflex wird aus "Beschreibung" und "Beschreibung 2" zusammengesetzt. Hinweis: Max 65 Zeichen, ansonsten wird abgeschnitten. | String(65) |
Beschreibung 2 | Bezeichnung in Octoflex wird aus "Beschreibung" und "Beschreibung 2" zusammengesetzt. Hinweis: Max 65 Zeichen, ansonsten wird abgeschnitten. | String(65) |
Eigenfertigung | Haken "Produktion". 0 oder 1 | Boolean |
Einkaufsartikel | Haken "Einkauf". 0 oder 1 | Boolean |
Verkaufsartikel | Haken "Direktverkauf".0 oder 1 | Boolean |
Einheit | Name der Einheit. Muss in Octoflex existieren, andernfalls wird die Datei mit der Meldung "Einheit ... existiert nicht" abgelehnt. | String(45) |
Gewicht | Gewicht. | Double |
Gruppe | Wird ignoriert. | - |
HZ_Art.-Nr. | Siehe Hinweis unten. Bei einer Zuschnittlisten-Position entspricht der Wert dieses Feldes der Art.-Nr. des Materials. | String(45) |
HZ_Einheit | Siehe Hinweis unten. Bei einer Zuschnittlisten-Position darf hier nur "m" oder "mm" angegeben werden. | String(45) |
HZ_Menge | Siehe Hinweis unten. Bei einer Zuschnittlisten-Position entspricht der Wert dieses Feldes der Länge in der angegebenen HZ_Einheit | Double |
HZ_Stückzahl | Siehe Hinweis unten. Bei einer Zuschnittlisten-Position muss der Wert dieses Feldes "1" betragen, da nur ein Zuschnitt pro Zuschnittliste unterstützt wird. | Double |
Material | Material. Wenn in Octoflex nicht vorhanden, dann leer. | String(65) |
Oberfläche | Merkmal "Oberfläche". Wenn in Octoflex nicht vorhanden, dann leer. | String(45) |
Revision | Zeichnungsindex (wird als Revision verwendet, bestehende Artikel werden nur aktualisiert, wenn Revision größer). | String(10) |
Teileart | Wird ignoriert. | - |
Zeichnungsnummer | Zeichnungsnummer. | String(45) |
Länge / Breite / Stärke | Abmessung (entweder 100x10x2,5 oder 100x10 falls Stärke leer). | String(45) |
Abmessung | Sofern gefüllt, werden Länge, Breite und Stärke ignoriert. | String(45) |
Warengruppe | Die Warengruppe. Muss in Octoflex existieren, andernfalls wird diese ignoriert | String(45) |
Zulieferer | Wird bei Einkaufsartikeln als Artikel-Lieferant hinterlegt | String(65) |
Kommentar | Wird ignoriert. | - |
Lagerartikel | Haken "Lager". 0 oder 1 | Boolean |
Dispositionsartikel | Haken "Disposition". 0 oder 1 | Boolean |
Posnr | Wird ignoriert. | - |
SymbolLinks | Linkes Symbol für Zuschnittlisten-Positionen (entsprechend Benennung im Octoflex). | String(65) |
SymbolRechts | Rechtes Symbol für Zuschnittlisten-Positionen (entsprechend Benennung im Octoflex). | String(65) |
Hinweis
Bei den Feldern MENGE, Art.-Nr., Beschreibung, Einheit und Revision handelt es sich um Pflichtfelder.
Einen Sonderfall stellen die HZ-Felder (Halbzeugnis) dar. Hier wird davon ausgegangen, dass ein bestehender (Einkaufs)Artikel in Octoflex als Stammartikel in der CombiList eingetragen wird. Pro Artikel gibt es max. ein Halbzeugnis.
Wenn der Artikel in Octoflex nicht existiert, wird der Datensatz mit der Meldung "Artikel ... existiert nicht" abgelehnt.
Wenn für den Artikel die Einheit nicht zugeordnet ist, wird der Datensatz mit der Meldung "Einheit ... existiert nicht für Artikel ..." abgelehnt.
Bei Neuanlage / Aktualisieren eines Artikels werden Dokumente im Unterordner files
die als "Artikelnummer.*" benannt sind, mit importiert. Ist eine "Artikelnummer.pdf" vorhanden, wird diese direkt als "Zeichnung (Arbeitskarte)" festgelegt.
Artikel¶
Damit sich die Nummernkreise der zu importierenden Artikel nicht mit den Artikelnummern aus Octoflex überschneiden, wird erwartet, dass die Artikelnummer 7-stellig ist.
Wenn Stücklisten-Artikel über die HZ_...
Felder angegeben werden, wird erwartet, dass diese in Octoflex existieren und als Einkaufsartikel angelegt sind. Dann werden diese als Stammartikel-Position in der CombiList angelegt. Ausnahme: Laserteile (s.u.)
Neu angelegte Artikel oder Artikel mit geänderte Revision werden standardmäßig gesperrt und müssen manuell entsperrt werden.
Dieses Verhalten ist jedoch über den Konfigurationswert COMBILIST_SOLIDWORKSIMPORT_ARTIKEL_SPERRE
steuerbar.
Weitere Infos zu diesem Konfigurationswert: Einstellungen
Zuschnittliste¶
Der Import von Zuschnittlisten wird unterstützt.
Die erste Zeile (row_no="0") wird als Artikel angelegt. Jede weitere Zeile (row_no="[n]") kann grundsätzlich als Zuschnittlisten-Position angelegt werden, sofern Folgendes beachtet wird:
-
Das Feld "Art.-Nr." der Zuschnittliste erhält den Wert "7".
-
Die HZ_Einheit muss in "m" oder "mm" angegeben werden - ansonsten wird der Datensatz mit der Meldung "Einheit ... ist unzulässig, muss m oder mm sein" abgelehnt.
Laserteile¶
Wenn das Halbzeug HZ_...
eines Artikels im Octoflex ein Einkaufsartikel ist, das ein Rohmaterial festgelegt hat und im Unterordner files
eine geo-Datei mit dem Namen der Zeichnungsnummer liegt, wird statt einer Stammartikelposition in der CombiList ein Laserteil angelegt. Die Teilenummer ist die Artikelnummer. Das Halbzeug entspricht also dem Rohmaterial des Laserteils.
Hinweis
Durch dieses Konzept wird jedes Laserteil innerhalb einer Baugruppe als eigener Stammartikel und nicht als reines Laserteil angelegt, mit eigener Arbeitskarte. Laserteile sollte daher immer mit Eigenfertigung = 1
übergeben werden, damit beim Einlasten eines Artikels auch ein Produktionsauftrag angelegt wird.
Besonderheiten:¶
- Wenn im Feld "Art.-Nr." eine "0" steht, wird unabhängig davon ob ein Einkaufsartikel existiert, das ein Rohmaterial festgelegt hat, immer ein Laserteil angelegt
-
Wenn die "HZ_artnr" dem Namen des Rohmaterials entspricht, wird dieser als Voreinstellung verwendet, andernfalls bleibt er leer
-
Beispieldatei:
<xml> <transactions> <transaction> <bom> <bomheader> <bomcol col_no="0" name="MENGE" /> <bomcol col_no="1" name="Art.-Nr." /> <bomcol col_no="2" name="Beschreibung" /> <bomcol col_no="3" name="Beschreibung 2" /> <bomcol col_no="4" name="Eigenfertigung" /> <bomcol col_no="5" name="Einkaufsartikel" /> <bomcol col_no="6" name="Verkaufsartikel" /> <bomcol col_no="7" name="Einheit" /> <bomcol col_no="8" name="Gewicht" /> <bomcol col_no="9" name="Gruppe" /> <bomcol col_no="10" name="HZ_Art.-Nr." /> <bomcol col_no="11" name="HZ_Einheit" /> <bomcol col_no="12" name="HZ_Menge" /> <bomcol col_no="13" name="HZ_Stückzahl" /> <bomcol col_no="14" name="Material" /> <bomcol col_no="15" name="Oberfläche" /> <bomcol col_no="16" name="Revision" /> <bomcol col_no="17" name="Teileart" /> <bomcol col_no="18" name="Zeichnungsnummer" /> <bomcol col_no="19" name="Länge" /> <bomcol col_no="20" name="Breite" /> <bomcol col_no="21" name="Stärke" /> <bomcol col_no="22" name="Posnummer" /> <bomcol col_no="23" name="Abmessung" /> <bomcol col_no="24" name="Warengruppe" /> <bomcol col_no="25" name="Zulieferer" /> <bomcol col_no="26" name="Kommentar" /> <bomcol col_no="27" name="Lagerartikel" /> <bomcol col_no="28" name="Dispositionsartikel" /> </bomheader> <bomrow URL2D="-" URL3D="" document_path="" document_stp="" document_id=""> <bomcell col_no="0" value="1" /> <bomcell col_no="1" value="0000001" /> <bomcell col_no="2" value="Artikel" /> <bomcell col_no="3" value="" /> <bomcell col_no="4" value="1" /> <bomcell col_no="5" value="0" /> <bomcell col_no="6" value="leer" /> <bomcell col_no="7" value="Stck." /> <bomcell col_no="8" value="0" /> <bomcell col_no="9" value="leer" /> <bomcell col_no="10" value="" /> <bomcell col_no="11" value="" /> <bomcell col_no="12" value="" /> <bomcell col_no="13" value="" /> <bomcell col_no="14" value="1.4301" /> <bomcell col_no="15" value="leer" /> <bomcell col_no="16" value="-" /> <bomcell col_no="17" value="leer" /> <bomcell col_no="18" value="112168" /> <bomcell col_no="19" value="-" /> <bomcell col_no="20" value="-" /> <bomcell col_no="21" value="1,5" /> <bomcell col_no="22" value="-" /> <bomcell col_no="23" value="" /> <bomcell col_no="24" value="Komplexteile" /> <bomcell col_no="25" value="" /> <bomcell col_no="26" value="" /> <bomcell col_no="27" value="0" /> <bomcell col_no="28" value="0" /> </bomrow> <bomrow URL2D="-" URL3D="" document_path="" document_stp="" document_id=""> <bomcell col_no="0" value="1" /> <bomcell col_no="1" value="0" /> <bomcell col_no="2" value="Laserteil" /> <bomcell col_no="3" value="" /> <bomcell col_no="4" value="1" /> <bomcell col_no="5" value="0" /> <bomcell col_no="6" value="leer" /> <bomcell col_no="7" value="Stck." /> <bomcell col_no="8" value="0" /> <bomcell col_no="9" value="leer" /> <bomcell col_no="10" value="" /> <bomcell col_no="11" value="" /> <bomcell col_no="12" value="" /> <bomcell col_no="13" value="" /> <bomcell col_no="14" value="1.4301" /> <bomcell col_no="15" value="leer" /> <bomcell col_no="16" value="-" /> <bomcell col_no="17" value="leer" /> <bomcell col_no="18" value="112169" /> <bomcell col_no="19" value="-" /> <bomcell col_no="20" value="-" /> <bomcell col_no="21" value="-" /> <bomcell col_no="22" value="-" /> <bomcell col_no="23" value="" /> <bomcell col_no="24" value="Komplexteile" /> <bomcell col_no="25" value="" /> <bomcell col_no="26" value="" /> <bomcell col_no="27" value="0" /> <bomcell col_no="28" value="0" /> </bomrow> <bomrow URL2D="" URL3D="" document_stp="" document_path="" document_id="0"> <bomcell col_no="0" value="3" /> <bomcell col_no="1" value="0" /> <bomcell col_no="2" value="Laserteil2" /> <bomcell col_no="3" value="" /> <bomcell col_no="4" value="0" /> <bomcell col_no="5" value="0" /> <bomcell col_no="6" value="leer" /> <bomcell col_no="7" value="Stck." /> <bomcell col_no="8" value="" /> <bomcell col_no="9" value="leer" /> <bomcell col_no="10" value="A4-0" /> <bomcell col_no="11" value="m" /> <bomcell col_no="12" value="" /> <bomcell col_no="13" value="" /> <bomcell col_no="14" value="A4" /> <bomcell col_no="15" value="leer" /> <bomcell col_no="16" value="-" /> <bomcell col_no="17" value="leer" /> <bomcell col_no="18" value="112170" /> <bomcell col_no="19" value="-" /> <bomcell col_no="20" value="-" /> <bomcell col_no="21" value="-" /> <bomcell col_no="22" value="1" /> <bomcell col_no="23" value="" /> <bomcell col_no="24" value="Profile" /> <bomcell col_no="25" value="" /> <bomcell col_no="26" value="" /> <bomcell col_no="27" value="0" /> <bomcell col_no="28" value="0" /> </bomrow> </bom> </transaction> </transactions> </xml>
Verarbeitung¶
Octoflex überwacht das Austausch-Verzeichnis.
Nach erfolgtem Import einer Datei wird diese in den Unterordner „Log“ kopiert.
Sollten Fehler auftreten, wird die Datei in „dateiname.err“ umbenannt. Der genaue Fehlergrund wird in einer Log-Datei protokolliert. So kann der Fehler (z.B. fehlende Einheit) korrigiert werden und die Datei wieder in dateiname.xml umbenannt werden, damit diese erneut verarbeitet wird.
Hinweis
Aufgrund dieses Konzeptes, sollte der Übergabeordner kundenseitig permanent überwacht werden, damit fehlerhafte Dateien korrigiert und erneut importiert werden können.
Nach dem Import¶
Nach dem Import wird das Merkmal Import-Status
auf einen der Werte
- neu
- aktualisiert
- ungültig
gesetzt. Nach manueller Prüfung kann der Status
- freigegeben
durch den Mitarbeiter gesetzt werden.
Konfliktvermeidung beim Aktualisieren von existierenden Artikeln¶
Nach dem erstmaligen Import eines Stammartikels ist es möglich, die CombiList um weitere Positionen (Arbeitsgänge / Fremdfertigung / etc. ) zu ergänzen.
Da hier die Bearbeitung nicht eingeschränkt ist, ist es möglich, dass z.B. Arbeitsgänge hinzugefügt werden, Positionen gelöscht / verschoben / verändert werden.
Um hier eine eindeutige Vorgehensweise für den Abgleich festzulegen, kann in Octoflex zwischen zwei Möglichkeiten gewählt werden:
- Die CombiList wird komplett überschrieben.
- Nur die durch den Import erzeugten Positionen werden gelöscht und neu importiert. Neu importierte Positionen werden immer an den Anfang der CombiList gesetzt.