SOLIDWORKS二次开发与API教程(2020版)
上QQ阅读APP看书,第一时间看更新

2.1 SOLIDWORKS API对象模型概述

图2-1所示是对SOLIDWORKS API对象模型的概要描述。本章将学习API对象模型中的接口对象如何组织以及如何访问。在API在线帮助文件里也有一个类似的图表。为简单起见,一些较低层级的对象未显示在本图表中。

图2-1 SOLIDWORKS API对象模型

设计的宏是用来检查SOLIDWORKS API对象模型的层次结构的。注意,必须先访问层次结构中的高层级对象,才能访问层次结构中的低层级对象。

以ModelDoc2接口为例。要获得指向ModelDoc2的接口指针,上层Sld-Works对象必须先被连接,然后调用访问器才可以获得一个指向ModleDoc2的接口指针,如图2-2所示。

本章案例学习中的宏会重点说明连接一个新文件和连接已有文件之间的不同。在SldWorks接口中有不同的访问器方法可以完成这项工作。本案例学习将有助于读者理解ModelDoc2对象和其他更具体文件对象的区别,如PartDoc、AssemblyDoc和DrawingDoc。

图2-2 访问器

● Visual Basic自动类型转换 与C++相比,Visual Basic是一种更直观、更容易学习的编程语言。在自动类型转换上,Visual Basic非常方便。例如,PartDoc、Assem-blyDoc和DrawingDoc对象都派生自ModelDoc2对象,如果从其中的一个派生对象调用属于Mode-lDoc2对象的方法,则调用可以成功。这是因为Visual Basic会自动在上层对象中查找是否存在这个方法,然后从上层对象调用该方法。换句话说,Visual Basic会自动将调用对象转换为其基类类型,例如PartDoc.InsertNote(InsertNote是属于ModelDoc2对象的方法)的调用。

自动类型转换在两个方向上都是有效的。如果一个上层对象调用存在于子类对象的方法,调用也将成功。尽管GetPartBox方法是在派生对象PartDoc中实现的,ModelDoc2.GetPartBox仍然是合法的API调用。

对缺少经验的程序员来说,Visual Basic隐藏了部分COM编程的复杂性,这将有助于他们将精力集中在解决程序的主要任务上,而不是放在COM自动化编程的复杂性上。

在C++中,当调用接口中的特定方法时,基类对象和派生对象间的类型转换必须显式执行。