SolidWorks是基于Windows平台的优秀三维机械设计软件,其参数化和特征造型技术,为设计人员提供了良好的设计环境。SolidWorks尽管功能非常强大,但要使其在我国企业中非常有效地发挥作用,就必须对其进行本体化和专业的二次开发工作。SolidWorks通过对象链接嵌入技术(OLE)为用户提供了强大的二次开发接口,凡支持OLE编程的开发工具,如VisualC++、VisualBasic、Delphi等均可用于SolidWorks的二次开发,创建出用户定值的、专用的SolidWorks功能模块。
1系统的关键技术
1.1 SolidWorks的软件接口开发
SolidWorks通过COM技术为用户提供了强大的二次开发接口,以Vc++为例来说明。
(1)SolidWorksAPIObjectsCOM技术是由Microsoft提出的组件标准,不仅定义了组件程序之间进行交互的标准,而且也提供了组件程序运行所需的环境。OLE(对象链接嵌入)技术是COM的一个应用。利用OLE技术,用户可以通过使用来自两个或多个Windows应用程序的资源来解决复杂的应用课题。OLE提供了方便的技术,用来将文档和来自不同程序的各种类型的数据结合起来。SolidWorks支持COM技术标准,同时也支持OLE标准,并且已完全实现了OLE自动化。
(2)SolidWorksAPI对象简介SolidWorksAPI接口采用面向对象的方法,所有的函数都是有关对象的方法或属性。SolidWorks主要的API对象(如图。所示)涵盖了全部的SolidWorks数据模型。通过对这些对象属性的设置和方法的调用,就可以在用户自己开发的DLL中实现与SolidWorks相同的功能。
(3)APICOM对象及属性的使用COM对象与C++程序语言对象一样具有封装性和可重用性。COM对象的封装性表现在客户不能直接访问COM对象的属性,只能通过COM对象提供的方法来访问;COM对象的可重用性表现在COM对象的包容和聚合,一个对象可以完全使用另一个对象的所有功能,例如Drawing Doc对象派生于Model Doc对象,因此Drawing Doc对象可以通过接口指针使用Model Doc对象里的所有方法与属性。
1.2 API接口查询技术
SolidWorks作为基于Windows的原创软件,为方便用户开发的程序与SolidWorks通信,提供了采用COM技术开发应用程序的方法。用户开发的代码可以作为独立的EXE文件或DLL文件存在,它们就是COM模块。采用COM技术在SolidWorks平台上作二次开发时,通过直接访问SolidWorks底层对象可以方便地扩充SolidWorks的功能。采用COM技术开发SolidWorks时,COM调用的每个API函数都将有一个HRESULT类型的接口指针,可以按照你的意图使用该指针,但在使用完后必须释放指针。
1.3资源的管理
为避免用户化的SolidWorks应用程序的资源与平台本身和其它第三方开发的SolidWorks应用程序的资源发生冲突,必须对应用程序的资源进行管理。解决资源冲突的方法是调用AfxGet Resource Handle和AfxSet Resource Handle这两个函数。在使用新的资源前调用AfxGet Resource Handle函数保存当前的资源,然后调用AfxSet Resource Handle函数把当前资源设置成新的资源,使用完后再调用AfxSet Resource Handle函数恢复先前已保存的资源。以对话框的管理为例来说明上述过程。
HINSTANCE save Resource=∶∶AfxGetResourceHandle();//保存当前资源句柄
∶∶AfxSetResourceHandle(∶∶AfxGetInstanceHandle());//把当前资源设置成新的资源句柄定制菜单。在CexampleApp∶∶docCreateMenu函数中加入如下代码:
hres=pframe->AddMenu(auT"(PartExample"),swMenuPosition,&bres);
hres=pframe->AddMenuItem (auT"(PartExample"),auT"(Bearing"),
swLastPosition,auT(SwPartlib @ MenuItemCBBearing,
Example Property Manager Pageitem"),&bres);
然后用MFC向导ClassWizard创建资源,加入所需的控件;最后再恢复先前保存的资源句柄::AfxSetResourceHandle(saveResource)。
1.4导出函数的管理
DLL包含一个导出函数表,可以通过函数的符号化的名字和称为序号的整数识别这些函数。函数表也包含了函数在DLL内的地址。DLL函数导出有两种方法:用关键字声明和在模块定义文件(3.def)中声明。
(1)声明显式包含dllexport关键字
(2)模块定义文件方法
LIBRARY"SwPartlib";MenuItemCBBearing@4
EXPORTS; MenuItemCBFlange@5
…… ……
2开发系统的结构框架及功能
SolidWorks是典型的三维特征造型系统,完全基于Windows的操作,具有强大的实体造型功能,并且可以进行较为复杂的曲面生成,除此之外是经济性好,可以作为人手一套的机械工程师设计软件,其中重要的一条是它提供了较为方便的二次开发接口,本系统选用SolidWorks为图形平台,采用VC++为主控程序及编程语言,采用Access2000进行数据库管理及数据操作,利用MFC对SolidWorks进行二次开发,从而实现了由参数驱动的友好的SolidWorks 的专业化开发, 本系统是一个开放的系统, 用户可以根据自己的需求, 在系统支持库中随意加入自己的模块。
系统由以下几部分组成:数据输入部分、数据模型建立部分及图形输入部分,具体的系统功能由以下几个部分,如图2所示:
输入功能:主要是输入零件几何信息(几何形状、尺寸等)、加工信息(精度、材料、热处理等)。软件功能:通过人机对话方式选取零件型号,将工艺信息、设计资料信息附加到具体的参数所对应的零件上。输出功能:生成具体的参数驱动的零件三维模型,将模型对应的加工和其他信息存储到数据库中,将模型转换数据标准STEP对应的数据字典文件,存入数据库中。
3系统数据库的实现