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