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 个版本:
这两个可替代项对应于相同的对象或方法。主要区别在于:
以下快照显示声明为 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 目标程序应支持的最低版本兼容的最新版本。
主要原因是:
过时的IModelDoc接口
文章翻译自https://www.codestack.net/
仅供学习使用。