- 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 ClassI 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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello
I'm trying to change Filename to part number
for example
before running rule
Filename : part43
Partnumber : Pr-002
after running rule
Filename : Pr-002
Partnumber : Pr-002
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi @ssiem12
This task is alot more difficult when your working with assemblies. Because the assembly contains the fullfilepath to the part files it contains. You will need to save as each document then swap the reference file links. This is how ilogic copy design is working.
See this post here on how this is achieved.
Or if this helped you, please, click (like)
Regards
Alan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello, after reading your question i think we have a solution for you in the form of an app. We are launching a Numbering app this week. I was wondering if you would be interested in testing it? The app is capable of renaming a lot of properties, numbering parts and assemblies and many more things.
You can send me a PM if interested!