logo资料库

CAA难得的一个教程.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
计算机应用 Computer applications 《 自 动 化 技 术 与 应 用 》 2 0 0 6 年 第 2 5 卷 第 9 期 基 于 C A A 的 C A T I A 二 次 开 发 初 探 何 朝 良 1 , 杜 廷 娜 1 , 张 超 2 (1.重庆交通大学 ,重庆 400074; 2.上海工程技术大学,上海 201620) 摘 要:介绍 CATIA 二次开发的几种方式,并对 CATIA 的主要开发平台 CAA 进行了初步研究,阐述了 CAA 的组成、架构、原理、 功能和国内外的最近研究情况,提出了基于 CAA 的 CATIA 二次开发的基本方法,并提供了具体开发实例。 关键词: 二次开发; C A T I A ; C A A ; 面向对象程序设计; C O M 中图分类号:TM391 文献标识码:B 文章编号:1003-7241(2006)0037-05 The Secondary Development of CAA-Based CATIA HE Chao-liang1, DU Ting-na1, ZHANG Chao2 (1. Chongqing Jiaotong University, Chongqing 400074,China ; 2. Shanghai University of Engineering Science, Shanghai 201620,China ) Abstract:This paper introduces several methods of the secondary development for CATIA. The structure and the functions of CAA are provided in the paper. The key methods and examples of the secondary development for CATIA are also presented. Key words:secondary development; CATIA; CAA; object-oriented-programming; COM 1 引言 (1)标准格式的输入输出。用于跨 CAD 平台、跨 PDM、标 CATIA(Computer Aided Tri-dimensional Interface 准格式的输入输出,以便进行数据格式的转化。 Application)是法国 Dassault Systemes 公司开发的 CAD/ (2)使用自动化应用接口(Automation API)的宏。用于自动 CAM/CAE/PDM 一体化软件。 广泛用于航空、航天、汽车、船 化(Automation)组件,日志(Journaling),Visual Basic 和 舶及电子工业,尤其在航空航天业,有八成以上场上使用CATIA JavaScript/Html 的开发,这是一种交互方式的定制。该定制方 的市场[1]。CATIA 如此倍受人们的青睐,这主要是因为它具有人 式允许用户获取CATIA 的数据模型。Automation API 具备了与 性化的界面、超群的功能、智能型的功能操作、以及独步全球的 任何 OLE 所兼容的平台进行通讯的能力。 全面组合分析功能,而且是目前全球最理想地支持虚拟设计的软 (3)智能构件(Knowledgeware)。智能构件是一套预定义的 件平台之一。 易用服务,它驱动的管理和重用是从函数、规范到组件和系统来 然而,由于使用习惯和使用的侧重点不同,功能再强大的软 一步一步实现的。它是一种反应式的、基于规则的、面向目标的 件也不可能同时满足各类用户的需求,特别是在虚拟装配方面的 客户化方式,允许定制和外部代码的集成。它用于三个方面:知 功能还很难达到人们的需求。因此,对 CATIA 进行二次开发研 识顾问、知识专家和产品工程优化。 究,已受到国内外许多科研院所及高校的重视。 (4)交互式的用户定义特征,是一种编制式的定制开发。通过 2 CATIA二次开发的几种方式 聚合现存的特征来交互地定义新的数据类型。收集现存规范,指定 输入,从而创建一个 IUDF(用户定义特征)。IUDF 可以通过引用 作为一种大型工程应用软件,CATIA V5 先后具备了以下 5 一个Catalog保存在.CATPart文档中。它可以交互地被客户使用。 个开放性能[2],从而使其用户能够方便地对CATIA进行定制开发: (5)CAA V5 的 C++ 和 Java 应用接口。这是基于组件的定 收稿日期:2006-03-07 制开发。C A A 是组件应用架构(Component Application Architecture)的缩写,是 Dassault Systemes产品扩展和客户 Techniques of Automation & Applications | 37
《自 动 化 技 术 与 应 用 》2 0 0 6 年 第 2 5 卷 第 9 期 计算机应用 Computer applications 进行定制开发的平台,它使全球诸多开发商可参与 Dassault (5)CAA-Legacy Data Integration Development Con- Systemes 的研发。利用 CAA 可以进行从简单到复杂的二次开发 figuration(简称LDC):提供数据接口工具,可使用户继承原有的 工作,而且和原系统的结合非常紧密,如果没有特别的说明,无 数据。 法把客户所研发的功能从原系统中区分出来,这非常有利于用户 3.2 CAA V5的原理和架构 的使用和集成。 C A A 采用面向对象的程序语言,而面向对象的程序设计 对于需要捕捉用户的一系列交互操作的应用,可以采用 (Object-Oriented-Programming ,OOP)已成为软件开发领域 CATIA V5 的自动化应用接口和 CAA V5 的 C++、Java 应用接 中软件开发设计的主流,其好处在于:可复用性、抽象性、封装 口。自动化应用接口可以调用“InputBox”和“MsgBox”函数 性等。CAA 的开发可以看作是其组件对象的组合和扩展。 获取用户输入信息和进行输出,而对于NT 用户还可以应用Vi- C A A 采用 C O M 技术和 O L E 技术,C O M 作为一种软件架 sual Basic来定义更为复杂成熟的输入输出面板,还可以给宏关 构具备了更好的模块独立性、可扩展性,使 CAA 的程序设计更 联一个图标,并置入 CATIA 显示框架。CAA V5 可以做精致的 加容易且趋于标准化,使程序的代码更加简洁。 交互命令,这些命令可以分组归入工作台(workbench)并展示 CAA 架构可用图1 表示。它全面反映了Dassault Systemes 精美的面板,且能够实现 Undo / Redo。智能构件和 CAA V5 几大产品的内部模块的关系。在CAA 架构的支撑之下,Dassault 可以用来实现企业标准的约束检查。 Systemes可以像搭积木一样建立起来,这种结构非常适宜于系统 用户定义特征和 CAA V5 都可以事后定义新的特征,而产 的壮大和发展。 生和其它DS特征平等的特征。要扩展已经存在对象的行为,则要 CAA V5 才能实现。和外部系统通讯可以通过格式输入输出实现。 而 CATIA 也是自动化的服务器,在 NT 下,可以通过自动化接口 进行与外部通讯。CAA V5 提供一个称为 Backbone 的通讯总线 结构,该总线通过封装底层的通讯技术实现高层异步通讯。 对于用户定义特征和智能构件,只需要用户具备CATIA V5 的知识就可以进行开发;而对于自动化应用接口和CAA V5,还 需要用户分别具备VB的开发能力、C++(或Java)的开发能力,同 时还需具备 COM 的基本知识。 3 CAA的基本介绍[2] 3.1 CAA的组成 在商业运作方面,与Dassault Systemes系统的其它解决方 案一样,把产品(Product)依据用户的运用规模和场合提供相应 的配置方案(Configuration),用户在购置CAA时应当根据需要 选择合适的配置方案和产品。 目前 CAA 提供的五个配置方案的产品(模块)如下: (1)CAA-Multi-workspace Application Building(简称 ABC):是 CAA 应用的基本配置; (2)CAA - C++ Extended Development(简称 CDC):提供 基于 C++ 的开发环境,用户除可使用 C++ 开发环境的所有工具 外,还可使用 C A A 提供的独特的开发工具,可用于 C A T I A 和 E N O V I A 的二次开发; (3)CAA - C++ Base Development(简称 CDV):与 CDC 类 似,但规模小,针对中小市场,可有限地运用于 CATIA V5 和 ENOVIA LCA 的客户化工作; (4)CAA-Java Base Development(简称JDV):运行于JAVA 开发环境,适用于 ENOVIA LCA 客户端的定制; 38 | Techniques of Automation & Applications 图1 CAA架构 3.3 国内外的应用情况 在国外,无论是在法国还是日本等国,对 CAA 的研究和应 用相对比较早,也比较深入。而在国内,南京航空航天大学在 2004 年初才成为CAA 的第一个正式用户。但国内的北京航空航 天大学、西北工业大学、第一飞机设计院等许多大学和研究所, 都在关注CAA的应用研究。而作为Dassault Systemes的合作研 发软件商身份的则没有。 4 二次开发的基本方法 CAA是第三方产品集成和一般客户进行客户化、个性化设计 的强有力的工具,利用 CAA 完全可以实现 Dassault Systemes应 用的深层次开发。但是,由于Dassault Systemes应用本身的复杂 性和 CAA 所涉及的深层次内容,利用 CAA 进行二次开发必然具 有一定的复杂性和难度,用户在熟练掌握Dassault Systemes相应 的应用系统,同时还具备了软件开发的基本知识、C++(或Java) 的基本编程能力、COM 技术的基本知识等基础上,需要做到: (1 )熟悉 CAA 架构(图 1 )中的 RADE 。 RADE 包含两个模块:Tools 和 Guides,前者介绍怎样创建 运行环境、开发平台上各个功能菜单的作用、对话框的创建等 等;后者介绍编程时的相关规则、不同层次的组件、编写代码时
的一系列建议等。 计算机应用 Computer applications 5 实例 《 自 动 化 技 术 与 应 用 》 2 0 0 6 年 第 2 5 卷 第 9 期 (2)熟悉 CAA V5 开发平台中的基本知识。 在完成 C A A 基础理论部分的学习和相应的基本开发练习 如熟悉 Framework 的组成原理(图 2),客户对象、接口和 后,便可以进行应用开发了。图 5 所示是笔者开发的一个 实现之间的关系(图 3),命名规则,Workshop、workbench、 WorkBench 和相应的工具栏。此 WorkBench 功能是实现正 n 棱 toolbar 和menu 之间的关系,创建session 的目的,以及文件树 柱的参数化快速建模[2,3]。 (File Tree)(图4)的逻辑结构等。只有熟悉这些相关的基本知 图中左上角红线框内的 H c l W o r k B e n c h 就是这个 识,才能够了解 CAA 的这套实现机制,才能做到有的放矢,从 而 正 确 地 实 现 自 己 开 发 的 目 的 。 这 些 基 本 知 识 位 CAA_V5_For_CATIA_Foundations 中。 图2 Framework的组成原理 图 3 客户对象、接口和实现间的关系 WorkBench 的图标,Hcl 是笔者姓名的缩写,右边框显示了该 图5 自定义的WorkBench和工具栏 WorkBench 及其包含的工具栏。图中“南京航空航天大学课题 组:”对话框是自定义的交互式对话框,由右边框工具栏内 图 标激活。 通过这个对话框,只要输入您想要的正n(n ≥ 3,否则弹 出出错信息并提示重新输入n ≥ 3 的值)棱柱的棱数、其外接圆 半径、拉伸方向与Z 轴间的夹角和拉伸长度后,点击“确定”就 会自动生成你所需要的棱柱(当n与外接圆半径之比大到一定值 时,结果为圆柱)。图中显示:n=8、其外接圆半径为25、拉伸夹 角为 0度和拉伸长度为60的结果。 其创建过程是先在一个参考平面上绘制一个正n边形,然后 按指定方向进行拉伸而形成。其中,获取一个Sketch Factory 并 图4 CAA V5文件树结构 (3)掌握其基本编程方法和相关技能。 选定参考平面的相应程序如下: 如:如何创建 Framework 和 component、如何创建一个接 ... 口、如何创建session、如何获得一个API函数的指针、如何实现 // Retrieves the sketch factory CATISketchFactory_var 交互等。这就需要熟悉 CAA 组成架构和接口的逻辑关系。要掌 spSketchFactOnPrtCont(piPrtCont); 握 这 些 基 本 编 程 方 法 和 技 能 , 需 要 仔 细 研 究 // Creates the sketch plane CAA_V5_For_CATIA_Foundations_Exercises并进行相应的编程 // retrieves the reference planes 练习和探索。 CATIPrtPart_var spPart = piPrtCont->GetPart(); (4 )弄清楚 C A A 提供些什么函数,各函数分别位于哪个 CATListValCATISpecObject_var spListRefPlanes = Component 中,怎样才能获得相应函数的接口。 spPart->GetReferencePlanes(); 如何获得相应函数的接口是比较关键的;而比较困难的是如 // defines the xy plane as the first sketch plane 何利用 CAA 所提供的这些函数来实现自己开发的目的。这不仅 CATISpecObject_var spSketchPlane = spListRefPlanes 需要仔细研究 CAA 所提供的 C++ API 中的各 Framework 下的 [1]; 各种类型的函数和相应的接口关系,而且还要进行大量的编程探 // Instantiates the sketch with the plane 索,才能熟悉和掌握。 CATISketch_var spSketch = spSketchFactOnPrtCont-> Techniques of Automation & Applications | 39
《自 动 化 技 术 与 应 用 》2 0 0 6 年 第 2 5 卷 第 9 期 计算机应用 Computer applications CreateSketch(spSketchPlane); { // Retrieves the 2D factory to create the lines and points MyCATDlgNotify.DisplayBlocked( " 对不起! 您输入 of the sketch 的角度不能为 90 度,否则无法拉伸! ", "Hcl correct C A T I 2 D W F F a c t o r y _ v a r s p W F 2 D F a c t O n S k e t c h informantions") ; (spSketch); return; 要选一个参考平面作为绘制正 n 边形的平面,就需要使用 } GetReferencePlanes()这个函数,而要调用这个函数则须获得 //To get the pad direction with the axis Z: CATIPrtPart_var这个类型的智能指针,而要获得这个智能指针, Gama = iGama*3.1425926535/180.; 又必须通过CATISketchFactory_var来获得。 //the pad direction: 用GetReferencePlanes()函数选定参考平面,并获得该平面 CATMathDirection directionZ(0., sin(Gama), cos(Gama)); 对应的 CATISpecObject_var 指针,再凭借该指针最终得到 CATI2DWFFactory_var 这个智能指针。 //The thickness value of the Extrusion in "dirZ" di- 而绘制正n 边形的程序如下: // To draw the polygon for ( int i=0; i GetValue(); //The thickness value of the Extrusion in oppsite di- { double pointX=0, pointY=0; rection to "dirZ" pointX = iR*cos(Seda*i); pointY = iR*sin(Seda*i); double secondLimit = 0.; if (firstLimit==0. && secondLimit==0.) double pt[2]={ pointX, pointY }; { double point1X=0, point1Y=0; point1X = iR*cos(Seda*(i+1)); point1Y = iR*sin(Seda*(i+1)); double pt1[2]={ point1X, point1Y }; MyCATDlgNotify.DisplayBlocked( " 对不起! 您输入 的拉伸长度不能为零,无法拉伸! " , " H c l c o r r e c t informantions") ; return; CATISpecObject_var spLine = spWF2DFactOnSketch-> } CreateLine(pt,pt1); // Retrieves the Mechanical Design factory to create the CATI2DCurve_var spCurveOnLine(spLine); pad spLine = NULL_var; spCurveOnLine->GetStartPoint(); spCurveOnLine->GetEndPoint(); } // Closes the sketch edition spSketch->CloseEdition(); CATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont); piPrtCont->Release(); piPrtCont=NULL; CATISpecObject_var spSpecObj = spPrtFactOnPrtCont-> CreatePad( spSketch ); CATIPad_var spPadOnSpecObj(spSpecObj); 利用上述得到的CATI2DWFFactory_var 智能指针,去掉用 spPadOnSpecObj->ModifyDirection( directionZ ); C r e a t e L i n e ( p t , p t 1 ) 函数进行画线,并返回对应的 spPadOnSpecObj->ModifyEndType( catOffsetLimit ); C A T I S p e c O b j e c t _ v a r 指针,再将该指针转换为 spPadOnSpecObj->ModifyEndOffset(firstLimit); C A T I 2 D C u r v e _ v a r ,以便能去调用 G e t S t a r t P o i n t ( ) 和 spPadOnSpecObj->ModifyStartType(catOffsetLimit); GetEndPoint()函数,来获得所画的线段的起点和重点,而最终绘 spPadOnSpecObj->ModifyStartOffset(secondLimit); 制出该线段。绘制完毕后,须用CATISketch_var 指针去调用函 spSpecObj->Update(); 数CloseEdition()来完成草图编辑。 // Checks the limits of the created pad 而将正 n 边形拉伸为正n 棱柱的程序如下: if ( spPadOnSpecObj -> GetEndOffset() != firstLimit // Extrusion direction of the pad || spPadOnSpecObj -> GetStartOffset() != secondLimit) double iGama = _Editor006 -> GetValue(); if (iGama == 90.) { return; (下转第49 页) 40 | Techniques of Automation & Applications
计算机应用 Computer applications 《 自 动 化 技 术 与 应 用 》 2 0 0 6 年 第 2 5 卷 第 9 期 实现。TC35I的关机电路主要由开漏极三极管Q2构成,其输出的 接口实际上是一个串行异步收发器,符合ITU-T RS232接口标准, 关机信号接至 TC35I 的 31 脚。该管脚定义为 EMERGOFF,为关 有固定的参数:8 位数据位和 1 位停止位,无校验位,波特率在 机控制,低电平有效,低电平时间不小于3.2s。 300bps-115kbps之间可选(常用19200 bps)。串行通信使用CMOS 4.4 SIM卡电路 电平,支持标准的 AT 命令集,硬件握手信号用 RTS0/CTS0。 TC35I 集成了一个与ISO 7816-3 IC Card 标准兼容的SIM 接口,连接到ZIF 连接器。TC35I 在 ZIF 连接器上为SIM 卡接口 5 结束语 预留了 6 个引脚(24~29),其与 SIM 卡的连接见图 1.1。其中 使用 GSM SMS 作为远程通信的实现技术可避免架设通信 CCIN 引脚用来检测 SIM 卡支架中是否插有 SIM 卡,当插入 SIM 线路的麻烦和高额成本,工程服务设施可自由灵活设置,不受地 卡,该引脚置为高电平时,系统方可进入正常工作。在实际使用 形条件的限制,因而应用前景广泛。使用 SMS 模块 TC35I 利于 中,SIM 卡的 1 脚和 2 脚对地分别需要接一200nF 和 1nF 的电容。 系统集成,成本较低,并且通信安全可靠。该模块及文中提出的 4.5 工作状态指示电路 外围电路设计已经得到了实际的应用,利用其设计的变压器红外 工作状态指示信号由 TC35 的 32 脚(SYNC)输出,通过外 远程报警装置已经在电力系统中得到了实际使用,能够可靠实现 接电源和发光管指示电路的工作状态。SYNC 引脚有两种工作模 远程的报警通信,取得了不错的效果。 式,一种是指示发射状态时的功率增长情况,另一种是指示 TC35I 的工作状态,可用 AT 命令 AT+SYNC 进行切换。工作于 参考文献: 工作状态指示时,当LED 熄灭,表明 TC35 处于关闭或睡眠状态; [1] 郭红霞,潘斌,等.Cygnal C8051F020 控制 TC35I 的无线 当 LED 为 600ms 亮 /600ms 熄时,表明 SIM 卡没有插入或 TC35 正在进行网络登录;当 LED 为 75ms 亮 /3s 熄时,表明 TC35 已 登录进网络,处于待机状态。 4.6 数据输入输出 终端的设计[J].仪器仪表用户,2004.11(4):75-78. [ 2 ] 林光锐, 周洪, 等. 小型水电站监控系统中的远程通信技 术实现[J]. 水电自动化与大坝监测,2004.28(4):1-3. [3] Siemens TC35 技术手册. http://www.siemens.com/ w m [ E B / O L ] . TC35I 的 16-23 脚为数据输入 / 输出,分别为 DSR0、RING0、 RxD0、TxD0、CTS0、RTS0、DTR0 和 DCD0。数据输入 / 输出 作者简介:张峰(1979 -), 男,汉族,河南南阳人,硕士, 讲师,研究方向为信号与信息处理、自动控制。 (上接第40 页) } 定的 C++ 编程 开发能力、基本软件常识、COM 技术的基本知 图6所示是笔者开发的另一实例[4,5]:通过程序将一个现存的 识、相关的英文阅读能力等。但是,我们经过一年来的研究发现: 进行基于 CAA 平台的 CATIA 二次开发研究,不仅可以开发出一 些方便快捷的建模模块,而且还能借助它们对电子样机、协同设 计、虚拟装配和虚拟制造等技术的实际运用进行有效的研究。 参考文献: [1] 尤春风, 等.C A T I A V 5 机械设计( 第一版) [ M ].北京: 清华大学出版社,2002 ,(10):1-3. [2] Dassault Systemes CAA V5 R12 documentati- on [EB/ OL]. [3] LAAKKO, T. and MANTYLA. Feature modelling by incremental features recognition[J]. Comput- er-Aided Design, 1993, 25(8): 479-492. [4] REGLI, W. C. Geometric algorithms for Recogn- ition of Features from Solid Models[J]. Ph.D. thesis, University of Maryland, 1995. [5] 孙家广, 等.计算机图形学(第三版)[M].北京:清华大 图 6 Component插入、移动与缩放实例 Component(可以是Part,也可以是 Product)插入到新定义的产 品树中,并改变其位姿和按比例缩放,同时保留其插入前的原位置 和原始大小不变,以便形成比较,使它们均成为该产品树的子级。 通过程序,除可以对零部件进行插入、平移、缩放之外,还 可以对其进行旋转以及虚拟装配仿真等。 学出版社,2002,(12):369-373. 6 结束语 CAA 作为 Dassault Systemes 产品如 CATIA 等的功能强大 作者简介: 何朝良(1974 -), 男,助教,硕士,主要研究 的开发平台,尽管利用其进行开发具有一定的难度,需要具备一 方向为计算机图形学及其应用、虚拟现实。 Techniques of Automation & Applications | 49
分享到:
收藏