SOLIDWORKS VBA 自学笔记007、SOLIDWORKS API 中方法和属性的命名

一、SOLIDWORKS API 的向后兼容机制

SOLIDWORKS API(和 SOLIDWORKS)都向后兼容。

也就是说,老版本的solidworks软件画的三维模型,可以用新版本的solidworks软件直接打开。(正常情况下)

新版本的SOLIDWORKS API兼容旧版本的SOLIDWORKS API。

同样的道理,老版本的solidworks软件制作的宏文件,可以在新版本的solidworks软件直接使用。(正常情况下)

为确保这一兼容性,当推出 API 新版本时,不会对原有方法的签名和行为进行修改,而是采用版本修订系统来管理方法和接口的命名。

在新版本发布时,不会更改原有老版本 API 方法的签名(名称)。为此,SOLIDWORKS 引入了方法和接口名称的修订系统。每当有新版本的 API 可用时,它就会作为 MethodName: Last Revision + 1 添加到类图中。例如,ISldWorks::OpenDoc6ISldWorks::OpenDoc4方法的更新版本。 如果你现在查阅solidworksAPI,你会发现IModelDoc2IModelDoc 接口的更新(和当前)版本。

二、过时方法与接口的处理建议

尽管 SOLIDWORKS API 保持向后兼容,但建议在开发时优先使用与目标程序兼容的最新版本。尽量在新版本的软件中使用新方法。比如你当前开发的目标版本是solidworks2020,你在查看solidworks2020 API帮助手册中如果看到过时的方法,那请你尽可能的不ya使用这个方法。原因如下:

1、文档支持限制:

过时方法(及其注释和说明)可能不会出现在最新的 API 文档中。这就需要开发者维护旧版本的 API 帮助文档,增加了开发和维护的成本与复杂度。

2、潜在问题风险:

可能是由于旧版本方法存在某些 bug 或行为问题,若继续使用,可能会给程序带来未知错误。

三、一段测试代码

如下是一段测试代码(solidworksVBA代码),你可以在不同版本的的solidworksVBA编辑器中测试:(需要提前在C盘的根目录下创建一个名叫“零件1.SLDPRT”的零件文档)。

Option Explicit

Dim swApp As SldWorks.SldWorks

Sub main()
    ' 连接到SOLIDWORKS应用程序
    Set swApp = Application.SldWorks
    If swApp Is Nothing Then
        MsgBox "无法连接到SOLIDWORKS应用程序", vbCritical
        Exit Sub
    End If
    
    ' 定义参数
    Dim filePath As String
    Dim docType As Integer
    Dim openOptions As Integer
    Dim configName As String
    Dim errors As Long
    Dim warnings As Long
    
    ' 初始化参数
    filePath = "C:\零件1.SLDPRT"
    docType = 1 ' 1=零件,2=装配体,3=工程图
    openOptions = 8 ' swOpenDocOptions_Silent(静默打开)
    configName = "" ' 使用默认配置
    errors = 0
    warnings = 0
    
    ' 使用OpenDoc6方法(推荐新版本)
    Dim modelDoc As Object
    
    ' 请注意,这里写了两个方法。OpenDoc4方法,要用到5个参数。OpenDoc6方法,要用到6个参数。
    Set modelDoc = swApp.OpenDoc4(filePath, docType, openOptions, configName, errors)
    Set modelDoc = swApp.OpenDoc6(filePath, docType, openOptions, configName, errors, warnings)
        'https://help.solidworks.com/2018/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISldWorks~IOpenDoc4.html
        'https://help.solidworks.com/2018/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.ISldWorks~OpenDoc6.html
    
    ' 检查打开结果
    If modelDoc Is Nothing Then
        MsgBox "打开文档失败,错误码:" & errors & vbCrLf & _
               "警告码:" & warnings, vbExclamation
    Else
        MsgBox "文档打开成功!", vbInformation
        ' 此处可添加对modelDoc的后续操作
    End If
End Sub

为了验证以上所阐述的问题,请多测试几个版本。

四、文章参考


https://www.codestack.net/solidworks-api/getting-started/api-object-model/naming-convention/


https://help.solidworks.com/2018/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISldWorks~IOpenDoc4.html


https://help.solidworks.com/2018/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.ISldWorks~OpenDoc6.html


🚩整理不易、请点赞+收藏+关注 谢谢!🚩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值