使用SOLIDWORKS API:获取装配体中可见零部件

在特征树中选择的组件

此 VBA 宏获取指向装配体中所有可见(未压缩和未隐藏)组件的指针。使用 SOLIDWORKS API的多选方法选择所有组件。

Dim swApp As SldWorks.SldWorks
Sub main()
    Set swApp = Application.SldWorks
    Dim swAssy As SldWorks.AssemblyDoc
    Set swAssy = swApp.ActiveDoc
    If Not swAssy Is Nothing Then
        Dim vComps As Variant
        vComps = GetVisibleComponents(swAssy, False)
				'选择多个对象并返回模型中选定的对象数。
        swAssy.Extension.MultiSelect2 vComps, False, Nothing
    Else
        MsgBox "请打开装配体Please open assembly document"
    End If
End Sub

Function GetVisibleComponents(assy As SldWorks.AssemblyDoc, topLevelOnly As Boolean) As Variant
    Dim swVisComps() As SldWorks.Component2
    Dim isInit As Boolean
    isInit = False
    Dim vComps As Variant
		'获取此装配体的活动配置中的所有零部件。
    vComps = assy.GetComponents(topLevelOnly)
    Dim i As Integer
    For i = 0 To UBound(vComps)
        Dim swComp As SldWorks.Component2
        Set swComp = vComps(i)
        'IsSuppressed判断组件是否被压缩
				If False = swComp.IsSuppressed() And IsVisible(swComp) Then
            If Not isInit Then
                ReDim swVisComps(0) '初始化数组
                isInit = True
            Else
								'重新定义数组,增加数组长度,Preserve 保留原来的数据
                ReDim Preserve swVisComps(UBound(swVisComps) + 1)
            End If
						'给数组中最后一个元素赋值
            Set swVisComps(UBound(swVisComps)) = swComp
        End If
    Next
    GetVisibleComponents = swVisComps '将组件数组返回
End Function

Function IsVisible(comp As SldWorks.Component2) As Boolean
    Dim swThisComp As SldWorks.Component2
    Set swThisComp = comp
    While Not swThisComp Is Nothing
				'如果组件不可见,返回false并退出函数
        If swThisComp.Visible = swComponentVisibilityState_e.swComponentHidden Then
            IsVisible = False
            Exit Function
        End If
				'判断父组件的可见性
        Set swThisComp = swThisComp.GetParent
    Wend
    IsVisible = True
End Function

文章翻译自https://www.codestack.net/

仅供学习使用。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空