想做CATIA二次开发?那你大概率绕不开CAA。全称是Component Application Architecture,翻译过来叫“组件应用架构”。听着唬人,其实说白了就是一套让你自己加功能的框架。
为啥要学它?因为CATIA本身就是用组件拼起来的。你可以自己写CAA组件,给CATIA V5开个挂;也可以把一堆组件攒到一起,搞个自己的专用工具。实测:很多大厂的定制模块就是这么来的。
先聊CAA的组织方式。每个应用至少有一个framework(框架),每个framework里至少有一个module(模块)。重点来了:每个framework下面必须有个IdentityCard.h文件。这个文件干嘛的?它用宏AddPrereqComponent来声明这个框架依赖哪些其他框架。编译器看了这个文件,就知道把头文件搜索范围限制在那些必备框架的接口里。
反过来说,如果你忘了声明依赖,编译时就会报一堆找不到头文件的错——我当年就被这个坑过。

再说module。每个module目录下有个Imakefile.mk文件,这货的作用是指明:这个模块里的所有文件编译时需要哪些其他模块、哪些外部库,还有不同操作系统下的特殊要求。个人认为,CAA最良心的地方就是:它在所有系统上用同一套编译器规则。你不用操心怎么写makefile,也不用记不同编译器的命令。但别高兴太早——MKMK并不是全自动的,你至少得在Imakefile.mk里告诉它:你用到了哪些其他模块的接口。
接下来是程序结构。CAA用了COM组件模型,里面有两个关键概念:接口和实现。接口就是一坨纯虚函数,只管“声明有哪些方法”;实现是具体干活的对象,它得显式说自己支持哪些接口,然后把这些接口里的方法全部写出来。一个实现对象可以支持多个接口,但外面的人只能通过接口跟它打交道——这不就是“只看菜单,不看后厨”嘛。
聊完底层,说说开发环境。RADE(Rapid Application Development Environment)是个可视化集成开发环境,说白了就是把CAA开发工具塞进Visual C++6.0里。它提供了一套完整的工具组,包括TCK、MAB、CUT、MKMK、CID等,都是以插件形式跟VC++混在一起。
TCK负责管理RADE环境,用来装开发包、创建工作空间。你在Windows NT上打开V5工作区时,tck_init和tck_profile这两个命令会自动调用。

MKMK是多工作区应用编译器,它是达索自己的源码编译工具。好处是跟平台无关(UNIX和Windows NT都能跑),支持面向组件的设计。但别指望它帮你搞定一切——你至少得告诉它你想要啥。
最后说句实在话:CAA + RADE这套组合,在所有高端CAD/CAM开发环境里算是最复杂、也是最强大的。如果你想玩转CATIA二次开发,耐着性子啃吧。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删