Hello
I have rule assigning part number based on BOM stucture
This is
Option Explicit On Class ThisRule Dim As_count As Integer = 0 Dim Pr_count As Integer = 0 Dim Wl_count As Integer = 0 Dim St_count As Integer = 0 Dim Pt_count As Integer = 0 Dim Rf_count As Integer = 0 Sub Main ThisApplication.CommandManager.ControlDefinitions.Item("AppUpdateMassPropertiesCmd").Execute Dim oADoc As AssemblyDocument = ThisDoc.Document Dim oBOM As BOM = oADoc.ComponentDefinition.BOM Dim oModelBOMView As BOMView = oBOM.BOMViews.Item(1) WritePartMumb(oModelBOMView.BOMRows) 'BOM Export 후 xml파일과 아래 경로를 일치할것 oBOM.ImportBOMCustomization("D:\STCRECH.xml") oBOM.StructuredViewEnabled = True oBOM.StructuredViewFirstLevelOnly = False oBOM.SetPartNumberMergeSettings(False) Dim oBOMView As BOMView = oBOM.BOMViews.Item("구조적") oBOMView.Sort("질량", False, "체적", False) oBOMView.Renumber() WritePartMumb(oBOMView.BOMRows) oBOMView.Sort("Part Number", True) oBOMView.Renumber() End Sub Private Sub WritePartMumb(ByVal oBOMRows As BOMRowsEnumerator) For Each oRow As BOMRow In oBOMRows If Not IsStandardContentCenterRow(oRow) Then Dim partnumber As String = PartNumberGenerator(oRow) If partnumber <> "" Then oRow.ComponentDefinitions(1).Document.PropertySets(3)(2).Value = partnumber End If End If If oRow.ChildRows IsNot Nothing Then WritePartMumb(oRow.ChildRows) End If Next End Sub Private Function PartNumberGenerator(ByVal oRow As BOMRow) As String Select Case oRow.BOMStructure Case BOMStructureEnum.kNormalBOMStructure Dim rowDocType = GetDocumentType(oRow) If rowDocType = DocumentTypeEnum.kAssemblyDocumentObject Then As_count = As_count + 1 Return "As-" & As_count.ToString("000") ElseIf rowDocType = DocumentTypeEnum.kPartDocumentObject Then Pr_count = Pr_count + 1 Return "Pr-" & Pr_count.ToString("000") Else Return "" End If Case BOMStructureEnum.kInseparableBOMStructure Wl_count = Wl_count + 1 Return "Wl-" & Wl_count.ToString("000") Case BOMStructureEnum.kPurchasedBOMStructure St_count = St_count + 1 Return "St-" & St_count.ToString("000") Case BOMStructureEnum.kPhantomBOMStructure Pt_count = Pt_count + 1 Return "Pt-" & Pt_count.ToString("000") Case BOMStructureEnum.kReferenceBOMStructure Rf_count = Rf_count + 1 Return "Rf-" & Rf_count.ToString("000") End Select Return "" ' default case if we can't get a part number End Function Private Function IsStandardContentCenterRow(ByVal oRow As BOMRow) As Boolean For Each compDef As ComponentDefinition In oRow.ComponentDefinitions Dim partCompDef As PartComponentDefinition = TryCast(compDef, PartComponentDefinition) If partCompDef IsNot Nothing AndAlso partCompDef.IsContentMember Then Return True End If Next Return False End Function Private Function GetDocumentType(ByVal oRow As BOMRow) As DocumentTypeEnum For Each compDef As ComponentDefinition In oRow.ComponentDefinitions Dim partCompDef As PartComponentDefinition = TryCast(compDef, PartComponentDefinition) If partCompDef IsNot Nothing Then Return DocumentTypeEnum.kPartDocumentObject End If Dim assemCompDef As AssemblyComponentDefinition = TryCast(compDef, AssemblyComponentDefinition) If assemCompDef IsNot Nothing Then Return DocumentTypeEnum.kAssemblyDocumentObject End If Next Return DocumentTypeEnum.kUnknownDocumentObject End Function End Class
Basic structure is '00-000'
it start from Assemblydocument
Following BOM in inventor
Rule for prefix
Normal - two type (As for assembly, Pr for part)
Inseparable - Wl
Purchased - St
Phantom - Pt
Reference - Rf
(Standard product is exception,No changing Part number)
Rule for suffix
001
002
003
004...
this sequence is ascending order of mass
as a exception if it has same mass by missing selecting material or something, ascending order of volume is okay
it should be different according to the prefix
for example Part number
As-001 (assembly and first heavy one)
As-002(assembly and second heavy one)
Pr-001(Part and first heavy one)
Pr-002(Part and second heavy one)
Wl-001(Welding and first heavy one)
But it ignore sequence when i play rule
For example I sort it by part number is show some of part number is ignored
it should be start from 001 per each of prefix
could you help me?
Can't find what you're looking for? Ask the community or share your knowledge.