一、SOLIDWORKS API 的向后兼容机制
SOLIDWORKS API(和 SOLIDWORKS)都向后兼容。
也就是说,老版本的solidworks软件画的三维模型,可以用新版本的solidworks软件直接打开。(正常情况下)
新版本的SOLIDWORKS API兼容旧版本的SOLIDWORKS API。
同样的道理,老版本的solidworks软件制作的宏文件,可以在新版本的solidworks软件直接使用。(正常情况下)
为确保这一兼容性,当推出 API 新版本时,不会对原有方法的签名和行为进行修改,而是采用版本修订系统来管理方法和接口的命名。
在新版本发布时,不会更改原有老版本 API 方法的签名(名称)。为此,SOLIDWORKS 引入了方法和接口名称的修订系统。每当有新版本的 API 可用时,它就会作为 MethodName: Last Revision + 1 添加到类图中。例如,ISldWorks::OpenDoc6 是ISldWorks::OpenDoc4方法的更新版本。 如果你现在查阅solidworksAPI,你会发现IModelDoc2 是 IModelDoc 接口的更新(和当前)版本。
二、过时方法与接口的处理建议
尽管 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
🚩整理不易、请点赞+收藏+关注 谢谢!🚩

1万+

被折叠的 条评论
为什么被折叠?



