Zum Inhalt

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=&amp;itemtype=File" URL3D="http://vault/AutodeskTC/vault/Vault/#/Entity/Details?id=mRklMRTpMQVRFU1Q6MjcyNTc2&amp;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:

  1. Die CombiList wird komplett überschrieben.
  2. Nur die durch den Import erzeugten Positionen werden gelöscht und neu importiert. Neu importierte Positionen werden immer an den Anfang der CombiList gesetzt.

Einstellungen