(文章收集于网络,若有不妥,请告之。)
4OCz:t +?MjY[8j Solidworks是美国Solidworks公司基于Windows平台开发的著名的全参数化三维实体造型软件,它具有强大的零件设计、钣金设计、管理设计、绘制二维工程图、支持异地协同工作等功能,它可以实现由三维实体造型向二维工程图的转化,能够使零件设计、装配设计和工程图保持时刻的全相关和同步。同时solidworks具有良好的开放性和兼容性。它不仅可以向下兼容二维AutoGAD,使得以前采用
AutoCAD软件进行的设计得以继续使用和转化,同时还可以与许多其它专业软件(如有限元分析软件Ansys、数据加工软件Camworks、数据管理系统SmarTeams、三维实体设计软件UG、Pro/E等)无缝集成为功能十分强大的CAD/GAE/CAM/PDM系统,完全能胜任大型工程与产品的设计、分析、制造和数据管理。目前,各类用户不仅在应用Solidworks的强大功能进行各类专业设计,同时也在不断探索Solidworks的
二次开发技术,从而力求扩展Solidworks的功能并使其用户化、专业化。对此,提供一些值得借鉴的技术。
D8`,PXtV Podm 3b 1、Solidworks的二次开发接口
R9S7p)B ]|Vm!Q Solidworks的软件开发商为方便各类用户对其进行二次开发,提供了API(Application Programming Interface )应用
编程接口,它是一个基于OLE Automation的编程接口,此接口为用户提供了自由、开放、功能完整的开发工具,其中包含了数以百计的功能函数,这些函数提供了程序员直接访问Solidworks的能力。API中的函数可以被Visual Basic,C/C++ ,VBA或者是Solidworks宏文件以及其它支持OLE的开发程序调用,从而可以扩展Solidworks的功能。本文主要介绍的是采用支持ActiveX技术的面向对象的编程语言Visual Basic 6. 0对Solidworks进行二次开发的基本原理和方法。
sPkT>q Yl8tjq}iC 2、ActiveX Automation技术与Solidworks的对象层次结构
wi*Ke2YKP e[915Q _ 当今多数软件开发商为了使自己的软件能与其它软件连接,都把软件升发成共有支待ActiveX Automation的功能,Solidworks也不例外。Solidworks的二次开发工具通过使用ActiveX Automation技术,使用户反映速地自定义或自动Solidworks操作,使用这些工具可以修改或增加一些标准的命令,以使Solidworks能够适应用户的要求,还可以减少很多重复性的工作,从而节省时问,提高工作效率和设计质量。
6JRee[ s26s:A3rh (1)ActiveX Automation技术ActiveX Automation是Microsoft公司提出的一个基于COM ( Componet Object Model,组件对象
模型)的技术标准,是以前的OLI(Object Linking and Embeding, 对象连接与嵌人)技术的更高层次的发展,其宗旨是在windows系统的统-管理下,协同不同的应用程序,准许这些应用程序之间相互沟通、相互控制。每个应用程序可以决定自己的哪些信息可暴露出来。这些暴露出来的信息、可以被其它应用程序操纵。这个暴露信息的程序称为服务程序(Server),而操纵这些服务程序的程序成为客户程序( Client) ,ActiveX Automation技术通过两个程序问安排对话,达到一个程序控制另一个程序的目的,但这种对话不是双向的,对话双方也不是平等的。、客户程序是开始要求对话的应用程序,服务程序是响应客户程序的应用程序。ActiveX Automation的代码在客户程序土运行,而这些代码所控制的动作由服务程序来执行〔在这里将Solidworks理解为一个服务程序,而作为二次开发工具的VB程序作为客户程序,它们之间是服务器与客户的关系。用户只要在VB仁进行操作,VB就将驱动Solidworks完成相应的工作。
W@"M/<r@/ X@x:
F|/P (2) Solidworks的付象层次结构ActiveX Automation的实质就是利用客户程序去控制服务程序的对象、方法和属性,实现某种功能。也就是说,Solidworks必须将全部ActiveX对象暴露给VB才能实现二者的通信。这样,VB就可以像使用自身的对象一样来操纵Solidworks暴露给它的对象。对象是服务器程序简单而抽象的代表,对象之间一般通过被称为对象模型或者对象层次结构的形式互相联系。不骨是用何种编程语言对Solidworks进行外部开发或在其内部进行开发,都是通过调用Solidworks的对象体系结构来进行的。Solidworks的API编程接口封装了所有的ActiveX对象供编程使用。Solidworks的对象层次结构可以描述为自上而下的树型结构模型(如图1所示)。最底层的根对象是S1dWorks对象,其它对象都是它的子对象。其中的父对象与子对象之间的关系并不是继承关系,而是包含关系。也就是说如果VB要与Solidworks的一个特定对象通讯,必须先从solidworks对象对其子对象进行遍历,直到找到该特定的对象。另外说明一点,本文所提供的Solidworks对象表是所有Solidworks ActiveX对象的总括,其中的箭头符号表示该对象下面还包含子对象,限于篇幅,此处未全部一一列出。
X/5tZ@ 3zWY%(8t4? 3、具体开发方法
}}t"^m s
.j7|;Ag 钣金下面用参数化绘制挡圈零件的简单程序实例说明如何利用VB对Solidworks进行二次开发(其中主要是利用尺寸驱动原理,用VB驱动Solidworks根据用户输人的参数重新动态生成档圈模型)。
3h0w8(k; A!iH g__/t _3A$zA 钣金首先必须在VB中引入Solidworks的对象库。具体做法是:启动VB,新建一个工程后,选择"Project(工程)-> References(引用)"菜单,在"Avaliable References"(在可使用的对象)中选择"solidworks 2001Type Library,按"确定"就可以了。然后建立"我的档圈"人机交互主控界面(如图2),其中3个文本框分别用来输人档圈外径、内径和厚度;"OK"按钮的功能是实现用VB驱动Solidworks参数化绘制档圈;"Quit"按钮的功能是退出程序,停止绘制。以下是参数化绘制档圈的关键代码及主要功能函数的注释。
s.zH.q, s}|IRDpp swApp.ExitApp: 退出Solidworks应用程序,释放内存资源
p4{?Rhb6 qcQ`WU{ XZp(Po:H $Ae/NwIlc 编译并执行所有代码,输人设计参数,按OK安钮,即刻启动Solidworks绘制出用户需要的任意尺寸的三维档圈模型。
K<Yh'RvTD BAoqO
Xv 当然,对于绘制"档圈"这样的标准件程序中应对输入的参数范围加以限制,确保其绘图参数符合国标。此处程序代码未对这一问题加以处理,重在讲解VB与Solidworks的通讯。
2Y 6/,W lt,x(2 4、结论
&lI.N~Ao 'kW`62AX 本实例虽然简单,但它说明了如何利用VB开发Solidworks的方法。重要的是,在此基础上可以进行其它较为复杂的开发工作,从而开发出适合用户特定需要的专业化软件。另外利用面对对象语言VB对Solidworks进行二次开发,可方便地实现与其它图形软件的接口(例如与二维
CAD软件AutoCAD的连接,实现二维绘图与三维造型的结合),同时,基于ActiveX Automation技术进行软件开发是当今软件开发的热点,本文便是在此背景下,基于该技术对Solidworks进行二次开发的探索,对致力于Solidworks二次开发的人员,具有一定的参考价值。