CAD/CAM软件
按行业筛选
请选择行业
----------------------
-全部行业
------------------
-机床与金属加工设备
-刀具/量具/夹具/磨具
-模具设计与制造
-塑料机械/橡胶机械
-通用机械/化工机械
-工程机械/建材机械
-交通运输/海工装备
-农业机械
-食品机械/烟草机械
-包装机械
-印刷机械/广告设备
-纺织机械
-木工/造纸/环保/医疗设备
-物流设备
-智能楼宇/安防设备
-炉窑/热处理设备
-五金工具
------------------
-工业自动化
-佳工激光网
-仪器/仪表/衡器
-电力设备
-电子/通讯/办公文具
-家电/照明/健康设备
------------------
-基础件/通用件
-标准件
-工业原材料
-电子元器件及材料
-包装材料
------------------
-CAD/CAM/PDM/PLM
-ERP/制造业信息化
-管理咨询/认证
-服务/培训/工业设计
按产品筛选
----------------------
-本行业全部文章
--------------------
-CAD/CAM软件
-CAE/模拟仿真
-PDM/PLM/C
-EDA/专用CAD
-三维打印机
-三坐标测量机
-三维扫描仪
-CAD硬件/先进制
查看本类全部文章
SolidWorks接口开发技术的实现
作者:赵付青 余冬梅 杨亚红
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系统数据库的实现
3.1数据库管理系统
为了能够生成统一类型不同规格的零件,必须将标准件的数据存储在数据库中,目前可供选择的数据库系统很多,其中Access简单易学,操作方便,可以完成诸如查询、排序、增删记录等对数据的操作功能,完全满足开发零件库对数据管理的要求,因此选用Access作为管理数据的工具。
3.2访问数据库
应为当用户输入主导参数后,程序访问数据库,获得与主导参数相匹配的其它参数,所以必然在开发中涉及到对数据库的操作。常用的数据库接口包括ODBC、DAO、ADO等,其中DAO是一种广泛使用的数据库接口技术,可使用Vc++的标准函数调用公用接口访问数据库的内容。相关的代码如下:
3.3MFC开发SolidWorks的具体应用
在前面所述工作的基础上加入了所需的导出函数并确定了连接方式就可以编写系统的具体实现代码了,为了使程序规范化,所有零件系统生成函数都采用了函数调用的方法,即将所有的函数声明放在一个头文件*.h中,函数的实现放在*.cpp文件,这样主程序就可以通过参数传递实现对函数的调用了.
4结语
上述基于MFC的SolidWorks二次开发的关键技术是对SolidWorks二次开发技术的初步探索,我们开发的基于SolidWorks的零件信息库系统已经通过省科技厅的项目鉴定,这对CAD /CAM 软件的应用、推广,为推动甘肃制造业信息化 ,都将起到重要作用。(end)
文章内容仅供参考
(投稿 )
(如果您是本文作者,请点击此处 )
(6/5/2008)
对 CAD/CAM软件 有何见解?请到 CAD/CAM软件论坛 畅所欲言吧!