Sub Main() Dim oDoc As PartDocument oDoc = ThisDoc.Document 'Call oDoc.Update() oDef = oDoc.ComponentDefinition 'For Each oBody In oDef.SurfaceBodies ' MessageBox.Show("Body Info: " _ ' & vbCr _ ' & vbCr & "Name: " & vbTab & vbTab & vbTab & oBody.Name _ ' & vbCr & "Appearance Source Type: " & vbTab & oBody.AppearanceSourceType _ ' & vbCr & "Is Solid: " & vbTab & vbTab & vbTab & oBody.IsSolid _ ' & vbCr & "Is Transient: " & vbTab & vbTab & oBody.IsTransient _ ' & vbCr & "Type: " & vbTab & vbTab & vbTab & oBody.Type _ ' & vbCr & "Visible: " & vbTab & vbTab & vbTab & oBody.Visible _ ' & vbCr, "Solid Body Info") 'Next ' ' Change rule assignment based on user selection ' SetBodyStyle("Component1_2018-12-10_A", Comp1_Style) SetBodyStyle("Component2_2018-12-10_A", Comp2_Style) SetBodyStyle("Component3_2018-12-10_A", Comp3_Style) End Sub ' This variable is shared between the Sub's Private oDef As SheetMetalComponentDefinition Sub SetBodyStyle(bodyName As String, styleName As String) Dim oBodyFound As SurfaceBody = Nothing Dim oStyleFound As SheetMetalStyle = Nothing Dim oBody As SurfaceBody For Each oBody In oDef.SurfaceBodies If oBody.Name = bodyName Then oBodyFound = oBody Exit For End If Next oStyleFound = oDef.SheetMetalStyles(styleName) ' This doesn't need a loop. If the style is not found, there will be an error. If oStyleFound IsNot Nothing AndAlso oBodyFound IsNot Nothing AndAlso oDef.GetBodySheetMetalStyle(oBodyFound) IsNot oStyleFound Then Call oDef.SetBodySheetMetalStyle(oBodyFound, oStyleFound) End If ' MessageBox.Show(oBodyFound.CreatedByFeature, "Title Comp Def") ' MessageBox.Show(oBodyFound.DataIO, "Title Name") ' MessageBox.Show(oBodyFound.Edges, "Title Name") ' MessageBox.Show(oBodyFound.IsPointInside, "Title Name") ' MessageBox.Show(oBodyFound.Parent, "Parent") ' MessageBox.Show(oBodyFound.RangeBox, "Title Name") ' MessageBox.Show(oBodyFound.Vertices, "Title Name") ' MessageBox.Show(oBodyFound.Volume, "Title Name") ' MessageBox.Show(oBodyFound.Wires, "Title Name") End Sub