2.2 应用程序对象
本章将介绍连接SOLIDWORKS软件和每种文件类型的API分类。要调用这些API,必须首先连接到确定的应用程序对象。
2.2.1 SldWorks对象
表2-1是最顶层的API接口对象SldWorks的描述。
表2-1 SldWorks对象
注意
表2-1并不是所描述接口的所有方法和属性的完整文件。要获得完整的列表,请参考API帮助文档。
操作步骤
步骤1 创建新的宏 单击宏工具栏上的【新建宏】创建新的宏。命名这个宏为ObjectModel.swp。
步骤2 查看默认宏代码 默认情况下应该出现下面的宏代码:
扫码看视频
2.2.2 SOLIDWORKS 2020类型库
通过创建特定接口类型而不是通用类型的对象可以增强Visual Basic程序。为了更加有效地利用这一点,VBA添加了SOLIDWORKS类型库的引用。
为了确保SOLIDWORKS类型库已被正确引用,请在VBA中单击【工具】/【引用】,此时【SldWorks 2020 Type Library】复选框应处于勾选状态,如图2-3所示。
图2-3 SOLIDWORKS 2020类型库
如果SOLIDWORKS 2020类型库未被正确加入,请浏览至其位置(与SOLIDWORKS软件一同被安装):<安装目录>\SOLIDWORKS\sldworks.tlb,进行安装。
这个文件包含了所有公开的API接口定义及它们包含的可用于SOLIDWORKS自动操作的成员。当类型库被引用时,句点(.)分隔符后会出现下拉列表,以显示可使用的SOLIDWORKS对象、属性和方法[称为“智能感知”(IntelliSense)]。
2.2.3 IntelliSense
IntelliSense是Microsoft的一项技术,通过显示类的定义、方法、属性、参数和注释,使程序员在向编辑器中输入代码时,可以预先获知可选代码。
IntelliSense还可以最大限度地减少字符输入,因为通过从列表中选择方法和属性可自动完成代码行,如图2-4所示。
图2-4 IntelliSense
2.2.4 早绑定和后绑定
绑定是匹配函数调用与所使用对象的实际方法和属性的过程。
1.早绑定
为了更好地理解早绑定(Early binding),可以将“绑定”想象成图书管理员在书中查找特定章节的过程。如果图书管理员在卡片目录(card catalogue)中查找某本书,就可以获知图书馆是否有此藏书。如果有此藏书,图书管理员就必须到此书所在书架找书,并查找特定章节。如果那个书架上没有这本书,那么卡片目录就存在错误。如果找到了藏书,但是找不到特定章节,那么这本书就有问题。在这个场景中,图书管理员就相当于编译器。编译器查找对象,然后创建一个指向它的间接指针。创建指针之后,编译器查找对象的虚函数表(称为v-table),确认是否存在需要的方法。如果没有发现这个成员,编译器会向程序员报错。
通过在设计时绑定到对象,程序员可以获得指向该对象的间接指针。这个间接指针由编译器创建,并允许编译器在设计时确认对象的内容。程序员也可以使用IntelliSense来查看对象内容。在设计时创建此间接指针被称为早绑定。要实现早绑定对象,只需要将其声明为其所属类型库中定义的类型即可。早绑定代码示例如下:
2.后绑定
后绑定(Late binding)是指在设计时不创建间接指针,而是依靠Visual Basic运行时确认对象及其方法和属性是否存在。实现后绑定对象,只需将对象变量声明为Object(Visual Basic通用数据类型),并允许运行时确定对象是否存在于用于编写应用程序的类型库中。后绑定代码示例如下:
提示
最好使用早绑定。早绑定有助于其他程序员理解您的代码,也可以使您的应用程序更快。早绑定还会在编译时检查编码错误。如果编译器在编译时绑定到对象,编译器可以检查该对象是否支持从该对象调用的成员。如果使用后绑定,则在运行代码之前不会发现该错误。
步骤3 修改宏代码 通过更改声明将代码由后绑定改为早绑定:
步骤4 测试IntelliSense下拉列表 添加下面的代码直到IntelliSense出现,如图2-5所示。
图2-5 IntelliSense下拉列表
可以使用键盘上的↑和↓箭头键浏览下拉列表的内容,使用空格键让VBA自动输入所选方法的剩余部分,从而有效地节省程序员输入代码的工作量。IntelliSense还会自动更正一些语法错误并确认类型库是否被正确引用。如果IntelliSense在这一步没有出现,则说明变量声明存在问题或者没有正确引用类型库。
步骤5 使用IntelliSense添加参数 某些方法(如下例所示)具有参数。Intel-liSense会在代码行的正下方显示这些信息,并作为添加参数列表和正确完成API调用的向导帮助。
步骤6 关闭宏 现在完成了对IntelliSense和早绑定的测试。