Community
인벤터 Inventor - 한국어
프로그램에 관한 사용 방법, 기술, 정보 등을 검색하고, 질문을 통해 서로 도움을 주고 받을 수 있습니다.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

BOM 구조 기반의 규칙이 수정될 수 있나요?

1 REPLY 1
Reply
Message 1 of 2
ji_soo_lee
134 Views, 1 Reply

BOM 구조 기반의 규칙이 수정될 수 있나요?

안녕하세요

현재 아래의 규칙을 사용 중이며, 일부 내용을 수정하고 싶습니다.

제 규칙은 다음과 같습니다.

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
		'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

다른 기능은 잘 작동하지만, Phantom 또는 Reference structure(참조 구조)에서는 그렇지 않습니다.

ji_soo_lee_0-1695173174639.png

도움 주시기 바랍니다.

 

원문: https://forums.autodesk.com/t5/inventor-ilogic-and-vb-net-forum/can-my-rule-changing-part-number-bas...

1 REPLY 1
Message 2 of 2
ji_soo_lee
in reply to: ji_soo_lee

가능합니다. 다만, Bom뷰에서 Sub routine argument로 이동해야 합니다.

WritePartMumb(oModelBOMView.BOMRows)

문제 해결이 되었다면 솔루션으로 채택 부탁드립니다.

또는 도움이 되었다면 좋아요를 눌러 주세요.

Regards
Alan

 

답변 제공: @A.Acheson

원문: https://forums.autodesk.com/t5/inventor-ilogic-and-vb-net-forum/can-my-rule-changing-part-number-bas...

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums