Can I change all of Filename as Part number throughout all of class

Can I change all of Filename as Part number throughout all of class

ssiem12
Contributor Contributor
465 Views
4 Replies
Message 1 of 5

Can I change all of Filename as Part number throughout all of class

ssiem12
Contributor
Contributor

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

0 Likes
Accepted solutions (1)
466 Views
4 Replies
Replies (4)
Message 2 of 5

A.Acheson
Mentor
Mentor

Hi @ssiem12 

 

Are you trying to change the part number to filename or filename to part number? 

If this solved a problem, please click (accept) as solution.‌‌‌‌
Or if this helped you, please, click (like)‌‌
Regards
Alan
0 Likes
Message 3 of 5

ssiem12
Contributor
Contributor

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

 

0 Likes
Message 4 of 5

A.Acheson
Mentor
Mentor
Accepted solution

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.

https://forums.autodesk.com/t5/inventor-ilogic-and-vb-net-forum/help-regarding-renaming-assembly-fil...

If this solved a problem, please click (accept) as solution.‌‌‌‌
Or if this helped you, please, click (like)‌‌
Regards
Alan
0 Likes
Message 5 of 5

Support_Charlies3DT
Contributor
Contributor

@ssiem12 

 

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!

0 Likes