solidworks怎么通过VBA给特征尺寸赋予值

 我来答
百度网友51266d27
2018-09-12 · TA获得超过6936个赞
知道大有可为答主
回答量:3718
采纳率:55%
帮助的人:559万
展开全部

参考下面的的代码:

Function SetSwPart()
  Dim SwApp As Object
  Dim SelMgr As Object, boolStatus As Boolean
  Dim longstatus As Long, longwarnings As Long
  
  Set SwApp = GetObject(, "sldworks.application")
  
  Set SetSwPart = SwApp.ActiveDoc
  
End Function
''****************************

Private Sub ReadSwDimensionInSldPrt()
  ''读SW的变量数据
  Dim oDic
  Set oDic = CreateObject("Scripting.Dictionary")
    
  
  nn = Range("A65536").End(3).Row
  Set Rng = Range("A1:Z" & nn)
  
    Dim swFeat As Object, swSubFeat As Object
    Dim swDispDim As Object, SwDim As Object
    Dim swAnn As Object
    Dim bRet As Boolean
    Dim Str
    
    Set SwApp = CreateObject("SldWorks.Application")
    Set SwPart = SetSwPart
    Set swFeat = SwPart.FirstFeature
    
    
    kk = 1
    Do While Not swFeat Is Nothing
        Debug.Print "  " + swFeat.Name
        Set swSubFeat = swFeat.GetFirstSubFeature
        Do While Not swSubFeat Is Nothing
            Debug.Print "      " + swSubFeat.Name
            
            Set swDispDim = swSubFeat.GetFirstDisplayDimension
            Do While Not swDispDim Is Nothing
                Set swAnn = swDispDim.GetAnnotation
                Set SwDim = swDispDim.GetDimension
                Debug.Print "          [" & SwDim.FullName & "] = " & SwDim.GetSystemValue2("")
                'Debug.Print swDim.FullName, swDim.GetSystemValue2("")
                Set swDispDim = swSubFeat.GetNextDisplayDimension(swDispDim)
            Loop
            Set swSubFeat = swSubFeat.GetNextSubFeature
        Loop
        
        Set swDispDim = swFeat.GetFirstDisplayDimension
        Do While Not swDispDim Is Nothing
            Set swAnn = swDispDim.GetAnnotation
            Set SwDim = swDispDim.GetDimension
            
            Debug.Print "    [" & SwDim.FullName & "] = " & SwDim.GetSystemValue2("")
            Debug.Print SwDim.FullName, SwDim.GetSystemValue2("")
            Str = SwDim.FullName
            oArr = Split(Str, "@")
            Str = oArr(0) & "@" & oArr(1)
            '
            Cells(kk, 5) = SwDim.GetSystemValue2("")
            Cells(kk, 4) = oArr(1)
            Debug.Print SwDim.GetSystemValue2("")
            oDic(Str) = SwDim.GetSystemValue2("")
            
            Set swDispDim = swFeat.GetNextDisplayDimension(swDispDim)
            kk = kk + 1
        Loop
        Set swFeat = swFeat.GetNextFeature
    Loop
    Dim oArr1, oArr2, cc
    cc = 6
    oArr1 = oDic.keys: oArr2 = oDic.items
    For kk = 1 To UBound(oArr1) + 1
        Cells(kk, 1 + cc) = kk - 1
        Cells(kk, 2 + cc) = "=" & """Arr(""" & " & " & Cells(kk, 1 + cc).Address(0, 0) & " & " & """)="""
        Cells(kk, 3 + cc) = "'" & Chr(34) & oArr1(kk - 1) & Chr(34)
        Cells(kk, 4 + cc) = Split(oArr1(kk - 1), "@")(1)
        Cells(kk, 5 + cc) = oArr2(kk - 1)
    
    Next kk
End Sub
ZESTRON
2025-04-16 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式