' ******************************************************************************
' 从装配体里面获取组件
' ******************************************************************************
Option Explicit '强制在模块级别显式声明所有变量
' *********************定义SOLIDWORKS API 对象*************************'
' 应用程序变量 Solidworks application
Dim swApp As SldWorks.SldWorks
' 文档变量 Solidworks document
Dim swDoc As SldWorks.ModelDoc2
' 装配体变量 Solidworks Assembly
Dim swAssembly As SldWorks.AssemblyDoc
' 组件变量 Solidworks Component
Dim swComponent As SldWorks.Component2
' 主程序
Sub main()
' 将当前打开的(Solidworks application)应用程序赋值给swApp变量
Set swApp = Application.SldWorks
'将当前打开的(Solidworks document)文档赋值给swDoc 变量的值
Set swDoc = swApp.ActiveDoc
' 检查是否成功设置了 swDoc 变量的值
If swDoc Is Nothing Then
MsgBox "Solidworks document is not opened."
Exit Sub
End If
' 如果打开了,将文档赋值给装配体变量
Set swAssembly = swDoc
' 创建一个存储组件变量的列表
Dim vComponents As Variant
' 获得装配体中的组件列表
vComponents = swAssembly.GetComponents(True)
' 用于组件的循环变量
Dim index As Integer
' 用于存储组件的名称
Dim CompName As String
' 在Components List中进行循环
For index = 0 To UBound(vComponents)
' 通过索引 vComponents 变量来获取当前组件
Set swComponent = vComponents(index)
' 获取组件的名称
CompName = swComponent.Name
Next
End Sub
结果如下: