当前位置:首页 >> 机械/仪表 >>

CAA


Nov. 2008

CAA V5 – 基础培训
- For CATIA

鲁军 上海江达科技发展有限公司

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5

应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 2

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 3

CAA RADE环境安装
安装介质
CATIA V5R18 CAA RADE V5R18 CATIA CAA API V5R18 CATIA/ENOVIA ServicePack1或更高 CATIA CAA API ServicePack1或更高 Microsoft Visual Studio .Net 2005 J2SDK 1.4.2_04或以上 LUM(License Use Runtime)4.6.7或4.6.8

所安装的CATIA、CAA RADE、CATIA CAA API、 ServicePack等,版本必须一致。

上海江达科技发展有限公司 Page 4

CAA RADE环境安装
安装步骤
安装J2SDK 1.4.2_04 安装Microsoft Visual Studio .Net 2005 选自定义安装,将VC++下的所有组件全部安装 安装CATIA V5R18 安装目录中最好不要有空格,如:D:\DS\B18 环境文件的安装目录最好也不要有空格,如:D:\DS\CATEnv 安装CATIA CAA API V5R18 安装目录最好与CATIA安装目录一致,如D:\DS\B18 安装CAA RADE V5R18 安装目录最好与CATIA安装目录一致,如D:\DS\B18 注:在CAA R18上使用MS .Net时,需修改有关配置文件, CAAInstallPath\intel_a\code\command\NTsetenv.bat 对于MS .Net 2005: rem set MkmkVS80=yes set MkmkVS60=yes set MkmkVS80=yes rem MkmkVS60=yes
上海江达科技发展有限公司 Page 5

CAA RADE环境安装
安装步骤
安装 LUM(License Use Runtime) 若无正式CATIA及CAA RADE的License,可不安装该产品 配置二次开发环境 CAA RADE产品认证配置 %RADE_Install_Path%\intel_a\code\bin\CATVBTLicenser %RADE_Install_Path%: CAA RADE安装目录

上海江达科技发展有限公司 Page 6

CAA RADE环境安装
安装步骤
配置二次开发环境 安装联机帮助,以便在RADE环境下提供CAA帮助 %RADE_Install_Path%\intel_a\code\bin\CATVBTSetup %RADE_Install_Path%: CAA RADE安装目录

上海江达科技发展有限公司 Page 7

CAA RADE环境安装
安装步骤
配置二次开发环境 客户化Microsoft Visual Studio .NET Tools->Add-in(工具->外接程序管理器)

上海江达科技发展有限公司 Page 8

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 9

CAA V5 组件结构及软件工程思想
CAA: Component Application Architecture RADE: Rapid Application Development Environment CATIA V5 是法国达索公司与IBM公司开发的新一代CAD/CAM产品。不同于老一代 CAD/CAM产品,它采用了全新的、基于组件的开放式体系结构(Open Architecture Products)。应用了许多现代软件工程思想,整个体系结构虽然十分庞大,但结构清晰 、合理,维护、开发、扩展方便,有着相当优良的扩展性能。它开放的组件应用架构解 决方案,允许更多的第三方供应商针对用户的特殊需求进行定制。 在这里分析一下CATIA V5的基础体系结构(Architecture Infrastructure)及其软件 工程思想,是希望对CATIA V5的学习和二次开发以及理解其它基于相同体系结构的软 件如:ENOVIA LCA、DELMIA等有所帮助。

上海江达科技发展有限公司 Page 10

CAA V5 组件结构及软件工程思想
CATIA V5在开发之初就遵循面向对象的设计思想(OO),构建了完全基于组件的体 系结构(PPR),有效地解决了维护、管理、扩展的困难,并大量使用了最新的计算 机技术和标准以及软件工程技术,其中包括基于组件架构思想的JAVA BEAN 、 COM/OLE、CORBA 技术和Web技术、C++语言、Visual Basic Journaling 、 STEP-SDAI、XML、OpenGL等,这使CATIA V5具有与众不同的鲜明的特点:数据 结构单一,各个模块全相关,某些模块之间还是双向相关;端到端的集成系统,拥有 强大的专业应用扩展能力。 软件组件结构(SCI: Software Component Infrastructure)是软件工程继过程模型 和面向对象模型的下一代逻辑模型。面向对象技术已在许多重要应用中取得成功。但 随着更多面向对象解决方法的开发和使用,很显然的是,单单采用面向对象技术难以 与软件日益增长的复杂性抗衡。因为,对象只构成应用程序的一部分。它完全不能把 握应用程序的结构(控制流)。只能通过重用类库里有的类来实现有限的重用。但实 际情况是,大量应用程序,特别是同一领域(DOMAIN)中的应用程序,分享相似的 结构。不同的程序员使用不同的技术去把握和实现这些相似的结构。结果,这些结构 并没有经过通常的面向对象技术而被重用。

上海江达科技发展有限公司 Page 11

CAA V5 组件结构及软件工程思想
面向对象技术只能通过重用类库中已有的类来实现有限的重用,而软件组件结构(SCI) 提供了最高层次的代码重用。 软件组件结构(SCI)有三个基本的概念:框架(FRAMEWORK)、组件(Component)和对 象总线(Products Bus)。 组件(Component):是软件的基本单元。组件既应足够小,以便于维护;又应足够大, 可具备相当的功能,可以被打包和插用。由于传统的客户/服务器应用不能应付软件应用 日益增加的复杂性。它们不能加入到即插即用的环境之中。组件的特征提供了将一个应 用程序分成若干个组件的机制。每个组件提供了一个相当专门的功能,它向框架的其余 部分描述自己,以便别的组件能够访问它的功能。描述是通过说明性语言如IDL实现的, 它本质上是把组件的接口与实现分离开来。由于组件是可单独维护、升级的,因此,组 件不直接与别的组件通信是至关重要的。它必须通过使用框架或对象总线来实现组件之 间的交互。

上海江达科技发展有限公司 Page 12

CAA V5 组件结构及软件工程思想
框架(FRAMEWORK):框架对所有应用程序提供有用的功能。它提供了统一的总设计。 框架是对相似应用程序集合的一个部分(统一但不完整)解决方案。开发者的任务是用 这不完整的解决方案加上必要的代码建立完整的应用。在领域(DOMAIN)内的一个应用 包括不变部分和可变部分。不变部分由框架把握,一般可占到80%,可变部分由开发者 把握,一般可占到20% 。开发者通过向框架添加变化部分的代码把握其动作,而形成新 的特定应用。框架根据是否针对特殊领域还是若干领域,可分为水平框架、垂直框架、 复合文挡框架。 对象总线:对象总线是基本的中间件。它允许成千上万能够相互理解接口定义语言IDL 的对象相互发生作用。这种作用对对象来说是完全透明的。对象总线把组件和框架的能 力扩展到开放网络和其它伙伴应用程序。它使成千上万独立的软件单元在由不同操作系 统、语言、硬件平台和编译工具组成的环境下互相无缝地交互运作。对象总线不仅提供 对象之间的连接,它还提供对在总线上所有对象都有用的核心服务集(对象服务)。 如:生命周期服务程序、安全性、持久性、命名等。

上海江达科技发展有限公司 Page 13

CAA V5 组件结构及软件工程思想
通过组件构造/修改软件,用框架把握软件结构,用对象总线连接事务,支持即插即用 (Plug & Play)功能的扩展。 CATIA V5体系结构(Architecture Infrastructure) CATIA V5的体系结构(Architecture Infrastructure)是一种面向行业应用的垂直 框架体系结构。组件是CAD/CAM系统的各种几何特征和管理、分析单元。框架是一些应 用,如:2D/3D建模、分析、混合建模、制图、数控加工等,CATIA V5也称为领域 (DOMAIN)或应用(APPLICATION)。并通过3D PLM PPR(PRODUCTS,PROCESS, RESOURCE)HUB产品总线连接起来。 框架通过公用接口来实现对象之间的交互。 CATIA V5 的一些框架: Framework Administration Framework AdvancedMathematics Framework AdvancedTopologicalOpe Framework AnalysisMeshingModel Framework ApplicationFrame

......

上海江达科技发展有限公司 Page 14

CAA V5 组件结构及软件工程思想
CATIA V5采用了多种支持组件技术的软件技术如:JAVA、COM/DCOM、CORBA,内部模块全部 采用CNEXT(CATIA内部使用的一种C++语言)实现,结构单一。提供了多种开发接口,支持 C++/JAVA、Automation API,支持各种开发工具:CAA C++、JAVA 、VB、脚本语言。采用 单继承,对象之间关系明确,体系结构严谨,维护容易。 根据CAD软件的特点和实际需要,CATIA 的设计模式比较简单,主要有工厂模式、层模式等 。在面向对象的编程中,工厂模式是一种经常被使用到的模式。根据工厂模式实现的类可 以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并 且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。

上海江达科技发展有限公司 Page 15

CAA V5 组件结构及软件工程思想
如要做一条垂直于曲面的线, 对象继承关系如下: +---CATBaseUnknown | +---CATBaseDispatch | +---AnyObject | +---HybridShape | +---Line | +---HybridShapeLineNormal 工厂的继承关系如下: +---CATBaseUnknown | +---CATBaseDispatch | +---AnyObject | +---Factory | +---HybridShapeFactory

先在HybridShapeLineNormal对象设定做这条线的属性参数如:点、参考面,在公共抽象 层Line中设定线的共同属性如坐标、法矢等,然后调用HybridShapeFactory中的 AddNewLineNormal方法进行对象实例化。

上海江达科技发展有限公司 Page 16

CAA V5 组件结构及软件工程思想
CATIA V5的产品总线PPR不是真正意义上的对象总线,缺乏真正对象总线的一些特征。 它主要注重其它伙伴应用如EVOVIA LCA、DELMIA的互操作和集成,因此称之为“产品总 线”。产品总线分层的,如机械设计基于Mechanical Modeler&Sketcher,产品功能定义 、EBOM、DMU、知识工程等与Mechanical Modeler&Sketcher都是基于3D PLM PPR HUB OPEN GATEWAY,而文档管理、PDM应用集成、配置管理等基于3D PLM ENTERPRISE ARCHITECTURE。并且全部应用都是基于CORBA、DCOM或J2EE之上。以实现真正意义上的 对象总线功能。

上海江达科技发展有限公司 Page 17

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 18

CAA V5基本开发环境
CAA V5目录结构树介绍、CAA V5 RADE工具在Microsoft Visual C++的 插件、如何在CAA V5百科全书中查找资料

一个组件式的应用架构 工作空间(Workspaces)及框架(Framworks) 构建的工具 与Microsoft Visual Studio的集成 CAA V5百科全书

上海江达科技发展有限公司 Page 19

CAA V5基本开发环境目标
是一个面向对象编程环境的方法及工具 支持V5架构 支持大型程序开发Team在不同地点的协同工作 快速、高质量地完成程序开发任务 达索产品通用的开发平台,支持CATIA/ENOVIA/DELMIA 编制的代码在UNIX及Windows上通用

上海江达科技发展有限公司 Page 20

组件应用架构
CAA V5可以执行一个新产品

上海江达科技发展有限公司 Page 21

组件应用架构
每一个CAA应用是由若干个组件(Frameworks)构成 每一个组件是有若干个模块(Module)构成

上海江达科技发展有限公司 Page 22

CAA V5框架/模块的组织
一组对象通过Built-in,被作为一个完成的资源发布给客户端应用程序 封装扩展的模块及框架

上海江达科技发展有限公司 Page 23

CAA V5的预定义(Pre-Requisites)
在build/link时,为访问一个头文件,如CATIshaft,客户端程序需定 义该头文件的完整路径:Workspace + Framework + Module

上海江达科技发展有限公司 Page 24

CAA V5文件树

上海江达科技发展有限公司 Page 25

如何进行CAA V5预定义
定义所需的Workspaces:mkGetPreq mkGetPreq –p PrerequisitesWorkspace1 可以定义必须的资源的位置 对于编译时:头文件 对于构建运行环境时:共享库、资源文件等 定义所需的框架(Framework):IdentityCard IdentityCard是在构建或使用一个框架时,用来定义所需的Framework 一个Framework有一个标识卡 若没有所需的框架,则IdentityCard可以为空

定义所需的Module:Imakefile.mk 在该文件中必须定义每一个 使用的Module

上海江达科技发展有限公司 Page 26

CAA V5工具级别的管理:TCK
TCK(Tool Configuration Key)可以管理CAA V5 RADE的多个级别 设定TCK的环境:tck_init 列示有效的级别:tck_list 设定有效的级别:tck_profile LevelNameYouWantToUse

上海江达科技发展有限公司 Page 27

编译程序:mkmk
独特的DS工具工作在标准编译器的前端,在Unix及Windows上工作的方式是一致的 编译Fortran、C、C++、IDL…… Link-edit 利用mkmk –h查看该命令的使用帮助

上海江达科技发展有限公司 Page 28

利用外部库进行编译

上海江达科技发展有限公司 Page 29

构建运行环境工具
mkCreateRuntimeView:从构建环境中,拷贝应用程序资源到运行环境中 Mkrun:运行CATIA V5或运行利用CAA V5开发的可执行程序,mkrun –c MyProgram Catstart:运行CATIA V5或其它非CAA V5开发的程序,主要参数有: -env::环境文件名 -direnv:环境文件所在的目录名 -run:执行程序名

上海江达科技发展有限公司 Page 30

Microsoft开发工具中CAA V5插件
CAA V5的所有工具都已集成在Microsoft Developer Studio V6以上版本中 安装Microsoft Developer Studio时,必须选中 Uncode string选项

上海江达科技发展有限公司 Page 31

Microsoft开发工具中CAA V5面板
根据具体的开发任务,在面板中开发程序代码参数有: New CAA V5 Workspace New Framework New Module New Command New Panel New Interface ……

上海江达科技发展有限公司 Page 32

CAA命令与MSDev插件的对应关系

上海江达科技发展有限公司 Page 33

MSDev插件(1/3)
在MSDev面板中直接查看某些更改(文件拷贝、删除、移动等) Project + Choose/Refresh CAA V5 Project ……

上海江达科技发展有限公司 Page 34

MSDev插件(2/3)
为查看程序运行状况,可以在Tools + Runtime Environment Variables中,设定 环境变量CNEXTOUTPUT为console

上海江达科技发展有限公司 Page 35

在MSDev中查看CAA V5 C++对象
选中要查看的对象名称,然后按CTRL + F1

上海江达科技发展有限公司 Page 36

MSDev插件(3/3)
重新构建模块或不使用更新选项时,可以按F7键直接来实现 Ctrl-Q可以实现 .cpp文件与 .h文件之间的切换 Ctrl-T可以直接打开光标所在位置关键词的 .h文件 Ctrl-F1查看API文档 Ctrl-Shift-F查看当前文档的全路径

上海江达科技发展有限公司 Page 37

在Visual C++中指向Unix
如果建立的应用是用于Unix下,需执行CATVBTSetup.exe 在Tool access中,选中Remote access,然后设定CAA V5在Unix上的安装位置

上海江达科技发展有限公司 Page 38

建立Unix上的应用程序
在打开Workspace时,需在Visual C++中指定Unix上的一些信息 在Windows上建立的任何文件,都将被拷贝到Unix上

上海江达科技发展有限公司 Page 39

建立Unix上的应用程序
C++中: 可以定义Pre-requisite 编译连接应用程序 更新运行环境

上海江达科技发展有限公司 Page 40

CAA V5百科全书主页
CATIA_InstallPath\CAADoc\Doc\online\CAACenV5Default.htm

上海江达科技发展有限公司 Page 41

在浏览器中查看CAA V5 C++对象

上海江达科技发展有限公司 Page 42

CAA V5编程指导手册
技术文章 对象名词说明 对象间连接关系 架构说明 样例程序 样例的总体说明 源代码路径说明 每步编程注释 可 拷贝/粘贴部分代 码直接使用 参考API 使用的Framework 使用的Interface 使用的Class ……

上海江达科技发展有限公司 Page 43

CAA V5编程规则
编程规则 命名规范 C++编码规则 Java编码规则 体系架构规则

上海江达科技发展有限公司 Page 44

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 45

编码规则(1/4)
对同一个对象,使用不同接口(Interface)操作时,要定义不同的指针, 否则易引起混乱。

对不同对象,使用同一个接口(Interface)操作时,要定义不同的指针, 否则易引起混乱。

上海江达科技发展有限公司 Page 46

编码规则(2/4)
通过QueryInterface得到的变量在使用前,必需检查变量的值。

使用变量命名规则

上海江达科技发展有限公司 Page 47

编码规则(3/4)
对方法中的变量,使用下面的规则

上海江达科技发展有限公司 Page 48

编码规则(4/4)
在QueryInterface得到的接口指针,使用后需用Release()释放该指针。 应避免接口指针间的循环调用。 学习RADE帮助文档中的编码规则。

上海江达科技发展有限公司 Page 49

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 50

CATIA 二次开发一般步骤
-批处理方式 开发方式分类 批处理模式(Batch Mode) 交互式模式(Interactive Mode) Workshop/Workbench方式 创建一个新模块,除标准命令外,其余均由用户开发 Addin方式 在已经存在的Workbench中插入新的工具条和命令
开发一般步骤 批处理模式(Batch Mode) 建立Workspace 建立Framework 定义Locate Prerequisite Workspaces 建立Module 建立C++的.cpp源文件及.h头文件,编写程序代码 修改IdentityCard.h文件,加入所使用API所属的Framework 修改Imakefile.mk文件,加入所使用API所属的Module 使用mkmk编译程序,并建立运行环境 程序测试

上海江达科技发展有限公司 Page 51

CATIA 二次开发一般步骤
开发步骤详细说明 启动Microsoft Visual Studio .NET 新建/打开Workspace 文件->New CAA V5 Workspace/文件->Open CAA V5 Workspace

-批处理方式

输入/选择目录 选择版本

上海江达科技发展有限公司 Page 52

CATIA 二次开发一般步骤
开发步骤详细说明 新建Framework 文件->Add CAAV5 Project->New Framework

-批处理方式

输入Framework 名称 类型选择

上海江达科技发展有限公司 Page 53

CATIA 二次开发一般步骤
开发步骤详细说明 定义Locate Prerequisite Workspaces CAAV5 Workspace-> Locate Prerequisite Workspaces

-批处理方式

添加所需路径

上海江达科技发展有限公司 Page 54

CATIA 二次开发一般步骤
开发步骤详细说明 新建Module 文件->Add CAAV5 Project->New Module

-批处理方式

输入Module 名称

批处理模式

上海江达科技发展有限公司 Page 55

CATIA 二次开发一般步骤
开发步骤详细说明 新建C++源文件 文件->新建->文件

-批处理方式

上海江达科技发展有限公司 Page 56

CATIA 二次开发一般步骤
练习1 输出“Hello World !” 练习2

-批处理方式

1 利用CATIA建立CATDrawing文件,当前视图中有若干点。 2 编写批处理程序,为每个点做以下标注: 点的名称 X,Y坐标值 结果如右图所示

上海江达科技发展有限公司 Page 57

CATIA 二次开发一般步骤
Drawing结构

-批处理方式

上海江达科技发展有限公司 Page 58

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 59

CAA V5应用框架
介绍CATIA V5编辑器框架、文档编辑基础架构、主要的用户接口原理以及如何在 CATIA中集成自己开发的交互式应用

CATIA V5框架框架编辑器 Workshop、Workbench、Addin 在CATIA中集成自己开发的应用 在编辑器中得到文档指针

上海江达科技发展有限公司 Page 60

CATIA编辑器框架

上海江达科技发展有限公司 Page 61

编辑器框架类:CATFrmEditor
获取该类的一般方法:static CATFrmEditor* GetCurrentEditor() 通过该类中的方法,可以 Compass:实现对CATIA对象的操作(视点的变动、无约束对象的移动旋转等) CSO(Current Set Objects):包含高亮显示的对象 HSO(Highlighted Set Objects) PSO(Pre-Selected Set Objects) ISO(Interactive Set Objects) 还可以获得: 当前文档:CATFrmEditor::GetCurrentDocument() 活动对象:CATFrmEditor::GetUIActiveObject()

注:通过CATILinkableObject接口可以获得对象所关联的文档。

上海江达科技发展有限公司 Page 62

对象路径类:CATPathElement
通过对象构建过程,获取对象,如:获取草图中的一个线,可以通过其完整路径来实 现,CATPathElement=\Part1\PartBody\Sketch4\Line

上海江达科技发展有限公司 Page 63

对象属性及应用程序属性
在对象属性页中,可以加入自己的表项,具体的方法 请参考CAA百科全书中User Interface/Wintop Frame/Creating a Property Page for Object Properties 在应用程序的属性页中,可以加入自己的表项,具体 的方法请参考CAA百科全书中User Interface/Wintop Frame/Creating a Property Page for Application Properties

上海江达科技发展有限公司 Page 64

Workshop,Workbench,Addin
一个Workshop定义一系列可通过菜单或工具条访问的命令 Workshop定义与文档类型相关的通用菜单或工具条 Workbench提供一系列特定的命令,如:Part Design for solid modeling 若干个Workbench可以与一个给定的Workshop关联 对于CATPart文档,有效的Workbenchs,如:Part Design,Wire Frame and Surface Design,Free Style,Generative Shape Design 一个Addin描述工具条或菜单,多个Addin构成一个Workbench
Module
Framewor k

Workben ch

Workshop
上海江达科技发展有限公司 Page 65

命令访问模型
一个命令描述用户的基本操作,如:创建、编辑、删除、分析,…… 一个Workbench组合若干个命令,应用于一个域(Domain),如:Part Design, Assembly Design,Generative Drafting,…… Workshop针对不同的文档类型,组合若干个含有通用命令的Workbench 一个框架为所有的Workshop提供通用的命令

上海江达科技发展有限公司 Page 66

应用的集成
通过以下三种方式,可以将自己的命令集成到CATIA框架中 在指定的上下文中定义一个Addin 在已存在的Workbench中添加工具条 创建新的菜单及子菜单 在已存在的组件中插入菜单或按钮中 定义一个扩展菜单(contextual menu) 通过显示的对象上触发或仅从背景上触发 通过扩展方式,创建(通过对话框)或编辑一个 定义一个新的Workbench并关联到一个Workshop 定义一些工具条 在CATIA的主菜单条中增加一些菜单

上海江达科技发展有限公司 Page 67

Addin
定义一个对象来执行一个已存在的Workbench的Addin接口,如 CATIShapeDesignWorkshopAddin是用于Generative Shape Design 必须执行接口中的两个方法 Void AddinObject::CreateCommands() CATCmdContainer* AddinObject::CreateToolbars()

上海江达科技发展有限公司 Page 68

Workbench(1/4)
第一步,创建Workbench工厂

上海江达科技发展有限公司 Page 69

Workbench(2/4)
第二步,更新字典库

第三步,执行Workbench接口中的方法 Void WorkbenchObject::CreateCommands() CATCmdWorkbench* WorkbenchObject::CreateWorkbench() CATClassId CAACreationWkb::GetAddinInterface()

第四步,修改resources/msgcatalog目录下的有关资源文件,在特定的工作包(如 基础结构)中加入Workbench

上海江达科技发展有限公司 Page 70

Workbench(3/4)
最后一步,执行CreateWorkbench()方法

上海江达科技发展有限公司 Page 71

Workbench(4/4)
附加步骤:完成在CATIA主菜单中加入Workbench的定义

上海江达科技发展有限公司 Page 72

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 73

CAA V5对话框
主要介绍CATIA V5对话框的建立、应用

框架目标 建立图形用户接口 获取用户的输入信息 建立对话框

上海江达科技发展有限公司 Page 74

框架的目标
程序员的加速器 高级别的对象及部件 提高组件重用能力 简洁易用 抽取UNIX及Windows上的部件 标准的连接关系 在本地软件的最高版本之上构建:OSF/MOTIF,MFC 多种功能 CATIA V4-CATIA V5 独立运行

上海江达科技发展有限公司 Page 75

提供的对象

上海江达科技发展有限公司 Page 76

容器:Windows
一个窗口(Window)是个独立的可变大小的容器,在这个容器中可 以创建其它对话框对象。

上海江达科技发展有限公司 Page 77

容器:Bars
对于命令控件或信息区来说,Bar是一个标准持续持续存在的区域

上海江达科技发展有限公司 Page 78

容器:Menus
对于命令控件来说,Menus是一个弹出式容器

上海江达科技发展有限公司 Page 79

组件:Menu Items
对于命令控件来说,Menu Item是一个弹出式控件

上海江达科技发展有限公司 Page 80

组件:Control

上海江达科技发展有限公司 Page 81

对话框架构

上海江达科技发展有限公司 Page 82

对话框设计步骤(1/2)
第一步:决定对话框的类型 是一个普通对话框或是包含文档若干信息的窗口 创建一个类继承于CATDlgDialog 是一个弹出式消息框 使用CATDlgNotify类 是一个文件选择框 使用CATDlgFile类 是一个应用的主窗口 创建一个类继承于CATDlgDocument 增加菜单条、状态条等等

上海江达科技发展有限公司 Page 83

对话框设计步骤(2/2)
第二步:设计对话框的外观 Controls、Frame、Labels…… 用户的交互及指令(Action) 对话框特殊的布局(Layout) 第三步:执行回调方法(Callback Method) 一个回调方法是对用户交互式控制的一个响应 必须对用户的每一个交互动作提供一个回调方法 第四步:提供对话框资源 资源是指在对话框中显示的文字和图片 使用资源转换

上海江达科技发展有限公司 Page 84

对话框布局(Layout)管理
二种管理方式: 栅格布局方式(Grid layout management) 容器被划分为多个小单元,每个对话框对象被放在小单元内 简单易用 附属布局方式(Attachment layout management) 对话框对象被分派在容器内 一般用于较复杂的对话框 使用对话框构建器生成的对话框,一般使用栅格布局方式

上海江达科技发展有限公司 Page 85

对话框构建器(Dialog Builder)
使用CATIA对话框构建器,可以很容易地创建或编辑对话框面板 可以通过菜单或双击已存在的.CATDlg文件来使用该工具 生成对话框的C++代码 可以定义回调(Callback)方法

上海江达科技发展有限公司 Page 86

CATIA 对话框
对话框架包含在类CATInteractiveApplication下,是交互式应用的基类,可以是单对话 框、多对话框或模态对话框。为创建你的交互式应用程序,你应该创建一个从 CATInteractiveApplication派生的类,并且重载BeginApplication及EndApplication方 法,但是不要直接实例化这个类。 对话框架主要包括两种类型: 容器(Containers):主要包括组件对象的布置,容器即可见也可不可见,其本身 并不和用户打交道,除了重新配置和重新定义窗口大小。 组件(Components):是填充容器的基本要素,其中大多数和用户交互,主要是控 件、菜单,其它的包括分割条以及对其它控件的命名等的指标控件。

上海江达科技发展有限公司 Page 87

CATIA 对话框

上海江达科技发展有限公司 Page 88

CATIA 对话框
窗口派生于抽象基类CATDlgWindow CATDlgDialog

CATDlgNotify

上海江达科技发展有限公司 Page 89

CATIA 对话框
窗口派生于抽象基类CATDlgWindow CATDlgFile

Boxes派生于抽象基类CATDlgBox,其用于包括几个对话框架对象 CATDlgContainer

上海江达科技发展有限公司 Page 90

CATIA 对话框
Boxes派生于抽象基类CATDlgBox CATDlgSplitter

CATDlgTabContainer

上海江达科技发展有限公司 Page 91

CATIA 对话框
Boxes派生于抽象基类CATDlgBox CATDlgFrame

CATDlgIconBox

上海江达科技发展有限公司 Page 92

CATIA 对话框
Bars CATDlgToolBar

CATDlgStatusBar

Menus CATDlgMenu

CATDlgSubMenu

上海江达科技发展有限公司 Page 93

CATIA 对话框
Menus CATDlgContextualMenu Indicators CATDlgSeparator

CATDlgLabel

CATDlgProgress

上海江达科技发展有限公司 Page 94

CATIA 对话框
任务触发控制 CATDlgPushButton 选项设置控制 CATDlgRadioButton

CATDlgCheckButton

文字输入/参数选择控制 CATDlgSelectorList

上海江达科技发展有限公司 Page 95

CATIA 对话框
文字输入/参数选择控制 CATDlgCombo

CATDlgEditor

上海江达科技发展有限公司 Page 96

CATIA 对话框
文字输入/参数选择控制 CATDlgSpinner

CATDlgSlider

CATDlgMultiList

上海江达科技发展有限公司 Page 97

CATIA 对话框
文字输入/参数选择控制 CATDlgScrollBar

Menu Items CATDlgPushItem

CATDlgRadioItem

上海江达科技发展有限公司 Page 98

CATIA 对话框
Menu Items CATDlgCheckItem

CATDlgSeparatorItem

上海江达科技发展有限公司 Page 99

CAA V5对话机制
在工具条中启动一个命令,若需响应用户的交互式指令,那么你的命令需操纵对话框

上海江达科技发展有限公司 Page 100

CATIA命令类型
基本命令(Basic Command):无需选择对象或输入数值,如加载特征库 基于对话框命令(Dialog-Based Command):无需选择对象但需输入数值,如根据输 入的坐标值生成点 基于状态命名(CATStateCommand):需选择对象,可有或没有面板。 只有这种类型的命令才能进行undo管理

命令可以有或没有输入参数。

上海江达科技发展有限公司 Page 101

CATStateCommand描述
一个CATStateCommand将接收用户在CATIA中的交互式输入,如选择点、线、曲面等 基于三个概念来管理这种命令: Agents:获取用户操作的事件及选择的对象 States:对话框中等待用于输入 Transitions:定义哪些指令将被执行 为每一个状态定义输入类型 一个Transition定义由源状态到目标状态的转变 根据条件来触发: 最终事件驱动:用户的交互操作 根据条件确认用户的输入 当一个Transition被触发,目标状态将被激活 Transition变化过程中,可以执行一个指令(Action)

上海江达科技发展有限公司 Page 102

状态机制(State Machine)

上海江达科技发展有限公司 Page 103

CATStateCommand类
创建一个新类(Class)继承于CATStateCommand 至少覆盖: 描述自己的状态(State)的变迁:BuildGraph() 适时管理命令的生命周期:Activate()、Desactivate()、Cancel() 定义一些方法,作为条件的验证及指令(Action)的执行 保存命令对话框中agent的数据成员

上海江达科技发展有限公司 Page 104

定义状态(State)变迁
覆盖BuildGraph方法 定义所需的对话框Agent 创建所有状态(States),并将Agent插入到相应状态中 定义状态之间的变迁(Transitions) 定义条件 定义指令(Actions)

上海江达科技发展有限公司 Page 105

Agent(1/2):定义
一个对话框的Agent将用户的交换操作转换成用户输入 如一个CATIndicationAgent将2D视图中左键的点击转换成2D坐标输入 它隐藏了如何将用户的操作转换为用户的输入 经重新获取输入后,一个对话框的Agent可以重复使用 别忘记用InitializeAcquisition()方法进行获取的初始化

上海江达科技发展有限公司 Page 106

Agent(2/2):主要类型
CATDialogAgent是主要类 该类可以用来定义一个Agent与命令对话框中对象的连接 当一个事件发生时,这个Agent将被赋值

CATIndicationAgent是用来获取一个2D点的坐标,如在视图中点击鼠标 CATPathElementAgent是用来获取一个对象元素的路径,如用鼠标选择元素

上海江达科技发展有限公司 Page 107

State(1/2):声明

上海江达科技发展有限公司 Page 108

State(2/2):插入对话框Agent到状态

上海江达科技发展有限公司 Page 109

Transitions(1/3):Agent的条件

上海江达科技发展有限公司 Page 110

Transitions(2/3):Agent的条件

上海江达科技发展有限公司 Page 111

Transitions(3/3):指令的执行

上海江达科技发展有限公司 Page 112

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 113

CAA V5资源
学习如何定义资源文件(文本、图标等)

资源概述 资源分配 预定义资源分配 对话框预定义资源

上海江达科技发展有限公司 Page 114

资源概述
什么是资源?
资源是显示在应用程序中的文字或图标 文字资源支持本地语言 资源可以被更改而不用重新编译应用程序

上海江达科技发展有限公司 Page 115

资源分配:声明及创建
声明对象的资源:

创建资源文件
根据语言种类,创建消息文件(CATNls) 为无消息资源创建CATRsc文件

上海江达科技发展有限公司 Page 116

资源分配:定义与预定义
使用用户定义资源

使用预定义资源
每一个对话框中的对象(Panel、Toolbar、Workbench……)有 一些预定义的资源(Title、Help、Icom……) 使用这些资源,需在CATNls、CATRsc文件中定义

上海江达科技发展有限公司 Page 117

预定义资源分配:Panel

上海江达科技发展有限公司 Page 118

预定义资源分配:Toolbar及Workbench

上海江达科技发展有限公司 Page 119

对话框的预定义资源
对于对话框类,有几种不同的文本及图标资源可以定义 文本资源
Title:对象的标题 Mnemonic:利用Alt键选择 Accelerator:利用Ctrl键选择 Help:对象的帮助信息 ShortHelp:当鼠标指向对象时显示的帮助信息 LongHelp:当选择帮助按钮然后点击对象时显示的帮助信息

图标资源
Icon:对话框对象缺省图标 IconSel:对象被选择后显示的图标 IconFocus:当鼠标移到对象上时显示的图标 IconDisabled:当对象不可以被选择时显示的图标 IconType:图标的类型(Default、General、Creation、 Modification、Analysis),如果图标是透明的,定义背景颜色

上海江达科技发展有限公司 Page 120

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 121

CATIA 二次开发一般步骤
开发方式分类 批处理模式(Batch Mode) 交互式模式(Interactive Mode) Workshop/Workbench方式 创建一个新模块,除标准命令外,其余均由用户开发 Addin方式 在已经存在的Workbench中插入新的工具条和命令

-交互式

开发一般步骤 交互式模式(Interactive Mode) 建立Workspace 建立Framework 定义Locate Prerequisite Workspaces 建立Module 建立Command,并编写程序代码 建立Dialog,并编写程序代码 建立Workshop/Workbench或Addin,并编写程序代码 修改IdentityCard.h文件,加入已用API所属的Framework 修改Imakefile.mk文件,加入已用API所属的Module 用mkmk编译程序,并建立运行环境 程序测试

上海江达科技发展有限公司 Page 122

CATIA 二次开发一般步骤
-交互式
每个WorkSpace至少需要包含一个Framework。一个Framework包含了一个工程的所有需 要的元素,也即是,一个Framework即可以是你的一个工程。一个Framework下可以包含 多个Module,一个Module可以包含多个Interface、Class 、Command等。 CAA工程结构树

Workspace结构树

Framework结构树

上海江达科技发展有限公司 Page 123

CATIA 二次开发一般步骤
-交互式
PublicInterfaces:公共接口,在这个文件夹中是类的声明,即.h头文件。这些类可以 为整个Framework的各个模块共享,也可以被外部Framework使用。 PretectedInterfaces:系统自动生成的module.h头文件,供编译连接时使用。这些模 块只能在本Framework使用。 IdentityCard.h:本文件定义所有已使用API所属的Framework,即预定义Framework。 也就是在开发过程中你使用了系统或者外部的API,你必须包含此API所在的头文件、 module、Framework,其中Framework的预定义就在这个文件中进行。 Cnext文件夹:包含了Resources和Code两部分,后面介绍具体使用。

上海江达科技发展有限公司 Page 124

CATIA 二次开发一般步骤
Module文件夹:Module为组织程序代码的一个基本容器。 LocalInterfaces中是仅供本模块使用的头 文件集合 src是所有本模块的.cpp文件集合 Imakefile.mk文件是所有本模块所包含的头 文件所在外部Module的定义。在上面提到的 IdentityCard.h中定义的是API所在的Framework, 而相应的Module即在此文件中定义。在LINK_WITH 后面添加需要连接的Modules。

-交互式
Module
LocalInterfaces

src

Imakefile.mk

上海江达科技发展有限公司 Page 125

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 启动Microsoft Visual Studio .NET 新建/打开Workspace 文件->New CAA V5 Workspace/文件->Open CAA V5 Workspace

输入/选择目录 选择版本

上海江达科技发展有限公司 Page 126

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 新建Framework 文件->Add CAAV5 Project->New Framework 输入Framework 名称 类型选择

上海江达科技发展有限公司 Page 127

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 定义Locate Prerequisite Workspaces CAAV5 Workspace-> Locate Prerequisite Workspaces

添加所需路径

上海江达科技发展有限公司 Page 128

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 新建Module 文件->Add CAAV5 Project->New Module 输入Module 名称 交互模式

上海江达科技发展有限公司 Page 129

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 新建Command 右键点击所建的Module名,选“设为启动项目” 文件->Add CAAV5 Item->CATIA Resource->Command

输入 Command 名称

上海江达科技发展有限公司 Page 130

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 新建Dialog 右键点击所建的Module名,选“设为启动项目” 文件->Add CAAV5 Item->CATIA Resource->Dialog

输入Dialog 名称

上海江达科技发展有限公司 Page 131

CATIA 二次开发一般步骤
开发步骤详细说明 Dialog与Command之间的交互实现 几何元素选取通过CATFeatureImportAgent来实现 对话框中PushButton事件,可通过CATDialogAgent来实现 通过AcceptOnNotify来设定所响应事件 通过GetInitialState及AddDialogAgent来设定事件状态 通过AddTransition来设定事件状态的转换 这些设定一般在Command的BuildGraph函数中设置

-交互式

上海江达科技发展有限公司 Page 132

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 建Addin 右键点击所建的Module名,选“设为启动项目” 文件->Add CAAV5 Item->Component 输入对象名称 点击该按钮, 加入所需 Addin

修改相关文件内容, 具体后面说明。

上海江达科技发展有限公司 Page 133

CATIA 二次开发一般步骤
-交互式
开发步骤详细说明 Framework的资源文件存放在Cnext/resource/msgcatalog目录下 *.CATNIs文件:定义此Workbench以及其工具条、菜单的所有名字(Title),定义 格式为: _WName.Title=”_Name”; 其中: _WName:Workbench/工具条/菜单的对象名称 _Name :在CATIA中显示的名称 *.CATRsc文件:可以定义此Workbench以及其工具条、菜单的图标(Icons)和其放置 路径(Category),前者暂不说明,后者格式定义如下: _WName.Category=“_CategoryName”; 其中: _WName:Workbench/工具条/菜单的对象名称 _CategoryName:所属Category的名称,对于 Workbench,它可以是Infrasturcture、 MechanicalDesign等

上海江达科技发展有限公司 Page 134

CATIA 二次开发一般步骤
-交互式 开发步骤详细说明 Addin是在已有的Workbench中插入新的工具条或菜单 在前面加入Addin后,还需修改以下文件: 在JDCATRafAddin.h中:(JDCATRafAddin是新建Addin的名称) #include "CATCmdContainer.h“ void CreateCommands(); CATCmdContainer * CreateToolbars(); 在JDCATRafAddin.cpp中: #include "CATCommandHeader.h MacDeclareHeader(JDCATRafAddinHeader); 添加两个Public函数声明 void CreateCommands() { new JDCATRafAddinHeader (“point”,“CmdModule”,“CmdName”,(void *)NULL); new JDCATRafAddinHeader (“line”,“CmdModule”,“CmdName”,(void *)NULL); } CATCmdContainer * CreateToolbars() { NewAccess(CATCmdContainer,pRaff,RaffTB); NewAccess(CATCmdStarter,pPointCmd,PointCmd); SetAccessCommand(pPointCmd,"point"); SetAccessChild(pRaff,pPointCmd); NewAccess(CATCmdStarter,pLineCmd,LineCmd); SetAccessCommand(pLineCmd,"line"); SetAccessNext(pPointCmd,pLineCmd); AddToolbarView( pRaff, 1 , Right ); return pRaff; }
上海江达科技发展有限公司 Page 135

CATIA 二次开发一般步骤
-交互式 开发步骤详细说明 在前面加入Addin后,还需修改以下文件: Imakefile.mk:加入相应的module IdentifyCard.h:加入相应的预定义Framework *.CATNIs(如JDCATRafAddin.CATNIs)中定义工具条名称 如:RaffTB.Title=“工具条名称”; RaffTB:CreateToolbars函数中CATCmdContainer的名字 *.CATRsc:(如JDCATRafAddinHeader.CATRsc)给菜单定义图片,若该文件 不存在,按照前面介绍的方法添加。
JDCATRafAddinHeader.point.Icon.Normal = “I_CAAPoint” ; JDCATRafAddinHeader.line.Icon.Normal = “I_CAALine” ; MacDeclearHeader 中的参数,也是 .CATRsc的文件名 New JDCATRafAddinHeader 中的第一个参数 图片名称

图片存放在cnext\resource graphic\Icon\Normal目录下 图片大小一般为16X16象素

上海江达科技发展有限公司 Page 136

CATIA 二次开发一般步骤
-交互式 开发步骤详细说明 使用mkmk编译程序,并建立运行环境 在VC中,选 生成->mkmk 在VC中,选 CAAV5 Workspace->Create/Update Runtime View

若mkmk时出错,要分清是编译错误还是链接错误,并根据错误信息修改程序( *.cpp文件)及相关定义文件(如IdentityCard.h及Imakefile.mk)。

上海江达科技发展有限公司 Page 137

CATIA 二次开发一般步骤
-交互式 开发步骤详细说明 程序测试 在VC中,选 工具->Runtime Environment Variables 选 窗口->Open Runtime Window,键入cnext命令

CNEXTOUTPUT console

上海江达科技发展有限公司 Page 138

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 139

CATIA 二次开发实例介绍
曲面上各点坐标及法矢 需求说明 取得所选曲面上所有点的坐标及单位法矢,并将这些数据输入到Excel文件中。 需求分析 开发方式采用交互模式,以Addin方式,在ShapDesign中加入工具条及菜单; 建立必要的对话框,显示所选曲面及输出文件的设定; 当前所有点,可通过CATIDescendants接口下的GetAllChildren方法得到; 点的坐标,可通过CATPoint接口下的GetCoord方法得到; 单位法矢是过点做曲面的单位长度的垂线,垂线的另一个端点与初始点的X、Y 、Z坐标差值,既为单位法矢I、J、K值; (工程上单位长度为1mm) 对Excel文件的处理,可通过CATICkeParmFactory、CATIDesignTable、 CATICkeSheet等接口下的相应方法实现

上海江达科技发展有限公司 Page 140

CATIA 二次开发实例介绍
曲面上各点坐标及法矢 程序实现步骤 利用CATIA的选取机制,得到所选曲面 利用当前文档的CATIPrtContainer ,得到CATIDescendants指针 根据CATIDescendants指针得到当前所有的点 判断点是否在所选曲面上 取得点的CATPoint指针,并得到点的X、Y、Z坐标 取得点的CATIAlias指针,并取得点的名称 过点做所选曲面的单位长垂线 取得垂线上另外一个端点的CATPoint指针,并取得其X、Y、Z坐标 根据垂线上两个端点的坐标差值,得到单位法矢I、J、K值 利用CATIPrtContainer指针,取得CATICkeParmFactory指针 利用CATICkeParmFactory及输入的文件名,建立Excel的表,并取得 CATIDesignTable指针 利用CATIDesignTable指针,取得表(Sheet)的CATICkeSheet指针 利用CATICkeSheet指针,将所需信息输入到Excel文件中,如:点的名称、X、Y 、Z坐标值、单位法矢I、J、K值等

上海江达科技发展有限公司 Page 141

内容介绍

CAA RADE环境安装 CAA V5 组件结构及软件工程思想 CAA基本开发环境介绍 CAA V5开发一般规则介绍 CAA二次开发一般步骤(批处理方式) CAA V5应用框架介绍 CAA V5对话框介绍 CAA V5资源定义介绍 CAA二次开发一般步骤(交互式方式) CAA二次开发实例介绍 CAA二次开发经验介绍

上海江达科技发展有限公司 Page 142

CATIA 二次开发经验介绍
编程前,请阅读CAA百科全书中的CAA V5 C++ Naming Rules部分,并按照其要求编写代 码,以方便自己或其他人阅读程序。特别注意以下关于变量定义的约定: 前缀 p pp pi sp a 意 义 指针 指向指针的指针 指向接口的指针 智能指针(smart pointer) 数组 例 子

CATBaseUnknown *pTarget; void **ppTarget; CATISpecObject *piTargetFeature; CATISpecObject_var spTargetFeature; char *aPath;

在.h头文件中定义的私有(private)变量,在实现以上约定后,再加前缀 “_”,如: CATISpecObject_var _spFeat; 功能函数中的变量,约定如下: 前缀 i o io 意 义 CATISpecObject *_piFeat;

输入参数 输出参数 输入/输出参数
上海江达科技发展有限公司 Page 143

CATIA 二次开发经验介绍
每使用一个新的API后,要在相应Framework下的IdentityCard.h文件中添加其所在的 Framework名,在相应Module下的Imakefile.mk文件中添加其所在的模块名,并注意每次换 行时,要加一个斜线(\)来继续执行下面的module。这样在mkmk编译时,会减少错误。 一般的学习方法是根据CAA提供的.edu例子,学习其各API的使用,然后再根据DS提供的培训 教材,多做练习,理解其意义所在。各API的具体含义,要通过CAA百科全书来深刻理解。在 学习和做练习过程中,多留意CATIA各Framework中,各对象间的层次关系,这对开发自己的 应用程序是很有帮助的。 不再使用的指针要及时释放,如在使用QueryInterface接口后,对于返回后的指针,在使用完 后,一定要用Release接口释放该指针,对于char类型指针,用delete来释放等。及时释放内存 的使用,以避免错误的发生,并加快程序的运行。 建议尽可能使用smart类型指针(如CATISpecObject_var),该类型指针无需释放。有些通过 QI(QueryInterface)可以得到的指针,是可以用smart类型指针自动转换类型,如:已有 CATISheet类型指针*pSheet,要得到其CATISpecObject类型指针,可用: CATISpecObject_var spSpcSheet(pSheet)直接得到,而不用通过QueryInterface接口。 减少代码的开发量,加快程序开发进度。 在CAA的KnowledgeInterfaces,长度参数的单位为米,角度参数的单位为弧度(非角度), 角度参数PI定义在CATMathConstant.h头文件中。

上海江达科技发展有限公司 Page 144

谢 谢!

www.jiangda.cc


相关文章:
CAA V5R18培训教材1
密级:内部 培训教程 CATIA 二次开发 编号:1—CAA 基础共 14 页 2012 年 7 月 编号:1—CAA 基础 分发: 批准: 审核: 质审: 审校: 校对: 设计: I 编号...
CAA连接数据库
CAA连接数据库_机械/仪表_工程科技_专业资料。CAA连接数据库CAA 连接数据库的问题解决 由于本人要将大量的数据从文本文件中读入到程序中,进行检索,查询,显 示等操...
CATIA二次开发之CAA+RADE+VS安装配置全过程_图文
CATIA二次开发之CAA+RADE+VS安装配置全过程_计算机软件及应用_IT/计算机_专业资料。CATIA二次开发之CAA+RADE+VS安装配置全过程图文解释 ...
CAA二次开发的使用
CENIT AG Systemhaus EADS Matra Datavision ZEH Software Infrastructure Interface 10 11 12 13 Dynamic Designer CAA V5 Based LMS Virtual.Lab Acoustics LMS ...
CATIA_CAA_二次开发详细资料合集
如果是出现的错误为缺少库文件,记得开篇说的那样看看自 出现问题的时候要更新一下编译环境 creat/update runtim 己的 vc 哦 ^_^ 3.CATIA CAA 二次开发 (3):...
关于V5R21 CAA License提示错误问题的解决方法
关于V5R21 CAA License提示错误问题的解决方法_军事/政治_人文社科_专业资料。关于 V5R21 CAA License 提示错误问题的解决方法: 1. 可能原因:安装了 Interactive ...
CAA-淀粉样脑血管病的临床诊治
CAA-淀粉样脑血管病的临床诊治_临床医学_医药卫生_专业资料。脑淀粉样血管病(cerebralamyloidangiopathy,CAA)是老年人一种独立的脑 血管病,临床特征以痴呆、精神症...
CATIA_CAA V5R19教程
CATIA_CAA V5R19教程_计算机软件及应用_IT/计算机_专业资料。CATIA CAA V5R19 二次开发详细教程 CAA,全称 Component Application Architecture,组件应用架构。 CAA ...
CAA-创建工具条
CAA-创建工具条_计算机软件及应用_IT/计算机_专业资料。本例在机械设计 (workshop) 的零件设计 (workbench) 中生成了一个工具条(Toolbar) 。 (在添加component时...
CAA什么意思
CAA什么意思_英语学习_外语学习_教育专区。CAA 什么意思??有关娱乐圈的。。 2009-4-9 20:58 提问者:lin2free | 浏览次数:27544 次 例如某某演员后台是 CAA...
更多相关标签:
caa经纪公司 | caa文件阅读器下载 | 美国caa | caa文件 | caa签约艺人 | caa猫 | caa钓鱼 | 海外caa |