Message 1 of 5
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello
I'm using this rule to change Partnumber following rules
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
'BOM Export 후 xml파일과 아래 경로를 일치할것
oBOM.ImportBOMCustomization("D:\UC BOM.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
I found i use too much time to find what part has part number i seek when I draft it respectively
So If I can change filename to part number I can search on search engine easily
it seems have a trouble with files have same part number
can it be solved by adding number like (1), (2), (3)... on filename if it has file with same name on storage location
It will be very thanksful if you help me
Solved! Go to Solution.