# CAATestModule **Repository Path**: Karze/caatest-module ## Basic Information - **Project Name**: CAATestModule - **Description**: 这是一个CATIA CAA 开发的示例项目,主要展示了在CATIA CAA环境中不同构建类型模块的创建方法以及它们之间的代码调用机制。通过本项目,开发者可以学习如何在CATIA CAA框架中进行模块化开发、共享库创建以及跨框架代码调用。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-24 - **Last Updated**: 2025-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CATIA CAA 开发模块示例项目 ## 项目概述 这是一个CATIA CAA (Component Application Architecture) 开发的示例项目,主要展示了在CATIA CAA环境中不同构建类型模块的创建方法以及它们之间的代码调用机制。通过本项目,开发者可以学习如何在CATIA CAA框架中进行模块化开发、共享库创建以及跨框架代码调用。 ## 项目结构 本项目采用CAA V5的标准目录结构,包含两个主要框架:`FrmCommon`和`FrmMain`。每个框架都包含了不同构建类型的模块,展示了各种代码调用方式。 ``` e:\Project\CAA\TestModule/ ├── FrmCommon/ # 公共功能框架 │ ├── CommonTool.m/ # SHARED LIBRARY类型模块,提供Excel相关功能 │ ├── PublicInterfaces/ # 框架级公共接口目录 │ └── IdentityCard/ # 框架身份卡,声明框架依赖 │ ├── FrmMain/ # 主功能框架 │ ├── CCore.m/ # LOAD MODULE类型模块,主入口模块 │ ├── InnerTool.m/ # SHARED LIBRARY类型模块,提供字符串处理功能 │ ├── JsonTool.m/ # NONE类型模块,提供JSON解析功能 │ ├── PublicInterfaces/ # 框架级公共接口目录 │ └── IdentityCard/ # 框架身份卡,声明对FrmCommon框架的依赖 │ ├── doc/ # 文档目录 │ ├── BUILT_OBJECT_TYPE_NONE使用指南.md # NONE类型模块使用文档 │ └── BUILT_OBJECT_TYPE_SHARED_LIBRARY使用指南.md # SHARED LIBRARY类型模块使用文档 │ ├── CATIAV5Level.lvl # CAA V5级别文件 └── Install_config_win_b64 # Windows 64位安装配置 ``` ## 功能模块介绍 ### 1. FrmCommon框架 **CommonTool.m**(SHARED LIBRARY类型) - 提供Excel工具相关功能 - 主要函数:`TestExcelTool()` - 演示Excel工具功能的测试函数 ### 2. FrmMain框架 **CCore.m**(LOAD MODULE类型) - 项目的主入口模块 - 演示如何调用其他模块的功能 - 包含JSON解析、字符串处理和Excel工具调用的示例 **InnerTool.m**(SHARED LIBRARY类型) - 提供字符串处理相关功能 - 主要函数:`TestStrTool()` - 演示字符串处理功能的测试函数 **JsonTool.m**(NONE类型) - 提供JSON解析功能 - 包含JsonCpp库的封装,用于处理JSON数据 ## 关键技术点 ### 1. BUILT_OBJECT_TYPE配置 本项目展示了CATIA CAA中三种主要的模块构建类型: - **SHARED LIBRARY**:创建动态链接库(DLL),可被其他模块引用 - **LOAD MODULE**:创建可被CATIA运行时加载的模块 - **NONE**:不生成独立输出文件,代码直接包含到引用模块中 ### 2. 代码调用机制 项目展示了两种主要的代码调用方式: #### 同一框架内调用 - 在模块的Imakefile.mk中使用`LINK_WITH`配置项声明依赖 - 在代码中通过`#include`包含头文件后直接调用功能 #### 跨框架调用 - 在调用方框架的IdentityCard.h中使用`AddPrereqComponent`声明框架依赖 - 在模块的Imakefile.mk中使用`LINK_WITH`配置项声明对其他框架模块的依赖 - 在代码中通过`#include`包含头文件后直接调用功能 ### 3. 导出宏机制 共享库模块使用导出宏控制符号的导出和导入: - 编译时使用`__declspec(dllexport)`导出符号 - 使用时使用`__declspec(dllimport)`导入符号 例如,在CommonTool.h中定义的导出宏: ```cpp #ifdef __CommonTool #define ExportedByCommonTool __declspec(dllexport) #else #define ExportedByCommonTool __declspec(dllimport) #endif ``` ## 公共接口设计 所有公共接口头文件都放置在框架级别的`PublicInterfaces`目录中,确保其他模块和框架能够正确引用: - FrmCommon/PublicInterfaces/CommonTool.h - CommonTool模块的导出宏定义 - FrmCommon/PublicInterfaces/ExcelTool.h - Excel工具功能接口声明 - FrmMain/PublicInterfaces/InnerTool.h - InnerTool模块的导出宏定义 - FrmMain/PublicInterfaces/StrTool.h - 字符串处理功能接口声明 - FrmMain/PublicInterfaces/json/ - JSON解析相关头文件 ## 框架依赖关系 本项目中的框架依赖关系如下: - **FrmMain** 依赖于 **FrmCommon**(Protected级别依赖) - **FrmCommon** 依赖于 **System** 框架(Public级别依赖) 这种依赖关系在各框架的IdentityCard.h文件中声明: ```cpp // FrmMain/IdentityCard/IdentityCard.h AddPrereqComponent ("System", Public); AddPrereqComponent("FrmCommon", Protected); ``` ## 构建和运行 ### 构建步骤 1. 确保已安装CATIA CAA开发环境和相应的编译器 2. 设置正确的环境变量(如CATEnvPath、CATReferenceSettingPath等) 3. 执行`mkmk -j`命令构建整个项目 ### 运行方式 构建成功后,生成的模块将位于项目的`win_b64`目录下。可以通过以下方式运行: 1. 将模块注册到CATIA环境中 2. 启动CATIA,通过相应的命令或接口调用模块功能 3. 对于LOAD MODULE类型模块,可以通过CATIA的命令行或API调用 ## 示例代码 以下是项目中展示的关键调用模式的示例代码: ### 1. JSON解析示例(使用NONE类型模块) ```cpp // 解析JSON字符串 char* jsonStr = "{\"name\":\"张三\",\"age\":18}"; Json::Value value; Json::Reader reader; reader.parse(jsonStr, value); string name = value["name"].asString(); int age = value["age"].asInt(); ``` ### 2. 同一框架内模块调用示例 ```cpp // 调用同一框架内的InnerTool模块功能 #include "StrTool.h" // 直接调用函数 TestStrTool(); ``` ### 3. 跨框架模块调用示例 ```cpp // 调用FrmCommon框架中CommonTool模块功能 #include "ExcelTool.h" // 直接调用函数 TestExcelTool(); ``` ## 文档说明 项目的`doc`目录下包含详细的使用指南文档: - **BUILT_OBJECT_TYPE_NONE使用指南.md**:详细介绍了BUILT_OBJECT_TYPE=NONE类型模块的配置和使用方法 - **BUILT_OBJECT_TYPE_SHARED_LIBRARY使用指南.md**:详细介绍了BUILT_OBJECT_TYPE=SHARED LIBRARY类型模块的配置和使用方法,包括同一框架内和跨框架的调用方式 ## 开发建议 1. **模块化设计**:合理划分功能模块,提高代码复用性 2. **接口规范**:为每个模块设计清晰、稳定的公共接口 3. **依赖管理**:正确配置模块间和框架间的依赖关系 4. **头文件管理**:将公共头文件放置在框架级别的PublicInterfaces目录 5. **版本兼容性**:修改共享库时注意保持向后兼容性 6. **文档完善**:为每个模块编写详细的使用文档 ## 总结 本项目通过实际示例展示了CATIA CAA开发中的模块化设计和代码调用机制。通过学习和理解本项目中的配置和代码,可以帮助开发者更好地掌握CATIA CAA的开发方法,提高开发效率和代码质量。 ## 联系方式 如有任何问题或建议,请联系项目维护人员。 最后更新时间:2025-09-24