钟维明,文伏灵,李 伟,梁 勇(中国电建集团成都勘测设计研究院有限公司,成都 610072)
一种基数据库的CATIA模板设计方法
钟维明,文伏灵,李伟,梁勇
(中国电建集团成都勘测设计研究院有限公司,成都610072)
摘要:计算机三维辅助设计软件CATIA通过COM接口及模板定义实现图形交互的二次开发,但在CATIA环境下实现复杂的界面设计就显得非常困难,同时,CATIA的二次开发面向一定程序基础的人员,对于普通建模者而言自定义模板和二次开发就非常困难。通过外部数据库定义模板及属性,利用Web界面设计的特点,实现外部(非CATIA)环境下属性定义与赋值方法,可降低CATIA二次开发的要求,并有效提高系统开发效率。
关键词:三维模型;CATIA;模板;CAA;二次开发
在Caitia环境下实现模板和自定义属性的挂接通常通过Caita自身模板定义或CAA二次开发实现,但CATIA二次开发或者模板定义需要专业的程序开发经验,而且其定义的模板或二次开发程序由于是独立的程序(模板),模板的更改和属性值的变更使得对每一个零部件节点进行变更。提出一种基于数据库的属性维护方法,通过在CATIA外部(数据库)定义模板及模板属性。将CATIA下的节点路径(编号)关联管理,实现任意类型模板及模板属性的管理。一方面降低了模板的使用难度,另一方面有利于模板的后期维护,提高模板使用效率。
CATIA通过CAA接口实现与微软基础类库MFC控件的通信,MFC通过微软Web浏览器(WebBrowser浏览器)控件实现与Web页面之间的通信,最后通过Web页面实现与数据库之间的数据交换。从而实现CATIA环境下三维模型属性的外部存储与Web方式维护的目的。
2.1 CAA与MFC之间的通信
(1)CAA向MFC通信。因使用的是MFC动态库,所以从CATIA平台的CAA接口向MFC通信,可以直接在CAA中调用MFC动态库的接口,向MFC发送消息即可。
(2)MFC向CAA通信。如果需要MFC向CAA返回信息,需要在MFC动态库中提供一个接口,接收CAA提供的函数,作为回调函数,当需要MFC向CAA返回信息时,调用该回调函数即可,MFC动态库中的代码片段节选如下。
2.2 MFC与WEB之间的通信
MFC与WEB之间的通信,本质上就是C++与JavaScript之间的通信,所以在MFC动态库中封装了SDK实现的WebBrowser控件,把WebBrowser控件作为C++与JavaScript的桥梁,实现双向通信。
(1)MFC向WEB通信。当用户选择了CATIA节点,程序通过本文的通信机制,将CATIA节点路径,传送到WEB端,并显示到页面。
(2)WEB向MFC通信。当WEB端按钮需要向MFC返回消息时,调用window.external.MethodForWeb时,会调用GetIDsOfNames方法找到MethodForWeb,再通过Invoke方法,最后调用MethodForWeb,获取到WEB端传送给MFC的信息。
基于CATIACAA与Web的混合架构机制,建立基于Web的模板设计方式,具体包括添加属性模板和为模板配置属性两方面内容。
(1)添加属性模板。针对不同的三维模型,可添加多个不同类型的属性集(即模板),在Web端实现了添加属性模板功能,通过配置不同的属性模板,可定制不同结构的属性数量及类型。
(2)添加属性。完成属性模板添加后,进一步对CATIA模型赋予相应的属性。首先在三维环境下选择工程和节点,然后选择节点所属模板后自动弹出该模板所有属性列表,填写属性值并确认后,一方面属性挂接到CATIA模型树上,另一方面属性值写入数据库,完成流程。
通过研究CATIA二次开发与MFC及WEB之间的多路通信实现了CATIA属性模板的外部定义与赋值。可以降低CATIA属性添加的难度,同时使得属性的维护更简单方便。最后应用证明该方法可行、有效,极大的提高CATIA模板的开发效率,也极大的提高了模板的复用性。
参考文献:
[1]周桂生,陆文龙.CATIA二次开发技术研究与应用[J].机械设计与制造,2010(01).
[2]胡添元,余雄庆.基于CATIA二次开发的飞翼外形参数化建模[J].飞机设计,2007(06).
[3]郭新玲,李韶杰,邱尚高.MFC类库在Pro/E二次开发中的应用[J].现代制造工程,2004(10).
[4]吴宪传,张向文.MATLAB和VC++联合编程的COM研究[J].计算机系统应用,2009(07).
[5]徐辉,王忠芝.基于WebBrowser的MATLAB用户界面设计与实现[J].计算机系统应用,2011(07).