快速链接  最新消息  产品下载  联系我们  技术支持   繁体中文  English  

基于InterOp拓展SolidWorks数据接口

1.引言

 

3D模型数据的转换是具有不同数据格式的应用程序在实际应用中不可避免的问题。一个项目可能是由多种CAD造型软件构造;专业的CAMCAE软件需要读入不同的模型数据;PDM/PLM等软件需要直接浏览、管理不同的CAD产生的数据等,构成了数据转换的强烈需求。

 

Solidworks1995年问世以来,其优异的性能、易用性和创新性,极大地提高了机械设计工程师的设计效率,在与同类软件的激烈竞争中已经确立了它的市场地位,成为三维机械设计软件市场的公认标准,在航空、航天、铁道、兵器、电子、机械等领域拥有广泛的用户。其原因之一就是该软件的插件之多是其余CAD软件无法相比的,如:COSMOSWorksFeatureWorksPhotoWorks等,满足了不同用户多样性的需求。

 

Solidworks对CATIA V5数据的支持在国际上已有多种解决方案,如:Formatworks、CAT5Works等,但此类插件在市场上定位的价格较高,从某种程度上制约了国内大部分中小型企业的使用。笔者从应用需求出发,利用Spatial公司的数据接口组件——InterOp开发了V5Works这一插件,可以为Solidworks提供比较完善的CATIA V5数据接口,同时可以节约接口软件购买的费用,为SolidWorks与CATIA V5之间的数据转换建立良好的接口通道,实践证明这是一种行之有效的解决方法。

 

2.开发环境的选择

 

美国Spatial公司开发的数据接口组件InterOp能够对市场上流行的3D格式如:CATIA V5、CATIA V4、IGES、STEP、VDA-FS、Pro/E、Parasolid、UG、Solidworks、Inventor和ACIS等进行准确和透明的转换,不仅支持包括实体、曲面和线框等几何和拓扑信息的转换,而且包括层、坐标系、工作平面、颜色属性、名称以及装配关系等系统环境或属性信息,可以满足用户的多种需要。

 

Solidworks中提供了一系列的API函数,从界面到零件、装配件和工程图三种工作平台下信息的提取都提供了很好的接口,支持多种编程语言。Solidworks中集成的宏程序功能,使得利用VBA或者VB进行二次开发时尤为方便。所开发出来的插件可以与Solidworks很好的集成使用,满足用户各种不同的专业需求,减少了设计时间,提供了工作效率。

 

组件InterOp是基于VC环境下进行编程,因此开发的插件选择在VC++6.0的环境下编译调试。使用C++进行SolidWorks的二次开发相对VB来说比较复杂,但开发插件的稳定性以及扩展方面有比较大的优势。

 

V5Works插件是基于InterOp R16在Solidworks 2006的平台上使用Visual C++ 6.0开发完成的。经过笔者的测试,可以与Solidworks 2006的无缝集成,并实现数据转换的工作要求。

 

 3.零件模型数据的转换

 

实现SolidWorks中读取CATIA V5的数据,可以将CATIA V5格式直接转换成Solidworks的格式,但InterOp这个组件中没有直接在这两种数据间的转换接口,因此需要一种中间格式来实现此类转换。

 

SAT数据格式可以是这个理想的中间格式。首先利用InterOp的数据接口将CATIA V5的数据转换为SAT数据,这个转换可以保证转换的成功率和精度,满足任何级别用户的需要。SolidWorks内部的转换接口支持SAT文件的读入,最后一步是将读入的SAT文件转换为SolidWorks的数据格式,如图1所示,从而实现CATIA V5文件的读取。

 

 

V5Works这一插件所要做的工作首先是在Solidworks中添加读取CATIA V5的接口,即在文档打开的对话框中支持CATIA V5的格式;其次是将InterOp集成到V5Works的插件中,实现CATIA V5向SAT数据的转换;最后利用SolidWorks所提供的API,将读入的SAT文件转换为SolidWorks的格式保存,同时删除所产生的SAT临时文件。
 

由于InterOp和Solidworks内部转换这两步的转换对属性均有很好的支持,所以可以保持原有的CATIA属性,如颜色属性、坐标轴属性等。

 

程序实现过程如下:

 

a.添加读取CATIA V5零件的接口

 

VARIANT_BOOL bres;

m_pSldWorks->AddFileOpenItem(auT("V5Work@opencatpart"), auT("CATPart\n V5Work open (*.CATPart)"), &bres);

 

b. 启动InterOp组件并进行初始化

 

api_start_modeller(0);

                api_initialize_constructors();

                api_initialize_kernel();

                ……

api_initialize_aciscatiav5rd();

api_catiav5_read_attributes(true);

 

c.将CATIA V5零件转换为SAT文件

 

api_catiav5_convert_catiav5_to_acis_entlist(filename, list, "temp.log");

api_save_version(14,0);

FILE* fp = fopen(sattemp_char,"r");

                api_restore_entity_list(fp,TRUE,list);

                fclose(fp);

 

d. 读入SAT文件并保存为Solidworks数据格式

 

pSolidWorks->LoadFile2(auT("temp.sat"), auT("r"), &retval);

doc_retval->SaveAs2(sat, 0, FALSE, FALSE, &saveas_retval);

 

e.删除临时的SAT文件

 

DeleteFile(auT("temp.sat"));

 

f.终止InterOp组件

 

api_terminate_aciscatiav5rd();

……

api_terminate_kernel();

api_terminate_constructors();

api_stop_modeller();

 

 

4.装配体数据的转换

 

CATIA V5的零件转换相对简单,但是装配体的读取就存在一定的难度了。具体的转换过程如图2所示。

 

 

这里可以利用InterOp将CATIA V5的装配件转换成单个的SAT文件和一个XML文件,其中SAT文件是单个的CATIA V5零件的转换结果,XML文件中记录了所有零件之间的装配关系。系统利用已开发的零件模型转换接口分别读入零件的SAT文件,并保存为SolidWorks文件格式,同时对XML文件进行解析,提取其中的装配信息并且转换成SolidWorks所识别的装配关系。根据解析出的装配关系与单个的Solidworks文件的结合,创建出相应的装配件。

 

程序实现过程是:

 

a.添加读取CATIA V5装配件的接口

 

m_pSldWorks->AddFileOpenItem(auT("V5Work@opencatproduct"), auT("CATPart\nV5Work open (*.CATPorduct)"), &bres);

 

b. 启动InterOp组件并进行初始化

 

api_start_modeller(0);

                api_initialize_constructors();

                api_initialize_kernel();

                ……

api_initialize_aciscatiav5rd();

api_catiav5_read_attributes(true);

 

c.将CATIA V5装配件转换为单个的SAT文件和XML文件

 

api_catiav5_convert_catiav5_assembly_to_xml(assemblyf          ile, xmlfile, partsDir, “temp.log”);

 

d.对XML文件进行解析提取零件之间相应的装配关系

 

ParseXML(auT("temp.xml"));

 

e. 将所有的零件与对应的装配关系相结合创建Solidworks装配件

 

pSolidWorks->LoadFile2(auT("temp1.sat"), auT("r"), &retval);

pSolidWorks->LoadFile2(auT("temp2.sat"), auT("r"), &retval);

……

AddMateInformation();

doc_retval->SaveAs2(assembly, 0, FALSE, FALSE, &saveas_retval);

 

f.删除临时的SAT文件和XML文件

 

DeleteFile(auT("temp1.sat"));

……

DeleteFile(auT("temp.xml"));

 

g.终止InterOp组件

 

api_terminate_aciscatiav5rd();

……

api_terminate_kernel();

api_terminate_constructors();

api_stop_modeller();

 

最终的转换效果图如图3、4所示。

 

3CATIA V5数据

 

4Solidworks数据

 

5.结束语

 

基于InterOp组件所开发的Solidworks插件——V5Works,实现了Solidworks与CATIA V5数据之间的相互转换,提升了Solidworks的发展空间,可以满足特定用户的需求,具有很好的实用价值和应用前景。

 


本站首页|最近消息|联系我们|产品下载|技术服务|关于我们|产品信息|合作伙伴
Copyright 2003-2006 Spatial公司版权所有. 沪ICP备p14679687号
ACIS和SAT是Spatial公司注册商标. 本站点提及的其它产品或公司名称分别属于各自的拥有者.