Wie im Post iLogic: Stücklisten beschrieben, erlauben Baugruppen in Inventor über Assemble > Bill of Materials auf die Stückliste zuzugreifen. In der Stücklistenansicht werden definierte Properties angezeigt. Welche Properties angezeigt werden, wird am Dokument und nicht global gespeichert. Daher können die angezeigten Properties von Dokument zu Dokument zu variieren.
Inventor erlaubt eine vordefinierte Config im XML-Format über den Button Import… zu importieren:
Eine solche Config für darzustellende Properties muss zuvor in einem Dokument definiert und anschließen über den Button Export… exportiert und kann anschließend maßgebend in anderen Baugruppen genutzt werden.
Da das händische Importieren einer solchen Datei einen Akt zeitraubener Klickarbeit darstellt, kann der Import auch mit iLogic automatisiert werden.
Code zum Import der BOM Settings
Die BOM Settings können über das BOM Object manipuliert werden. Für den Import einer Settings-Datei stellt die Inventor API explizit die Methode BOM.ImportBOMCustomization bereit. Diese erwartet als einzigen Parameter einen absoluten Dateipfad zur Settings-Datei als String:
Im realen Anwendungsfall kann ales Beispiel eine BOM-Setting-Datei mit dem Namen BOM-Settings.xml herhalten. Der absolute Pfad dieser beispielhaften Datei soll lauten: C:\foo\BOM-Settings.xml
Dim oDoc As Document = ThisDoc.Document
' Sicherstellen, dass Import nur in Baugruppen erfolgt
If oDoc.DocumentType = kAssemblyDocumentObject Then
Dim oBOM As BOM = oDoc.ComponentDefinition.BOM
' Absoluter Pfad zur BOM-Settings-Datei
Dim sBOMSettingsFile As String = "C:\foo\BOM-Settings.xml"
' Import der Datei im aktiven Baugruppendokument
oBOM.ImportBOMCustomization(sBOMSettingsFile)
End If
BOM nach Import öffnen
Möchte man die BOM nach dem Import einer Setting-Datei öffnen, kann auch dies mit iLogic erfolgen. Dabei muss die BOM über das ControlDefinition Object angesprochen und geöffnet werden. Um dies zu bewerkstelligen muss der zuvor gezeigte Code um lediglich 2 Zeilen erweitert werden:
Dim oBOMControlDef As ControlDefinition = ThisApplication.CommandManager.ControlDefinitions.Item("AssemblyBillOfMaterialsCmd")
oBOMControlDef.Execute2(True)
Wichtig an der Stelle ist, dass die Methode ControlDefinition.Execute2 und nicht ControlDefinition.Execute verwendet wird, da eine synchrone Ausführung des Befehls zur Laufzeit des iLogic Codes erfolgen muss.
Der Finale Code könnte dergestalt sein:
Dim oDoc As Document = ThisDoc.Document
' Sicherstellen, dass Import nur in Baugruppen erfolgt
If oDoc.DocumentType = kAssemblyDocumentObject Then
Dim oBOMControlDef As ControlDefinition = ThisApplication.CommandManager.ControlDefinitions.Item("AssemblyBillOfMaterialsCmd")
Dim oBOM As BOM = oDoc.ComponentDefinition.BOM
Dim sBOMSettingsFile As String = "C:\foo\BOM-Settings.xml"
' Import der Datei im aktiven Baugruppendokument
oBOM.ImportBOMCustomization(sBOMSettingsFile)
' BOM Aufrufen
oBOMControlDef.Execute2(True)
End If