跳到主要内容

使用SOLIDWORKS API获取特征类型名称的VBA宏

这个VBA宏使用SOLIDWORKS API读取特征管理器树中所选特征的类型名称,并以以下格式在消息框中显示结果:

<特征名称>: <类型名称1>, <类型名称2>

在消息框中显示所选特征的类型名称{ width=350 }

其中,类型名称1 是通过SOLIDWORKS API中的IFeature::GetTypeName方法检索到的旧版本特征类型名称,而类型名称2是通过IFeature::GetTypeName2方法检索到的新版本特征类型名称。

对于使用Instant3D功能创建的基准挤出和切割挤出特征,类型名称2将等于ICE。使用类型名称1的值来获取特定的特征类型名称。

如果需要将结果复制为文本格式,只需点击消息框,按下Ctrl+C复制该值,然后通过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 "请打开模型"
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