VBA macro to get feature type names using SOLIDWORKS API
This VBA macro reads the type names of the selected features in the feature manager tree using SOLIDWORKS API and displays the result in the message box in the following format:
<Feature Name>: <Type Name 1>, <Type Name 2>
{ width=350 }
Where Type Name 1 is an older version of feature type name retrieved via IFeature::GetTypeName SOLIDWORKS API method, while Type Name 2 is a newer version retrieved via IFeature::GetTypeName2
Type Name 2 will be equal to ICE for the boss-extrude and cut-extrude features created using the Instant3D functionality. Use the value of Type Name 1 to get the specific feature type name.
If it is required to copy the result into the text format, simply click on message box and press Ctrl+C to copy the value and paste it into any text editor, like Notepad via Ctrl+V:
{ width=250 }
Dim swApp As SldWorks.SldWorks
Sub main()
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swModel = swApp.ActiveDoc
If Not swModel Is Nothing Then
MsgBox GetTypeNames(swModel.SelectionManager)
Else
MsgBox "Please open model"
End If
End Sub
Function GetTypeNames(selMgr As SldWorks.SelectionMgr) As String
Dim typeNames As String
Dim i As Integer
For i = 1 To selMgr.GetSelectedObjectCount2(-1)
On Error Resume Next
Dim swFeat As SldWorks.Feature
Set swFeat = selMgr.GetSelectedObject6(i, -1)
If Not swFeat Is Nothing Then
typeNames = typeNames & vbLf & swFeat.Name & ": " & swFeat.GetTypeName() & "; " & swFeat.GetTypeName2
End If
Next
GetTypeNames = typeNames
End Function