SolidWorks API:对象模型与关系解析

SolidWorks API 对象模型包含数百个接口和数千个方法和属性。所有接口都有允许通过另一个对象方法或属性访问某些对象。

本节包含解释 SolidWorks API 中的类和接口之间的关系、名称约定和可访问性的文章。有关详细信息,请按照本节中的文章进行操作。

SolidWorks API 对象模型类层次结构图

请访问网站(https://www.codestack.net/solidworks-api/getting-started/api-object-model/class-diagram/)以获得更好的使用体验,本文只为翻译,并不提供文中所述图片上的交互式操作和超级链接跳转(重定向)功能。

下图显示了 SolidWorks API 对象模型中接口之间的关系。这不是一个完整的类层次结构,而是最常用的方法和接口的表示。

图表是交互式的,可以使用鼠标滚轮放大和缩小,也可以使用鼠标右键或左键平移。右下角的导航控件允许放大和缩小以及缩放以适应。

导航控件

所有框和箭头都是可点击的,并将重定向到有关特定方法、属性或接口的信息页面。

导航跳转信息页面

SolidWorks API 对象模型类层次结构图

图例

图例

如何使用SolidWorks API 帮助中的“访问器”(Accessors)

某些接口的可访问性可以在 SolidWorks API 帮助文档中特定接口的“访问器”部分找到。

例如,下面的快照是 IAnnotation 接口的访问器部分。https://help.solidworks.com/2023/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IAnnotation.html

API帮助文档中访问器部分(IAnnotation 接口)

这意味着可以通过 IAnnotation::GetNext3 方法或 IAnnotationView::Annotations 属性或此列表中的其他属性或方法访问 IAnnotation 接口。

某些接口可以显式或隐式地从一个接口强制转换为另一个接口。例如,IModelDoc2 表示 IPartDoc、IAssemblyDoc、IDrawingDoc 接口的“父接口”(尽管没有直接继承)。

这意味着父对象和特定对象都将指向内存中的同一对象。

VBA

Dim swModel As SldWorks.ModelDoc2
...
Dim swPart As SldWorks.PartDoc
Set swPart = swModel

VB.NET

Dim swModel As IModelDoc2
...
Dim swPart As IPartDoc = CType(swModel, IPartDoc)

C#

IModelDoc2 model;
...
IPartDoc part = model as IPartDoc;

C++

LPMODELDOC2 pModelDoc;
...
LPPARTDOC pPartDoc = NULL;
hres = pModelDoc->QueryInterface(IID_IPartDoc, (LPVOID*)&pPartDoc);

带 I 和不带 I 的 SolidWorks API 方法、属性与对象之间的区别

SolidWorks API 帮助中的方法、属性和对象(接口)存在 2 个版本:

  • 开头是I(例如ISldWorks,IModelDoc2,IAnnotation,ISldWorks::IActiveDoc)
  • 开头没有I(例如SldWorks,ModelDoc2,Annotation,SldWorks::ActiveDoc)

这两个可替代项对应于相同的对象或方法。主要区别在于:

  • 带 I 版本的方法、属性和对象不公开事件Events。

以下快照显示声明为 SldWorks 的变量的可用成员,其中事件Events(闪电符号)可用。

事件可用

以下快照显示声明为 ISldWorks 的变量的可用成员。其中没有可用的事件。

没有可用的事件

带 I 版本的方法通常返回类型安全的接口,而不是对象或 IDispatch。这意味着在编译时强类型安全的语言(如 C#)不需要显式强制转换:

ISldWorks app;
...
IModelDoc2 model = app.IActiveDoc; //correct
IModelDoc2 model = app.ActiveDoc; //Compile error
IModelDoc2 model = app.ActiveDoc as IModelDoc2; //correct

在 SolidWorks API 中方法、属性和接口的命名

SolidWorks API(和 SolidWorks )都是向后兼容的,这意味着旧版本的 API 与较新版本的 SolidWorks 兼容。这意味着在发布新版本时,不应更改 API 方法的签名和行为。为此,SolidWorks 引入了方法和接口名称的修订系统。每当新版本的 API 可用时,方法名的取名规则为【方法名 + 最新版本 + 1】。例如,ISldWorks::OpenDoc6 是 ISldWorks::OpenDoc5 方法的较新版本。而IModelDoc2是IModelDoc接口的较新(和当前)版本。

过时的(Obsolete)方法和接口

尽管 SolidWorks 是向后兼容的,并且该方法的所有版本都应该有效,但建议使用与 SolidWorks 目标程序应支持的最低版本兼容的最新版本。

主要原因是:

  • 过时的方法(或任何备注和说明)可能在 API 文档中不可用。因此,可能需要查看以前版本的 API 帮助文档。

过时的IModelDoc接口

  • 并不总是知道官方添加新版本替换方法的原因是什么。这可能是由于旧版本方法中存在某些错误(或行为)而发生的,如果使用此方法,可能会给程序带来未知的副作用。
  • 在出现问题的情况下,向支持人员请求帮助可能会有问题,因为第一个明显的建议是将方法升级到新版本,因为旧方法可以被视为“保修无效”。

文章翻译自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
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空