基于CATIA/CAA的文字输入的二次开发
2013-10-17徐太花
徐太花
(天津大学软件学院,天津 300072)
0 引言
利用三维建模软件建模过程中,经常会需要输入文字标识符,包括二维平面文字和三维立体文字。虽然SolidWorks、UG等建模软件可直接输入文字并进行特征操作,但是在CATIA中要输入二、三维文字的过程复杂繁琐、不易修改,可重用性差。考虑到CATIA的应用范围广,很多厂商都选用CATIA作为自己的建模工具,因此如何简单、方便、快捷、灵活地输入文字,提高建模人员的工作效率就变得尤为重要。本文以CATIA文字为研究对象,基于CAA开发工具根据不同需求实现了输入二、三维文字的功能。
1 CAA基本概念
1.1 CAA组件应用架构
CAA是对达索(Dassault Systems)公司一系列产品如CATIA、ENOVIA、DELIMA等进行二次开发的一个环境,与VS结合得比较紧密,通过API函数调用CATIA的核心程序,并进行程序开发,从而实现客户程序和原系统的紧密集成。CAA组件应用架构[1-5]如图1所示,它由一系列的模块组成,在CAA架构的支撑之下,Dassault Systems系统可像搭积木一样建立起来,这种结构非常适宜于系统的扩充和发展[6],各个模块之间相互关联、渗透,极为复杂。
CATIA V5的二次开发遵循面向对象的设计思想,构建了完全基于COM(Component Object Mode1)组件的体系结构 PPR(Products,Process,Resource),有效地解决了其维护、管理、扩展困难的问题,并大量使用了最新的计算机技术和标准以及软件工程技术,其中包括基于组件架构思想的Java Bean、COM/OLE、CORBA技术和 Web技术、C++语言、Visual Basic Journaling、STEP-SDAI、XML、OpenGL 等,使得 CATIA V5具有与众不同的鲜明特点:数据结构单一,各个模块全相关,某些模块之间还是双向相关,属于端到端的集成系统,拥有强大的专业应用扩展能力[7]。除此之外,CAA二次开发还涉及软件组件结构SCI(Software Component Infrastructure)的3个基本概念:框架(Framework)、组件(Component)及对象总线(Products Bus)。
图1 CAA组件应用架构
1.2 RADE快速应用开发环境
图2 快速应用开发环境
CAA通过提供的快速应用开发环境RADE(Rapid Application Development Environment)(如图 2所示)和不同的COM组件应用接口来帮助用户实现其自身应用。快速应用开发环境是一个可视化的集成开发环境,它提供完整的编程工具组。RADE以VC++为载体,开发工具完全集成在VS环境中,并且提供了一个CAA框架程序编译器[8-11]。这个强大的开发平台使开发者能够有效地应用工业标准工具和方法,这些方法指导开发者编辑和扩展CATIA V5和ENOVIA V5的图形用户界面、应用程序和数据模型。作为CAA-RADE的有益补充,开发环境还广泛设置了在线编程向导,允许应用CATIA V5和ENOVIA V5的基于组件的应用编程接口(APIS)。
2 CAA二次开发方法
在CAA工程中,需要先创建至少一个框架,即Framework,它包含了一个工程项目的所有需要的元素,即一个Framework就是一个工程项目,是对相似的应用集合的解决方案,但并非是完整的,需要用户加上自己的代码来对其进行开发并将整个应用完整化。Framework的体系结构如图3所示。
图3 Framework的体系结构
使用Framework时需要首先创建一个CAA工程,添加一个Framework,在其下可以添加多个Module,Module中可以自定义地添加 Component、Command、Dialog等。在工程中使用一个新的API时要将所属的头文件添加到工程使用文件中,将所属Module添加到工程调用对应Module下的Make文件中,将所属Framework添加到工程Framework下的IdentityCard.h文件中,就可以实现对新的API的使用。
2.1 创建新工程
创建一个新的CAA工程,即在文件菜单下,创建一个新的Workspace,并添加一个Framework。具体如图4所示。
图4 创建新的Workspace和Framework
2.2 创建新的Module
在创建了Workspace和Framework后,就可以添加Module,基本的开发都在Module里面进行,步骤如图5。在文件菜单下选择Add CAAV5 Project里面的New Module来添加Module。
图5 创建新的Module
2.3 加载必要的API函数
创建Module后,需要向Workspace里面加载一些必要的API函数,以供开发者使用。这些函数在CAA框架中已经提供,开发人员需要通过图6所示的步骤进行加载操作。
图6 加载API
2.4 添加资源、工具条及选框等
在菜单中Add CAAV5 Item子项下可根据开发者不同需求添加自定义 Component、Dialog、Command等,以实现通过输入参数直接用代码生成一个三维模型,并在CATIA主窗口中显示。
3 CATIA文字输入的实现
3.1 三维文字的实现
在CATIA中输入文字,添加特征实现三维化,其前提是文字必须转化为图形,其开发思路为借用Drawing格式的文字输入接口,从对话框获取用户输入文字及字体、字号等相关属性后转为图形格式,将转换后的图形粘贴于目标草图平面,再进行拉伸等其他特征操作,实现中需要先定位CATIA中的对象,然后创建Drawing格式的文件,通过GetText函数获取用户填写到文本框里面的文字,并通过Drawing文件的文本输入接口将文字输入到Drawing文件中,再转化为DWG文件格式,接下来将DWG文件中的文字粘贴到草图中,通过草图文件的显示将文字显示出来。按照二次开发方法添加至对话框并设计对话框后,在对话框确定按钮下添加详细功能实现代码,详细的步骤及关键代码如下所示。
(1)获取对于CATIA中对象的访问。获取过程需要遵循COM组件构建技术的访问规则,从高到低的顺序依次得到。获取对象的代码如下所示,首先定位到当前的编辑器Editor,再通过Editor获取当前对象的定位信息。
(2)在获取CATIA中对象访问之后,需要创建Drawing格式文件,以借助文本输入接口实现文字的功能。
(3)通过GetText函数获取用户在指定的文本框中输入的文本信息,设置文本的相关属性,包括字体、字号并转为DWG图形格式。
(4)将图形文字粘贴于目标草图。
(5)通过草图的一系列显示操作完成对文字的显示,具体结果如图7所示。
图7 三维文字结果展示
3.2 二维平面文字的实现
图8 二维平面文字结果展示
二维平面文字的输入,关键是要文字完全依附于目标平面。主要开发思路为借助注释下文本输入接口,创建新批注集(CATIDrwTextProperties),并在目标平面创建视图,在视图中创建注解文本;通过对话框获取用户输入的文字,并设置字体、字号等属性。注释下文本输入接口的特点是会将输入的文本与选定的平面垂直呈现,为了实现直接在选定的平面上呈现文字,在用户选定了平面后输入到文本输入接口中的平面参数是垂直于用户选定的平面的,这样用户直接输入输出的文字就会显示在选定平面上。在输入文字后再利用3D预览接口(CATNavigation3DViewer)预览文字效果,从而提高工作效率。得出的结果展示如图8所示。
4 结束语
本文介绍了CAA和CAA二次开发的基本概念,并介绍了两种文字的文本输入显示方法,均是采用CAA二次开发的架构实现。从本文可见,通过使用基于CAA开发工具实现CATIA多种文字格式输入的功能,可以避免利用CATIA软件手工建模的繁琐性,提高设计效率。与其它CAD软件相比虽然具有较高的复杂性和难度[12],但同时也可以实现更强大的功能,开发者可以根据需求自定义地开发组件模块及功能,从而大大缩短产品开发周期。在此基础上,可进一步学习并深入拓展开发,运用CAA二次开发的思想和平台、技术,开发更为复杂的功能,如在曲线或曲面上的二、三维文字等的实现,从而实现CAD/CAM技术的真正意义上的有效应用。
[1]Zhang Guangguo,Chang Zhibin,Liu Haitao.Parametric modeling for globoidal cam based on CATIA/CAA[J].Applied Mechanics and Materials:Computer-Aided Design,Manufacturing,Modeling and Simulation,2011,88-89:236-239.
[2]李维学,王仲奇,康永刚,等.基于CATIA V5二次开发的产品自动装配[J].机械制造,2010,48(1):40-43.
[3]卞刚,钟易成,刘德刚.基于CATIA/CAA的飞机燃油系统管路设计仿真[J].计算机辅助工程,2009,18(3):37-41.
[4]苏洪军,王永金.基于CAA的CATIA V5二次开发方法的研究[J].机械,2008,35(s1):41-43.
[5]康文利,张颖.CATIA二次开发技术在齿轮参数化设计中的应用[J].机械工程师,2010(11):81-83.
[6]周仙娥,鲁墨武,赵海星.基于CAA的CATIA二次开发的研究[J].科技信息,2008(36):73-74,317.
[7]周桂生,陆文龙.CATIA二次开发技术研究与应用[J].机械设计与制造,2010(1):81-83.
[8]王宗荣,左敦稳,王珉.基于CATIA的工程图图框、标题栏和明细栏快速生成技术[J].中国制造业信息化,2006,35(21):58-61.
[9]董伊鑫,席平.基于CATIA的界面二次开发[J].航空制造技术,2006(12):83-86,104.
[10]梁振刚,孙国栋.基于CATIA/CAA的飞机零部件三维参数化建模技术[J].四川兵工学报,2012,33(3):72-74.
[11]张敏,苏兰海,王君英.基于CAA的CATIA用户自定义特征创建[J].机械设计与制造,2008(7):87-89.
[12]何朝良,杜廷娜,张超.基于CAA的CATIA二次开发初探[J].自动化技术与应用,2006,25(9):37-40,49.