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

SolidWorks系统及二次开发简介

感谢下载本文的朋友,本人对二次开发技术已有一定研究,希望能与您合作撰写

SolidWorks及其二次开发相关的论文,如有需要,请联系QQ943387022,长期有效。

目前,在我国的CAD市场上比较流行的三维CAD软件有SolidWorksMDTUGPro/E

SolidEdge 等。但就价位来讲SolidWorksMDTSolidEdge是中低档价位的产品,UGPro/E

IDEAS是高中档价位的产品。

SolidWorks是一套基于WindowsCAD/CAE/CAM/PDM桌面集成系统,是美国

SolidWorks公司在总结和继承了大型机械CAD软件的基础上,在Windows环境下实现的第

一个机械三维CAD软件,于199511月研制成功。它全面采用非全约束的特征建模技术,

其设计过程全相关性,可以在设计过程的任何阶段修改设计。同时牵动相关部分的修改。它

即提供自底向上的装配方法,同时还提供自顶向下的装配方法。自顶向下的装配方法使工程

师能在装配环境中参考装配体的其他零件的位置及尺寸设计新的零件,更加符合工程习惯。

它具有独创性的“封装”功能,可以分块处理复杂的装配体。具有产品配置功能,为用户设

计不同构性的产品。它集成了设计、分析、加工和数据管理过程,所获得的分析和加工模拟

结果成为产品模型的属性,在SolidWorks的特征管理器中清晰的列出了详细的数据信息。它

还可以动态模拟装配过程,进行静态干涉检查、计算质量特征,如质心、惯性矩等。它将2D

造型绘图与3D造型技术融为一体,能自动生成零件尺寸、材料明细表(BOM、具有指引线

的零部件编号等技术资料,从而简化了工程图样的生成过程。同时有中英文两种界面可以选

择,其先进的特征树结构使操作更加简便和直观。具有交好的开发性接口和功能扩充性。能

轻松实现各种CAD软件之间的数据转换传送。

目前,SolidWorks的全球用户超过20万,国外大多数制造公司招聘时都要求应聘人具备

操作SolidWorks的能力。国际上很多一流的名校都将SolidWorks定为大学本科学生的必修课,

如麻省理工学院、英国剑桥大学等。95%的西方企业要求员工回运用SolidWorks软件,

SolidWorks连续几年被美国一些杂志评为优秀的CAD软件。

但是SolidWorks也并非十全十美,不可能满足特定企业的特殊要求。例如,由于该软件

是外国人写的,不适合中国的国标,如标题栏、明细表、放大图的标注、剖视图的标注、装

配图的序号等。也没有适合我国国标的标准件库。因此,为了适应特定企业的特殊要求,形

成企业自己的特色,使SolidWorks在我国的企业中有效的发挥作用,并使常用的或是重复的

任务自动化,提高效率,就必须对其进行本土化和专业化的二次开发工作。

1

SolidWorks 系统具有如下的特点:

(1) 具有独特的特征管理员,提供的特征管理员设计历史树同具体的实体模型是实时的动

态联接;

(2) 具有强大的实体建模功能和直观的Windows 用户界面;

(3) 支持Windows DDE 机制和OLE 技术;

(4) 支持Internet 技术,可以共享设计数据;

(5) 双向关联的尺寸驱动机制;

(6) 提供了VB ,VC + + 和其他支持OLE 的开发语言接口;

(7) 给基于Windows 的桌面集成赋予了新的含义。

Windows ,仿真软(Motionworks) (CosMo-

SolidWorksorks) 、数控加工软件(SurfCAM) 、以及工程数据管理软(SmarTeamWorks) ,使

它们成为SolidWorks 家族中的一员。这些软件的数据可以相互传递共享。而且SolidWorks

司还设有网上站点,可方便用户快速了解此系统的最新发展情况,或获得最新的技术支持。

造型功能

SolidWorks 提供了新一代的造型功能,它包括了草图和实体,参数化特征造型技术。提供

丰富的基本特征,并且提供用户自定义特征的功能。SolidWorks支持强大的三维参数化设计功

,可以方便地在设计的任何阶段修改零件.

绘图功能

工程绘图系统Drawing 主要用于三维模型的工程图纸绘制与输出,可同时编辑多张图纸。

当设计人员建图纸文件时,可以将PART 文件上的特征历史树的总结点用鼠标点取移动

到图纸文件上,图纸文件上自动生成三视图。绘制的图纸上可以自动标注尺寸信息。图纸与模

型是相互关联的,当模型上的尺寸或造型变化时,图纸也相应改变。视图包括标准视图、投影视

图、一般视图、局部视图以及剖面视图,是零件或装配体在图纸上的某种形式的投影。在视图

上可以增加或删除符合国标的工程标注。本系统随时维护三维模型与二维绘图的一致性。注

释及辅助线段、圆注释和辅助的线段、圆用于给图纸增加一些视图中未给出的信息,如加工注

意点、材料选择等。

装配功能

SolidWorks 中装配的功能是由用户指定装配体中各零件之间的装配约束关系,将零件装

配成装配体。装配系统不但可以将零件装配起来,也可以读入已经装配好的装配体,作为子装配

体进行装配;子装配体在装配过程中可以视为一个整体,等效于一个零件。SolidWorks 可以模

拟仿真装配的全过程。

2

二次开发

虽然SolidWorks 所提供的功能非常强大,但要使其在我国企业中真正发挥作用,就必须对

其进行本地化、专业化的二次开发工作。为了方便用户进行二次开发,SolidWorks提供了几

百个API函数,这些APISolidWorksOLECOM接口.用户可以使用高级语言对其进

行二次开发,建立适合用户需要的、专用的SolidWorks功能模块。SolidWorks 是一个非常开

放的系统,提供了VB ,VC + + 和其他支持OLE 的开发语言接口。提供给用户必要的工具(

语言、库函数等) 以开发个人化的应用模块,并且易于将它集成到系统中去。VB VC + +

调用SolidWorks API 函数,可以完成零件的建造、修改;零件各特征的建立、修改、删除、

压缩等各项控制;零件特征信息的提取,如特征尺寸的设置与提取,特征所在面的信息提取及各

种几何和拓扑信息;零件的装配信息;零件工程图纸中的各项信息;还可在SolidWorks主菜单上

增加按钮,将自己开发的应用模块嵌入到它的管理系统中。

为了方便用户进行二次开发,SolidWorks提供了几百个API函数,这些APISolidWorks

OLECOM接口,用户可以使用VB/VC等高级语言对其进行二次开发,建立适合用户

需要的、专用的SolidWorks功能模块。要顺利对SolidWorks进行二次开发,以下的基本术语

是需要知道的。

OLE技术

OLE就是对象的嵌入与连接,它使得应用程序之间能够通过数据的嵌入或连接的方式来

共享数据。含有嵌入或连接文档的应用程序被称为容器程序,提供文档数据编辑的应用程序

被称为服务器程序。OLE2.0推出以后,OLE已经不再是对象的嵌入和连接的缩略词。不妨认

ActiveXOLE3.0,事实上ActiveXOLE在网络上的扩展,它使用了OLE技术并且超

过了本地机器的范围。自动化技术AutomationOLE技术的一个重要内容。直到今天,自

动化技术扩充和发展为ActiveX Automation,它适用于OLE对象和ActiveX对象。自动化技

术由客户程序和服务器程序组成,客户程序是操纵者与控制者,服务器程序是被控制者,它

包含了一系列的暴露对象。服务器应用程序通过自身对象的属性、方法、事件外显其功能;

对象的服务器程序简单而抽象的代表。而客户应用程序则通过操纵服务器应用程序所暴露的

一系列对象来操纵服务器应用程序。只要服务器程序提供一定的接口,可以使任何对象实现

自动化。对象包含的一些外部接口,它们被称为方法与属性。方法是自动化对象的一些函数,

它们是提供给客户程序的外部公共成员函数,属性是一个对象的一些命名特性,即对象的一

些共有数据域。操纵程序被称为客户(Client)而被操纵程序称为服务器(Server),被操纵的对象

3

ActiveX对象如果应用程序支持OLE技术,则在不同应用程序之间的切换由OLE自动完

成。SolidWoks支持OLE标准,完全实现了OLE自动化,前已提及,SolidWoks具有开放的

结构体系,它的这种开放性体现在它所提供的API对象上。API是一个对SolidWoks的应用

编程接口(Application Programming Interface),包含了几百个对象及其属性、方法和事件,这

正是SolidWoks为用户提供的功能强大的二次开发接口,凡支持OLE编程的开发工具,如

Visual C++Visual BasicDephi等均可从各自本身操作这些对象,从而直接行使SolidWoks

的功能,如画一条直线,拉伸一个凸台,或修改一个表面的参数等。利用这种方法可以完成

SolidWoks的二次开发,创建出用户定制的、专用的SolidWoks功能模块。在本课题中,我们

VB来控制SolidWoks提供的各种对象,即把VB 作为客户程序,SolidWoks作为服务器程

序。

ActiveX技术

ActiveX是微软新近提出的一种技术,它以COM为基础,其中包括了OLE技术以及应

用于internet的多种技术。它使得不同的进程,甚至是网络上的进程之间相互通信,并朝着多

媒体方向发展。ActiveX是一种面向对象的组件系统,其中包括了组件软件的各个方面,有复

杂文档、自定义控制、OLE自动化、交互应用程序脚本、数据传送及其他分布软件的相互作

用。这些组件对象为用户提供了不同的功能,使得不同的软件供应商提供的组件可以在二进

制之间进行相互的连接和通信。对象通过接口实现组件之间以及组件与系统之间的相互作用。

在桌面系统进行软件交互时,除了系统提供的标准控制外,OLE控件是一个重要的组成部分。

ActiveX是一种标准,利用这个标准可以使用通过不同的语言开发的软件构件在单机或网络环

境中相互操作。同时,ActiveX也是以组件对象模型为基础的开放技术的集合,它代表了应用

程序与internet的一种集成策略。

OLE Automation技术

自动化技术(Automation)为软件之间的交互创造了条件,它允许多个应用程序或组件之间

进行通讯和交互,而与它们的语言、分布和原始平台无关。在开发标准件库时,运用OLE(Object

Linking and Embedding)Automation技术,无疑会减小开发的难度,使系统更加稳定可靠。

SolidWorks系统提供数据操纵接口函数API,专门读写三维零件数据,并提供了一系列的

Automation接口(包括对象、属性和方法),使用户进行二次开发更加容易。运用Automation

术使得在自己的应用程序中驱动三维CAD系统中的零件变的有可能而且容易。

4

尺寸驱动原理

本论文对标准件建模采用尺寸驱动原理,即标准件的生成也是对相应标准件模板进行尺

寸驱动的过程。尺寸驱动即在零件拓扑结构不变的情况下,把零件的尺寸参数定义为尺寸变

量,并定义出变量间的关系,当给定不同的尺寸值,就可得到一组结构相同而尺寸不同的零

件,每一类标准件对应一个模板文件,在模板文件中定义尺寸变量和变量间的关系。由于三

CAD都采用了参数化的设计方法,在开发标准件库时没有必要再做尺寸约束求解,所以零

件的最后生成可以依靠系统参数化功能来实现,即通过用新的尺寸值对实现准备好标准件模

板进行尺寸驱动来生成一个新的标准件。

在工程实践中用到的具有系列尺寸的标准件,其尺寸参数可分为独立参数和非独立参数,

独立参数中包含了主驱动参数(称之为基本参数)和自定义特性参数。一般只要给定独立参数,

即可唯一确定零件的全部几何参数(非独立参数可由主驱动参数从标准件特性参数库中取

)。例如GB5780-86,其螺纹规格,螺杆长度,螺纹长度为三个独立参数,由用户根据自身

需要进行选取。螺纹规格确定之后,螺栓的六角头厚度,扳手宽,倒角半径等尺寸即可从特

性参数库中获得,从而可以对形状模式库中的对应的形状模型进行尺寸驱动,实现零件建模。

2.2 SolidWorksAPI函数介绍

2.2.1 SolidWorks 的对象模型

相关术语

对象类定义了具有相同结构和操作的一组对象,其最基本的特征是封装和继承。作为一种

抽象数据,对象把实体的相关特征和操作封装在一起,允许人们以自然的方式去模拟外部实体

的结构和行为;继承是对象类实现可复用性和可扩充性的重要特征。一个对象类可以定义为另

一个更一般的特殊情形, 这个对象类是特殊对象类的父类( SuperClass) ,或者说,

特殊对象是这个一般对象的子类(SubClass) ,子类继承父类的所有属性和操作,除此以外子

类还可以定义自己特有的属性和操作。继承是对象类的一种特例化关系,亦即集合包含关系,

子类对象实例集合是父类对象实例集合的子集。

5

对象模型

SolidWorks 的对象模型是一个多层次的对象网络,如图2.1所示。最高级别的对象类是

SldWorks ,该对象中封装了很多方法(Methods) , OpenDoc2 ActivateDoc2 CloseDoc

ExitApp,下面又创建了许多子类, ModelDocEnvironment Frame。本文将重点介绍

ModelDoc 对象,因为大部分绘图操作都在ModelDoc 对象中, SelectByID (选择)

CreateCircle2 ( 画圆) CreateLine2 ( 画直线)ModelDoc 中又创建了PartDocAssemblyDoc

DrawingDoc 等子类。其中大部分实体建模操作都在PartDoc 对象中,FeatureExtrusion (

) FeatureRevolve (旋转);而相关的装配操作如AddComponent (插入零部件) AddMate (

入配合) 等都在AssemblyDoc 对象中。

2.2.2 对象的属性和方法

SolidWorks 创建的对象中,每个对象都有自己的属性和方法,通过调用API 函数实现,

反过来,应用SolidWorks 的每一步操作都体现在特定的对象类中。下面以VB 为开发平台介

绍其一些常用的API 函数。

连接SolidWorks

在对SolidWorks 进行二次开发时,首先要建立SolidWorks 的连接,创建SolidWorks 的应

用对象:

Dim swApp As Object

Set swApp = CreateObject (ation)

通过这个函数,就打开了SolidWorks 的接口,可以调用它的API 函数了。

建立新的零件图、装配图

创建零件图:

Dim Part As Object

Set Part = t

创建装配图:

Dim Assem As Object

Set Assem = embly

这两个函数创建了一个新的工作区,使我们能够进行建模和装配。

6

选择

“选择”可以说是在使用SolidWorks 时用得最多的一个命令,有很多命令在使用时都要

选择操作对象,通过调用ModelDoc 对象中的SelectByID 函数来实现:

ByID(objectName ,object Type ,x , y , z)

这个函数在应用时需要输入五个参数:objectName 表示要选择对象的名称,该名称是

SolidWorks在创建对象时按先后顺序自动命名的,如基准面1 、基准面2 Arc1 Line3

D1 @ 1 @;object Type ,PLANE ()

SKETCHSEGMENT (草图上的对象如直线、圆弧等) DIMENSION (尺寸标注);x , y , z 是平

面上任一点的坐标值。

插入草图

在所选平面上插入草图,调用ModelDoc 中的InsertSketch 函数: Sketch ()

基本草图绘制命令

线ModelDoc CreateLine2 :Line2

(xStart ,yStart ,zStart ,xEnd , yEnd , zEnd )[.Const ructionGeomet ry =True ]xStart yStart

zStart xEndyEndzEnd 分别是直线的起点和终点坐标; Const ructionGeomet ry =True

表示画中心辅助线。画圆调用ModelDoc 对象中的CreateCircle2函数:Circle2

(xc ,yc ,zc ,xp ,yp ,zp)xcyczcxp yp zp 分别是圆心和圆上一点的坐标值。标注尺寸

SelectByID ,ModelDoc AddDimension

:ension ( x , y , z)xyz 为尺寸文本所要放的位置的坐标值。

基本实体建模命令

拉伸调用PartDoc 中的FeatureExtrusion 函数:

eExtrusion(sd ,flip ,dir ,t1 ,t2 , d1 ,d2 ,dchk1 ,dchk2 ,ddir1

,ddir2 ,dang1 ,dang2 ,off setReverse1 ,off setReverse2)sd TRUE 时表示单向拉伸,

FALSE 时双向拉伸,0 1 表示;dir TRUE 时表示正向拉伸,为真时有效;dir TRUE

表示反向拉伸,为真时有效; t1 t2 表示终止类型,可取下列值: 0 (给定深度) 1 (贯穿) 2 (

贯穿下一个) 3 (成形到一顶点) 4 (成形到一面) 5 (到离指定面指定的距离) 6 (两侧

对称) ; d1 , d2 表示拉伸的深度; ddir1 ddir2 TRUE 时表示带拔模角拉伸;dang1 dang2

TRUE时表示向内拔模,FALSE 是向外拔模;off setRe2verse1 , off setReverse2 控制到离

指定面指定的距离,t1 t2 5 时有效。其中d2 dchk2

7

ddir2 dang2 off setReverse2 在双向拉伸时有效。旋转调用PartDoc FeatureRevolve

:eRevolve (angle ,reverseDir ,angle2 ,revType)angle

;reverseDir 控制旋转的方向,TRUE 时表示反向, revTyp 1 时无效; an2gle2 表示旋转

的反向角度,仅当revTyp 2 时有效;revTyp 表示旋转类型,0 时单方向旋转,1 时双向

等角度旋转,2 时双向旋转。倒角调用ModelDoc 中的FeatureChamfer2

Type 函数:eChamferType(chamfer Type , width ,angle ,flip ,

otherDist ,vertexChamDist1 ,vertexChamDist2 ,vertexChamDist3)chamfer Type 控制倒角的

类型,可取下列值: 1(角度- 距离控制) 2 (距离- 距离控制) 3 (顶点-倒角控制) 4 (两边等

距离控制) ;width 示倒角边距;angle 示倒角角度,仅当chamfer Type1 1

;otherDist 表示chamfer Type 2 时的另一边距; vertexChamDist1vertexChamDist2

vertex2ChamDist3 表示chamfer Type 3 时的三个距离。

基本装配命令

零件的建模完成后,即可进行零件的装配,先调用swApp 中的NewAssembly 函数新建一

个空白装配文档,再通过调用AssemblyDoc 中的AddComponent 函数插入零部件:

ponent (compName ,x , y , z)compName 表示要加入组件的路径及

名称; x ,y , z 表示组件在装配文档中放置的位置。插入配合调用AssemblyDoc 中的AddMate

函数:e (mateType ,align ,flip ,dist ,angle)mateType 控制配合类型,可取

下列值:0 (重合) 1 (同轴心) 2 (垂直) 3 (平行) 4 (相切) 5 (

) 6 (角度) ;align 控制两配合面的方向,0 (同向对齐) 1 (反向对齐) 2 (最近处) ;flip

TRUE 时表示延缓配合; dist 控制mateType 5 时的距离; angle控制mateTyp 6 时的

角度。

添加菜单

为了操作方便,把生成标准件的功能挂到Solidworks 装配环境的菜单和工具栏上,在菜单

上的提示为各标准件的名称,在工具条上的提示则为图标,用户要插入某个标准件时,只需在菜

单或工具条上进行选择,然后由开发的程序调用相应的标准件功能模块。Solidworks

SldWorks 对象,VB Solidworks 工作环境进行访问处理提供了接口。通过此对象可以对

Solidworks工作环境添加菜单、删除菜单、添加工具条、打开文件、新建文件、退出Solidworks

系统等功能,这里主要是通过使用SldWorks 对象的Addmenu Addmenuitem 方法来在

Solidworks工作环境中添加菜单和下拉子菜单及功能模块的调用;通过使用SldWorks 对象的

8

Addtoolbar AddToolbarCommand 方法来完成在Solidworks 工作环境中添加工具条和完成

对应标准件功能模块的调用。

Implements n

Dim iSldWorks As ks

Dim iCookie As Long

bRet = inCallbackInfo(nce, Me, iCookie)

bRet = u(swDocNONE, "螺纹联接(&L)", 3)

bRet = uItem2(swDocNONE, iCookie, "螺栓库(&S)@螺纹联接(&L)", -1,

"LS_Item", "LS_ItemUpdate", "螺栓标准件库")

bRet = uItem2(swDocPART, iCookie, "螺栓库(&S)@螺纹联接(&L)", -1,

"LS_Item", "LS_ItemUpdate", "螺栓标准件库")

bRet = uItem2(swDocPART, iCookie, "螺栓库(&S)@螺纹联接(&L)", -1,

"LS_Item", "LS_ItemUpdate", "螺栓标准件库")工具的VB 程序作为客户程序,它们之间是服

务器与客户的关系。用户只要在VB 上进行操作,VB 就驱动SolidWorks完成相应的工作。

SolidWorks为二次开发提供了大量的API 对象,这些对象涵盖了全部的SolidWorks的数据模

型,通过对这些对象属性的设置和方法的调用,就可以在用户自己开发的DLL 中实现与

SolidWorks相同的功能。

SolidWorks中常用的主要ActiveX Automation 对象有SolidWorks Body Parameter

SldworksPartFace Feature对象等。Sldworks对象为VB SolidWorks工作环境进行访

问处理提供了接口。通过此对象可以对SolidWorks工作环境添加菜单、删除菜单、添加工具

条、打开文件、新建文件、退出SolidWorks系统。用VB 调用SolidWorks中的API 函数,

还可以完成零件的建造和修改;零件各特征的建立、修改、删除和压缩等各项控制;零件特

征信息的提取,如特征尺寸的设置与提取,特征所在面的信息提取及各种几何和拓扑信息;

零件的装配信息;零件工程图纸中的各项信息等。

9