MassProperties.Mass from virtual component

MassProperties.Mass from virtual component

pavol_krasnansky
Enthusiast Enthusiast
1,087 Views
7 Replies
Message 1 of 8

MassProperties.Mass from virtual component

pavol_krasnansky
Enthusiast
Enthusiast

Hello
How to get MassProperties.Mass from virtual component in BOM in assembly?
Thank you

Dim oAsmDoc As AssemblyDocument
oAsmDoc = ThisApplication.ActiveEditDocument

Dim oBOM As BOM
oBOM = oAsmDoc.ComponentDefinition.BOM

Dim oBOMView As BOMView
oBOMView = oBOM.BOMViews.Item(1)

Dim oBomRow As BOMRow
Dim oCompDef As ComponentDefinition

Riadok_Tabulka_Rozpiska_Data_Modelu = -1

For i = 1 To oBOMView.BOMRows.Count
	
	oBomRow = oBOMView.BOMRows.Item(i)
	oCompDef = oBomRow.ComponentDefinitions.Item(1)
	
	If TypeOf oBomRow.ComponentDefinitions(1) Is VirtualComponentDefinition Then
		
		Mass_Of_Virtual_Component = Round(oBomRow.ComponentDefinitions(1).MassProperties.Mass, 3) & " kg"
		MsgBox("Mass_Of_Virtual_Component" & vbCrlf & Mass_Of_Virtual_Component)
		
	End If
	
Next
0 Likes
Accepted solutions (1)
1,088 Views
7 Replies
Replies (7)
Message 2 of 8

marcin_otręba
Advisor
Advisor

you can use mass from property set:

Dim oAsmDoc As AssemblyDocument
 oAsmDoc = ThisApplication.ActiveEditDocument

Dim oBOM As BOM
 oBOM = oAsmDoc.ComponentDefinition.BOM

Dim oBOMView As BOMView
 oBOMView = oBOM.BOMViews.Item(1)

Dim oBomRow As BOMRow
Dim oCompDef As VirtualComponentDefinition

Riadok_Tabulka_Rozpiska_Data_Modelu = -1

For i = 1 To oBOMView.BOMRows.Count
    
    oBomRow = oBOMView.BOMRows.Item(i)
    oCompDef = oBomRow.ComponentDefinitions.Item(1)
    
    If TypeOf oCompDef Is VirtualComponentDefinition Then
       
        Mass_Of_Virtual_Component = Round(oCompDef.PropertySets.Item(3).Item("Mass").Value, 3) & " kg"
        MsgBox ("Mass_Of_Virtual_Component" & vbCrLf & Mass_Of_Virtual_Component)
      
    End If
Next

Hi, maybe you want to check my apps:


DrawingTools   View&ColoringTools   MRUFolders

0 Likes
Message 3 of 8

pavol_krasnansky
Enthusiast
Enthusiast

Thank you, but this solution doesn't work.

0 Likes
Message 4 of 8

marcin_otręba
Advisor
Advisor

hymn, what do you mean that it doesn’t work? do you get any error? did you placed this code or modified yours? what version of inventor you use?

Hi, maybe you want to check my apps:


DrawingTools   View&ColoringTools   MRUFolders

0 Likes
Message 5 of 8

marcin_otręba
Advisor
Advisor
Accepted solution

Hi,

 

i checked oit again an this line resulted error:

 

Dim oCompDef As VirtualComponentDefinition

 

i corrected it:

 

Dim oAsmDoc As AssemblyDocument
 oAsmDoc = ThisApplication.ActiveEditDocument

Dim oBOM As BOM
 oBOM = oAsmDoc.ComponentDefinition.BOM

Dim oBOMView As BOMView
 oBOMView = oBOM.BOMViews.Item(1)

Dim oBomRow As BOMRow
Dim oCompDef As ComponentDefinition

Riadok_Tabulka_Rozpiska_Data_Modelu = -1

For i = 1 To oBOMView.BOMRows.Count
    
    oBomRow = oBOMView.BOMRows.Item(i)
    oCompDef = oBomRow.ComponentDefinitions.Item(1)
    
    If TypeOf oCompDef Is VirtualComponentDefinition Then
       
        Mass_Of_Virtual_Component = Round(oCompDef.PropertySets.Item(3).Item("Mass").Value, 3) & " kg"
        MsgBox ("Mass_Of_Virtual_Component" & vbCrLf & Mass_Of_Virtual_Component)
      
    End If
Next

 

 

 

Hi, maybe you want to check my apps:


DrawingTools   View&ColoringTools   MRUFolders

0 Likes
Message 6 of 8

pavol_krasnansky
Enthusiast
Enthusiast

Thank you. This code works without error, but result is bad. In mass isn't point.

I have Inventor Professional 2019 with last update.

 

001.png002.png

0 Likes
Message 7 of 8

marcin_otręba
Advisor
Advisor

value is in grams. so you need only to divide it by 1000

Hi, maybe you want to check my apps:


DrawingTools   View&ColoringTools   MRUFolders

0 Likes
Message 8 of 8

pavol_krasnansky
Enthusiast
Enthusiast

That did not cross my mind, because I have default unit for mass kg. Thank you for you help.

0 Likes