0 引言

模具业多样化发展使得通用的模具CAD软件不再能完全满足企业的特殊需要,所以研究在通用图形软件的基础上二次开发企业自主的模具CAD系统十分必要。专用CAD软件必须结合企业的自身实际情况,建立符合国家标准、行业标准和企业标准的模具标准件库、模具通用结构库及标准模架库。在实现标准库的同时建立相应的数据管理系统,以提高设计效率。当前三维实体造型软件已逐步取代二维软件,因此对三维软件的二次开发也将成为我们研究的重点。针对当前我国中、小型企业以微机平台为主的现状,选用SolidWorks为二次开发平台。SolidWorks采用了与Unigraphics相同的底层图形核心Parasolid,它的核心技术----OLE技术是在Windows环境下生成的,有利于二次开发技术的实现。

1 OLE技术概述

对象链接与嵌入(Object Linking and Embedding)不是另一种编程技术,而是根植于Windows环境的一种编程模式技术,其核心在于允许一个Windows应用程序通过暴露对象的方式,控制和操作另一个Windows应用程序。即被调用的程序暴露自身的对象体系结构供调用程序引用。通过OLE技术,许多面向对象编程语言(如:VB、VC++、VBA等)和应用程序可以与SolidWorks通信,从而直接操纵SolidWorks编制用户化程序满足设计需要,如菜单设计、标准件库的建立、参数化设计等。

2 SolidWorks对象模型树

不管是用VC++ 、VB还是VBA对SolidWorks进行二次开发,都是通过调用SolidWorks的对象体系结构来进行的。基于OLE技术SolidWorks,API将SolidWorks, 的各种功能封装在SolidWorks,对象之中供编程调用。作为一个对象,它包括以下几个方面:(1)对象的类型;(2)对象的属性;(3)对象的方法。开发者通过操纵对象的属性和调用对象的方法建立自己的应用程序,实现二次开发。例如,建立一个长方体,可以访问零件实体模型,则SolidWorks, 提供对象类型为PartDoc,它包含的属性有MaterialldName、MaterialUserName、MaterialPorpertyValues, 它提供的方法有CreateNewBody(创建一个新实体)、EditRebuild(重新编辑实体)、FeatureByName(返回实体特征名)等。SolidWorks开发系统图如图1所示。


下面我们给出SolidWorks的对象模型树见图2。


3 数据库的建立

设计合理的标准件数据库管理,将极大的有利于开发注塑模CAD系统。采用数据库管理注塑模具标准件,标准件数据按一定数据结构形式存放在数据库中,由数据管理系统统一进行管理。关系型数据库适用于关系结构复杂的数据类型,因此考虑到注塑模的装配关系,在建立注塑模具标准件数据库中选择关系型数据库,将有利于装配模型中对各类标准件的管理。在建立规范的标准件数据库基础之上,通过面向对象的程序语言VB开发接口程序,实现数据库与SolidWorks实体造型的通信,从而通过调用数据库就直接生成所需要的标准件,并且通过管理数据库可以实现标准件的各类管理。

4 面向对象的开发环境

通过VC++编写动态连接库文件(DynamicLink Library,DLL文件),运行SolidWorks时加载上去,可以实现对SolidWorks底层的开发。例如编写菜单文件直接挂在SolidWorks的菜单下,形成应用程序与SolidWorks的统一的界面。VB可以直接访问SolidWorks所提供实体对象,利用它来编写参数化设计程序,以及调用数据库的接口程序更加直观。我们可以根据需要充分利用这些面向对象编程语言的优点来实现注塑模具CAD系统二次开发。图3为利用面向对象的编程语言VC++,通过调用SolidWorks提供的菜单资源对象模型实现二次开发的菜单设计。


5 应用实例

本文通过建立注塑模具中常用的限位钉标准件自动生成三维图,供模具设计者调用为例,说明基于OLE技术在SolidWorks平台下进行的注塑模CAD三维标准件库开发。

首先,在SolidWorks实体造型环境中建立以国标系列尺寸为驱动参数的限位钉模型;

其次,在关系数据库中建立限位钉国标标准库;

然后,利用VB编制程序,设计界面,访问数据库,同时调用SolidWorks中的Part对象实现限位钉的参数化绘图。

最后,利用VC编制菜单文件,运行时加载上去,实现菜单的统一。

下面给出利用SolidWorks提供的OLE Automation技术在VB环境下二次开发的实例。在VB中访问SolidWorks对象的代码:

标准件限位钉参数程序needle()代码:

Sub Cuboid(By Val DDValue__Passed As Double,By Val dValue__Passed As Double,ByVal ZValue__Passed As Double, Lvalue__ Passed As Double,)

Dim MyApp As Object

Dim Part As Object

Set MyApp = CreateObject ("SldWorks.Application")

MyApp.Visible(Ture)

Set Part = MyApp. OpenDoc ("needle.SLDPRT",swDocPART)

If Part Is Nothing Then

Exit Sub

Else

End if

Part. Parameter("DDValue@Sketchl").

System Value = DDalue__Passed

Part. Parameter("dValue @ Sketchl").

SystemValue = dValue__Passed

Part.Parameter("ZValue@Base-extrude").

System Value = ZValue__Passed

Part.Parameter("LValue@Base-Extrued").

System Value = LValue__Passed

Part.EditRebuild

End Sub

 

6 结束语

OLE技术以及后来发展的网络版的对象链接与嵌入技术—ActiveX技术都是面向对象编程技术的重大进步。在CAD 技术中的运用也日益广泛。最新版本的CAD软件系统一般都支持这两种技术或其中一种,用户可根据需要进行选择。

CAD系统的二次开发者在开发应用软件时,关键是理清CAD软件所提供的对象以及与面向对象编程语言的开发接口,就可以对该CAD软件开发有一个总体认识,进而实施细节问题。