一种基数据库的CATIA模板设计方法

点赞:11164 浏览:45924 近期更新时间:2024-03-19 作者:网友分享原创网站原创

摘 要:计算机三维辅助设计软件CATIA通过COM接口及模板定义实现图形交互的二次开发,但在CATIA环境下实现复杂的界面设计就显得非常困难,同时,CATIA的二次开发面向一定程序基础的人员,对于普通建模者而言自定义模板和二次开发就非常困难.通过外部数据库定义模板及属性,利用Web界面设计的特点,实现外部(非CATIA)环境下属性定义与赋值方法,可降低CATIA二次开发的要求,并有效提高系统开发效率.

关 键 词:三维模型,CATIA,模板,CAA,二次开发

0概述

在Caitia环境下实现模板和自定义属性的挂接通常通过Caita自身模板定义或CAA二次开发实现,但CATIA二次开发或者模板定义需要专业的程序开发经验,而且其定义的模板或二次开发程序由于是独立的程序(模板),模板的更改和属性值的变更使得对每一个零部件节点进行变更.提出一种基于数据库的属性维护方法,通过在CATIA外部(数据库)定义模板及模板属性.将CATIA下的节点路径(编号)关联管理,实现任意类型模板及模板属性的管理.一方面降低了模板的使用难度,另一方面有利于模板的后期维护,提高模板使用效率.

1外部定义模板流程

CATIA通过CAA接口实现与微软基础类库MFC控件的通信,MFC通过微软Web浏览器(WebBrowser浏览器)控件实现与Web页面之间的通信,最后通过Web页面实现与数据库之间的数据交换.从而实现CATIA环境下三维模型属性的外部存储与Web方式维护的目的.

2外部模板定义的通信机制

2.1CAA与MFC之间的通信

(1)CAA向MFC通信.因使用的是MFC动态库,所以从CATIA平台的CAA接口向MFC通信,可以直接在CAA中调用MFC动态库的接口,向MFC发送消息即可.

(2)MFC向CAA通信.如果需要MFC向CAA返回信息,需要在MFC动态库中提供一个接口,接收CAA提供的函数,作为回调函数,当需要MFC向CAA返回信息时,调用该回调函数即可,MFC动态库中的代码片段节选如下.

extern"C"__declspec(dllexport)voidDLL_FunCallBack(void(*pFun)(char*msg))

{

pDlg->,InitCallBackMethod(pFun),

}等

voidCMyWebDlg::InitCallBackMethod(void(*pFun)(char*msg))//存储函数指针

2.2MFC与WEB之间的通信

MFC与WEB之间的通信,本质上就是C++与JaScript之间的通信,所以在MFC动态库中封装了SDK实现的WebBrowser控件,把WebBrowser控件作为C++与JaScript的桥梁,实现双向通信.

(1)MFC向WEB通信.当用户选择了CATIA节点,程序通过本文的通信机制,将CATIA节点路径,传送到WEB端,并显示到页面.

(2)WEB向MFC通信.当WEB端按钮需要向MFC返回消息时,调用window.external.MethodForWeb时,会调用GetIDsOfNames方法找到MethodForWeb,再通过Invoke方法,最后调用MethodForWeb,获取到WEB端传送给MFC的信息.

3模板设计应用

基于CATIACAA与Web的混合架构机制,建立基于Web的模板设计方式,具体包括添加属性模板和为模板配置属性两方面内容.


(1)添加属性模板.针对不同的三维模型,可添加多个不同类型的属性集(即模板),在Web端实现了添加属性模板功能,通过配置不同的属性模板,可写作不同结构的属性数量及类型.

(2)添加属性.完成属性模板添加后,进一步对CATIA模型赋予相应的属性.首先在三维环境下选择工程和节点,然后选择节点所属模板后自动弹出该模板所有属性列表,填写属性值并确认后,一方面属性挂接到CATIA模型树上,另一方面属性值写入数据库,完成流程.

4结论

通过研究CATIA二次开发与MFC及WEB之间的多路通信实现了CATIA属性模板的外部定义与赋值.可以降低CATIA属性添加的难度,同时使得属性的维护更简单方便.最后应用证明该方法可行、有效,极大的提高CATIA模板的开发效率,也极大的提高了模板的复用性.