学习目标

● 识别SOLIDWORKS API对象模型中的对象关系和组织结构

● 连接宏和API对象模型中最顶层的应用程序对象Sld-Works

● 使用访问器连接宏和其他应用程序对象:ModelDoc2、ModelDocExtension、PartDoc、AssemblyDoc和Drawing-Doc

● 识别每个应用程序对象共有的API方法

● 创建一个包含窗体和控件的宏,用以显示每个应用程序对象的不同

2.1 SOLIDWORKS API对象模型概述

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

Untitled

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

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

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

Untitled

● Visual Basic自动类型转换

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

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

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

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

2.2 应用程序对象

本章将介绍连接SOLIDWORKS软件和每种文件类型的API分类。要调用这些API,必须首先连接到确定的应用程序对象。