【SolidWorks宏】VBA操作SolidWorks程序对象

Rem 获取SolidWorks的标题并解析
Private Sub SldWorks_GetTitle()
    Dim SwApp As Object
    Dim TitleStr As String
    Dim PartStr() As String
    Dim Part1 As String
    Dim Part2 As String
    Dim currentDoc As SldWorks.modelDoc
    
    '获取SolidWorks应用程序对象
    Set SwApp = CreateObject("sldworks.application")
    '获取打开的当前文档
    Set currentDoc = SwApp.ActiveDoc
    If currentDoc Is Nothing Then
        MsgBox "请打开一个部件"
    Else
        '获取标题
        TitleStr = currentDoc.GetTitle
    
        '将标题用 下划线(_)分解成两部分 PartStr(0) 图号  PartStr(1) 部件
        If InStr(TitleStr, Chr(95)) > 0 Then
            PartStr = Split(TitleStr, Chr(95))
            Part1 = PartStr(0)
            Part2 = PartStr(1)
        Else
            Part1 = TitleStr
            Part2 = "命名不符合标准"
        End If
    End If
End Sub

Rem 设置当前文档的自定义信息
Private Sub SldWorks_SetCustomInformation(customStr As String, FieldName As String)
    Dim SwApp As Object
    Dim TitleStr As String
    Dim PartStr() As String
    Dim Part1 As String
    Dim Part2 As String
    Dim currentDoc As SldWorks.modelDoc
    Dim retval As Boolean
    '获取SolidWorks应用程序对象
    Set SwApp = CreateObject("sldworks.application")
    '获取打开的当前文档

    Set currentDoc = SwApp.ActiveDoc
    
    '设置对应字段的值
    If currentDoc Is Nothing Then
        MsgBox "请打开一个部件"
    Else
        'AddCustomInfo3(Configration as String,FieldName As String,FieldType as Long,fieldvalue as String ) as Boolean
        retval = currentDoc.AddCustomInfo3("", FieldName, swCustomInfoText, "")
        'CustomInfo2(Configration as String,FiedlName as String) as String
        currentDoc.CustomInfo2("", FieldName) = customStr
    End If
End Sub

Rem 获取当前文档的自定义信息
Private Function SldWorks_GetCustomInformation(FieldName As String) As String
    Dim SwApp As Object
    Dim TitleStr As String
    Dim PartStr() As String
    Dim Part1 As String
    Dim Part2 As String
    Dim currentDoc As SldWorks.modelDoc
    
    '获取SolidWorks应用程序对象
    Set SwApp = CreateObject("sldworks.application")
    Set currentDoc = SwApp.ActiveDoc
    '获取打开的当前文档
    If currentDoc Is Nothing Then
        MsgBox "请打开一个部件"
    Else
        '设置对应字段的值
        'CustomInfo2(Configration as String,FiedlName as String) as String
        SldWorks_GetCustomInformation = currentDoc.CustomInfo2("", FieldName)
    End If
End Function

Rem 获取部件质量
Private Function SldWorks_GetPartMass(densityStr As String) As String
    '声名
    Dim volumeStr As String
    Dim massProperties As Variant
    Dim currentDoc As Object
    Dim volume As Double
    Dim density As Double
    '执行过程
    Set SwApp = CreateObject("SldWorks.Application")
    Set currentDoc = SwApp.ActiveDoc
    
    '获取当前文档的质量属性
    If currentDoc Is Nothing Then
        MsgBox "请打开一个部件"
    Else
        massProperties = currentDoc.GetMassProperties
        '从质量属性中提取出体积
        volumeStr = str(massProperties(3) * (10 ^ 9))
        volume = Val(volumeStr)
        density = Val(densityStr)
        SldWorks_GetPartMass = Format(volume * density / (10 ^ 9), "##0.###")
    End If
End Function

Rem 打开部件查看部件特征 然后关闭
Private Sub SldWorks_OpenPart(filePath As String)
    
    Dim SwApp As SldWorks.SldWorks
    Dim PartDoc As SldWorks.PartDoc
    Dim modelDoc As SldWorks.ModelDoc2
    Dim ParameterDoc As SldWorks.Parameter
    
    Dim Myfeature As SldWorks.Feature
    
    Set SwApp = CreateObject("SldWorks.Application")
    
    'SwApp.OpenDoc(Name as String ,Type as Long ) as Object
    
    Set PartDoc = SwApp.OpenDoc(filePath, 1)
    'PartDoc.FeatureByName(name as String ) as Object

    Set Myfeature = PartDoc.FeatureByName("草图1")
    'Myfeature.Parameter(name as String ) as Object
    Set ParameterDoc = Myfeature.Parameter("upR1")
    'ParameterDoc.GetStringValue
    MsgBox (Myfeature.Parameter("upR1").Value)
    SwApp.Quit (filePath)
    Set SwApp = Nothing
End Sub

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!很抱歉听到您在安装 SolidWorks VBA 7.1 时遇到了问题。 要解决此问题,我建议您执行以下步骤: 1. 确认您的计算机是否符合 SolidWorks VBA 7.1 的最低系统要求。您可以在 SolidWorks 官方网站上查找这些信息。如果您的计算机不符合要求,则需要升级硬件或更改操作系统。 2. 确保您从官方网站下载了最新版本的 SolidWorks VBA 7.1,并且已经正确地安装了它。如果您使用的是旧版本,或者安装过程中出现任何错误,请尝试重新下载并安装最新版本。 3. 检查您的计算机是否已经安装了 Visual Basic for Applications (VBA) 运行时。如果没有安装,您需要先安装 VBA 运行时,然后再安装 SolidWorks VBA 7.1。 4. 如果您已经尝试了以上步骤仍然无法解决问题,您可以尝试卸载 SolidWorks VBA 7.1 并重新安装。如果问题仍然存在,请考虑联系 SolidWorks 的技术支持人员获取帮助。 希望这些步骤能帮助您解决问题。如果您需要进一步的帮助,请随时与我联系。 ### 回答2: 首先,安装SolidWorks时需要先安装Microsoft Office,因为VBA是Microsoft的编程语言。而VBA的版本与Microsoft Office的版本密切相关,所以VBA的版本也需要和安装的Microsoft Office版本相符合,这也是安装VBA7.1失败的原因之一。 解决该问题的方法之一是通过查看Microsoft Office的版本号来确定需要安装的VBA版本,并确保正确下载和安装。此外,还需要检查计算机的操作系统和SolidWorks版本是否与VBA7.1兼容,有时可能需要更新计算机的操作系统才能成功安装VBA7.1。 如果此方法仍然无法解决问题,可以尝试重新安装SolidWorks,并在安装过程中选择安装VBA7.1。如果在安装中遇到任何错误提示,请仔细阅读错误消息并尝试按照提示进行修复。 最后,如果以上方法都无法解决问题,可以联系SolidWorks官方技术支持或寻求专业的计算机维护人员的帮助。他们将能够帮助您找到其他可能的解决方案,以确保安装VBA7.1成功。 ### 回答3: 如果您在安装 SolidWorks 时遇到了 VBA 7.1 安装失败的问题,一般是以下几种情况: 1. 操作系统不兼容 SolidWorks 2017 及更新版本需要使用 VBA 7.1,而 VBA 7.1 只支持 64 位操作系统。如果您的电脑是 32 位操作系统,那么安装 VBA 7.1 将会失败。 2. 没有管理员权限 在安装 SolidWorks 时,需要使用管理员权限,否则会出现各种安装失败的问题。请使用管理员权限登录您的电脑,并尝试重新安装 SolidWorks。 3. Windows 更新不完整 如果您的 Windows 更新不完整或存在错误,那么就可能会影响 VBA 7.1 的安装。请确保您的 Windows 更新是最新的,并在安装 SolidWorks 之前进行完整的系统更新。 4. 安装包损坏或缺失 如果您使用的 SolidWorks 安装包损坏或缺失了必要的文件,那么 VBA 7.1 安装也会失败。请下载最新的 SolidWorks 安装包,并在安装之前进行完整的文件校验或 MD5 校验。 总之,在没有更具体的信息之前,对此问题的回答无法更加详细。但以上的原因是比较普遍的,希望能够帮助您解决 SolidWorks 安装 VBA 7.1 失败的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值