Im vorherigen Post iLogic: Units of Measurement wurde bereits auf die Dokumenteneinstellungen zu Maßeinheiten innerhalb von Dokumenten eingegangen. In diesem Post geht es um die Stücklisteneinstellungen, die ebenfalls Teil der Dokumenteneinstellungen sind.

Bauteile und Baugruppen

Sowohl in Bauteilen, als auch Baugruppen, kann ein Stücklistenstruktur vorgegeben werden, die Einfluss darauf hat wie diese Bauteile in übergeordneten Baugruppen aufgelöst werden. Baugruppen selber können in dieser Einstellung ihre eigene Stücklistenauflösung definieren.

Aktuelle Stücklistenstruktur auslesen

In der API steht die aktuell zugewiesene Stücklistenstruktur unter ComponentDefinition.BOMStructure zur Verfügung:

Umn die aktuell zugewiesene Stücklistenstruktur auszulesen muss zuerst verstanden werden, wie die API und im speziellen der sogenannte BOMStructureEnum funktioniert. Er liefert standardmäßig keinen sprechenden Namen zurück, wie bspw. Phantom order Purchased, sondern eine repräsentative 5-stellige Ziffernfolge:

Name GUI BOMStructureEnum Value
Normal kNormalBOMStructure 51970
Phantom kPhantomBOMStructure 51971
Reference kReferenceBOMStructure 51972
Purchased kPurchasedBOMStructure 51973
Inseparable kInseparableBOMStructure 51974
- kDefaultBOMStructure 51969
- kVariesBOMStructure 51975

Diese Ziffernfolge kann in einer weiteren Variablen und der Methode ToString in ihren sprechenden Namen, bspw. kNormalBOMStructure umgewandelt werden:

Dim oDoc As Document = ThisDoc.Document

Dim currentBOMStructure As BOMStructureEnum = oDoc.ComponentDefinition.BOMStructure
Dim currentBOMStructureAsString As String = currentBOMStructure.ToString

MsgBox("BOM Structure Value is: " & currentBOMStructure _
        & vbLf & _
        "BOM Structure String is: " & currentBOMStructureAsString, _
        MessageBoxButtons.OK, _
        "Current BOM Structure")

Tipp: Lange Code-Befehle (Spaghetti Code), wie bspw. die MsgBox()-Anweisung, können mit einem Underscore (_) in eine neue Zeile umgebrochen werden und so zur Lesbarkeit beitragen. Weiterführendes zum Thema Messageboxes ist im nächsten Post der Serie zu finden.

Stücklistenstruktur im Dokument ändern

Auch ein manipulieren und überschreiben der aktuellen Stücklistenstruktur ist mit dem BOMStructureEnum leicht möglich. Möchte man die Stückliste bspw. auf Purchased setzen, kann dies so erfolgen:

Dim oDoc As Document = ThisDoc.Document

oDoc.ComponentDefinition.BOMStructure = BOMStructureEnum.kPurchasedBOMStructure

Stücklistenansichten in Baugruppen

Neben den Dokumenteneinstellungen zur Stückliste haben Baugruppen noch eine weitere Stücklistenfunktion: Stücklistenansichten. Es gibt 3 an der Zahl:

  1. Model Data: Ist immer aktiv und kann nicht beeinflusst werden.
  2. Structured: Die Strukturstückliste, die sämtliche Stücklisteneinstellungen der Unterkomponenten aus ihren den Dokumenteneigenschaften widerspiegelt. Sie ist besonders wichtig für nachfolgende Systeme, wie bspw. Fusion 360 Manage. Ist sie nicht aktiv, werden keine Stücklistenstrukturen ins PLM übertragen.
  3. Parts Only: Die reine Bauteilstückliste. Im Kern ist sie gleichzusetzen mit der Strukturstückliste, jedoch listet sie ausschließlich die stücklistenrelevanten Bauteile und das ohne Baugruppenebenen.

Stücklistenansichten aktivieren

Die API stellt Informationen zu den Stücklistenansichten unter ComponentDefinitions.BOM bereit. Darin befinden sich auch zwei Endpunkte vom Typ Boolean mit den Namen PartsOnlyViewEnabled und StructuredViewEnabled, die Auskunft darüber geben ob diese aktiviert oder deaktiviert sind:

Um nun die Stücklistenansichten zu aktivieren, muss lediglich der Wert True an diesen Endpunkte gesetzt werden:

Dim oDoc As Document = ThisDoc.Document

oDoc.ComponentDefinition.BOM.PartsOnlyViewEnabled = True
oDoc.ComponentDefinition.BOM.StructuredViewEnabled = True

Zu beachten ist, dass eine Baugruppe in der Detailgenauigkeit/Model State Master geladen sein muss, um die Stückliste(n) zu aktivieren: