2023年11月30日发(作者:)

2.3 Solidworks 二次开发

Solidworks是在windows环境下实现的三维机械CAD软件。它采用了

windows用户界面 ,拥有强大、动态激活的属性管理器 ,以灵活的草图绘制为

基础 ,辅助以特征建立能力以及装配控制功能 ,并提供了自由、开放、功能完

整的API开发工具接口 .这些功能使solidworks实现了三维CAD软件所提倡的

易操作性、高效性以及功能完全性。Solidworks软件进行参数化建模的主要技术

特点是:

1 基于特征.将某些具有代表性的平面几何形状定义为特征 ,并将其所有尺

寸存为可调参数 ,进而形成实体,以此为基础来进行更为复杂的几何形体

的构造.

2 全尺寸约束.将形状和尺寸联系起来考虑,通过尺寸约束来实现对几何形

状的控制.

3 尺寸驱动设计 通过编辑尺寸数值来驱动几何形状的改变,尺寸参数的修

改将导致其他相关模块中的相关尺寸的全盘更新。采用这种技术的理由在

于它能够彻底地克服了自由建模的无约束状态,几何形状均以尺寸的形式

而被牢牢地控制住.

Solidworks通过OLE(对象的嵌入与链接)或者COM为用户提供了自由开

放、功能完整的二次开发接口(API。因此,凡支持OLECOM编程的开发

工具,诸如Visual BasicVisual C++等均可用于Solidworks的二次开发,以创建

出使用人员所需的、专门化的Solidworks应用模块.Solidworks支撑Activex

Automation技术,VB环境下建立客户程序可以直接访问Solidworks中的对象,

在这里,为求方便,我们可将solidworks理解为一个服务程序,把二次开发工具

VB程序作为客户程序,它们之间只是服务器与客户的关系。用户主要在VB

进行操作,VB就可以驱动Solidworks完成相应的工作.通过调用API对象属性的

设置和方法,就可以在开发的程序中实现与solidworks相同的功能。对于一般零

件我们可采用人机交互的形式建立模型,设定合理的设计变量,再通过VB程序

驱动设计变量实现模型的更新方法,系统开发流程如图25示:

开始

建立零件三维模型

设定尺寸变量

引用solidworks对象库

编写VB应用程序

2-5

二次开发几乎是所有应用CAD 软件企业的共同需求,商品化软件开发机构

为了开拓市场、扩大市场份额、保持产品的市场地位,也非常重视企业在应用

CAD 软件时的这个共性需求。本设计阐述了利用SolidWorks API接口开发嵌入

式功能模块以扩充原SolidWorks 功能的关键技术,已在企业SolidWorks 二次开

发中得以广泛运用,并且形成了客户化定制的SolidWorks软件系统,具有明显

的实用价值.其中SolidWorks APISolidWorks Application Programming Interface

提供了支持二次开发的应用编程接口,通过该接口可以开发嵌入式功能模块以扩

充原SolidWorks 的功能,形成客户化定制的SolidWorks 软件系统。本节对

SolidWorks二次开发接口API 对象、DLL 动态连接库三种SolidWorks二次开发

关键技术分别进行分析和简要论述.

231SolidWorks二次开发接口API对象

SolidWorks APIApplicationProgramming Interface)是SolidWorks基于

ActiveX Automation的应用编程接口,利用SolidWorksAPI 可以方便高效地设计

具有Windows 风格的、与SolidWorks 无缝集成的应用程序。Solidworks API

调用是指调用Solidworks的事件、方法、属性及相关功能 Solidworks是一个

自上而下的树形网络结构 调用下层对象时,一定要先调用上层对象。Solidworks

应用程序对象是所有调用SolidworksAPI功能的最顶层 ,也是调用其他对象的入

在其之下是Solidworks活动文档对象 , 包括 “零件环境”“装配环境 "

“工程图环境” “非工作环境"四个状态。得到的Solidworks活动文档对象主

要是当前活动的工作环境 ,一旦上述两个对象调用之后 ,就可以调用户提供的

其他功能.在进行二次开发的过程中,只有调用正确的对象,才可以调用对象相应

的事件、属性、方法及相关函数。所以 ,API的层次调用对二次开发有着重要的

意义.

Solidworks OLE,,

Solidworks基本操作 如打开 保存等到建模、修改等各个功能.但是需要注意并

不是所有的对象都可以被VB所调用。

Solidworks对象 ,可以实现应用程序的最基本的操作。如创建、打开、关闭

和退出Solidworks文档,设置当前的活动文档,并可以对Solidworks的系统环

境进行设置。ModelDoc对象属于模型层,是sldworks的子对象。用ModelDoc

对象可以 实现视图设置、轮廓线修改、参数控制、对象选择打开和保存文档、

创建编辑特征参量、创建框架等与实体模型相关的各类操作,ModelDoc对象包括

PartDocAssemblyDocDrawingDoc等三个常用的对象。

不管是用何种编程语言对Solidworks进行外部开发或在其内部进行开发,

是通过调用Solidworks的对象体系结构来进行的.SolidworksAPI编程接口封

装了所有的ActiveX对象供编程所用。Solidworks的对象层次结构可 以描述为

自上而下的树型结构模型如图所示 。最低层的根对象是Sldworks对象,其他对

象都是他的子对象。其中父对象与子对象之间的关系并不是继承关系,而是包含

关系 .也就是说如果VB要与Solidworks的一个特定对象通信,必须先从Sldworks

对象对其子对象进行遍历 ,直到找到该特定的对象 。另外,本节所提供的

Solidworks对象表是所有SolidworksActive对象的总括,其中的箭头符号表示该对

象下面还包含子对象。

SolidWorks API 是一个自上而下的多层次的树形网络(层次结构见图)

SldWorks 是根目录对象类,位于应用程序的底层,是访问SolidWorks API 所有

对象的入口程序。接口对SolidWorks API 的调用实行逐级寻访,即先调用能实

现所需功能的对象的父对象,然后调用与父对象相关的子对象,如果子对象所封

装的属性和方法不能实现所需要的功能,则继续调用该子对象的下级子对象,

此逐级遍历,直到结束.SolidWorks API 对象的调用不能跨级,因为父对象

与子对象是包含关系,而不是继承关系,父对象包含子对象的属性和方法,子对

象自身不带有该属性和方法,跨级调用程序将会出错。

SolidWorks API的常量 SolidWorks 提供了一个BASIC 模块——swconst

bas该模块包含了预先定义的许多SolidWorks 常数值,SolidWorks

安装目录下的samplesappComm 文件夹内。编制应用程序时,添加 VB 模块,

包含在VB 工程中,否则API 函数调用将会出错。

Solidworks API中的各对象关系

sldworks

SWAddim

Environment UserUnit

Frame CustomPropertyManage

AttributeDef Mathpoint

SWpropertySheet

r

Mathtransform

ModelDoc2 MathUtility

MathVector

PropertyManagerPage2

PartDoc AssemblyDoc DrawingDoc

Feature

Annotation

FeatMgrView

ModelViewDimention

Dimention

Other Object

Parameter EnumLpops2

Entity EnumComponent

EnumBodies2 EnumDrSection

EnumCoEdges EnumSketchHatches

EnumFaces2 EnumSketchPoints

EnumEdges EnumSketchSegmen

t

EnumDocuments2

EnumDisplaydimentions

EnumModelViews

2-7 solidworks对象模型

在调用solidworks的过程中,我们只有对各个函数之间的关系和层次分的明

了清楚,才能保证正确调用.如上图表所示,在编程中可以用作对象参考.要调用

solidworksAPI其他功能,必须先调用接口对象。一般的在程序里写作:

Dim swApp As Object

Set swApp = CreateObject"ation")

2.32 DLL 动态连接库

Solidworks VBA

SolidWorks 的驱动,应用程序在SolidWorks 环境下直接执行,编程时不需要考虑

SolidWorks的库文件,而直接调用SolidWorks API所有函数及对象,随时编辑应

用程序,环境支持如单步调试、逐过程调试等多种调试手段,调试的同时可进行

修改。但VBA的功能较弱,所提供的控件数目较少,对象的属性、事件以及方

法等不完全,用VBA 二次开发SolidWorks 将颇费周折,选用DLL动态连接库

技术从外部操作SolidWorks 非常方便。

DLL 动态连接库(Dynamic LinkLibrabry)是运行时连接的可执行代码和数

据模块,用它能节省内存、方便地进行应用程序中的参数传递和通信、实现代码

共享、升级方便、且独立于编程语言。SolidWorks 允许用户建立独立的可执行

文件(Standalone EXE、应用型动态链接库文件( UserDLL)及扩展型动态链接

库文件( Extension DLLDLL 是基于Windows 程序设计的一个非常重要的组

成部分。在建立应用程序的可执行文件时,不必将DLL 链接到程序中,而是在

运行时动态装载DLL,装载时DLL被映射到进程的地址空间中。在每次运行

SolidWorks 时,DLL 文件自动装载,操作方便.

Solidworks API的调用是指调用Solidworks的事件、方法、属性及相关功能,

Solidworks是一个自上而下的树形网络结构,调用下层对象时,一定要先调用上层

对象。Solidworks应用程序对象是所有调用SolidworksAPI功能的最顶层,也是

调用其他对象的入口 。在其之下是Solidworks活动文档对象,它 包括 “零件

环境”装配环境 工程图环境” 非工作环境”四个状态.得到的Solidworks

活动文档对象主要是当前活动的工作环境,一旦上述两个对象调用之后 ,就可以

调用用户提供的其他功能.在进行二次开发的过程中,只有调用正确的对象,才可

以调用对象相应的事件、属性、方法及相关函数。所以 ,API的层次调用对二次

开发有着重要的意义。

在接下来的几个章节中本设计将对轮腿机构的部分组成构件作参数化分析,

并注相应程序代码。