# OPRX **Repository Path**: uesoft/oprx ## Basic Information - **Project Name**: OPRX - **Description**: OPRX是三维数据CAD/CAE系统库ObjectPRX的一个分叉,专门用于从MFC转换为wxWidgets的跨平台代码实现。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: wxWidgets - **Homepage**: http://www.uesoft.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-14 - **Last Updated**: 2026-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ObjectPRX [![License](https://img.shields.io/badge/license-Proprietary-blue.svg)](LICENSE) [![Platform](https://img.shields.io/badge/platform-Windows-lightgrey.svg)]() [![VC++](https://img.shields.io/badge/VC++-2005~2022-green.svg)]() ## 📖 项目简介 ObjectPRX 是优易集团(UESoft)面向 **AutoPDMS** 和 **UECAD** 平台推出的专业 C++ 二次开发库,提供完整的运行时扩展(Runtime eXtension)编程环境。作为面向对象的 C++ 开发框架,ObjectPRX 实现了对主流 CAD 平台(AutoCAD®、ZWCAD®、GstarCAD®、CAXA®)ARX 程序的源码级兼容,极大降低了跨平台移植成本。 ### 核心优势 - **ARX 源码级兼容** - 支持将 AutoCAD/ZWCAD/GstarCAD/CAXA 的 ARX 程序无缝迁移至 AutoPDMS - **完整的 C++ API** - 提供面向对象的编程接口,涵盖数据库访问、图形系统、UI 创建等核心功能 - **多平台支持** - 兼容 AutoPDMS、UECAD,未来可能支持 UKP3D 平台 - **丰富的构造块** - 内置大量可复用的 C++ 库组件,加速应用程序开发 - **MFC 集成** - 完美支持 MFC 框架,方便创建专业的用户界面 ## 🏗️ 软件架构 ### 平台关系 ``` ┌─────────────────────────────────────────────────────────┐ │ AutoPDMS 平台 │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ ObjectPRX API │ │ ObjectURX API │ │ │ └─────────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────┐ │ UECAD 平台 │ │ ┌─────────────────┐ │ │ │ ObjectURX API │ │ │ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ### 技术架构 ObjectPRX 采用分层架构设计,主要包含以下层次: #### 1. 核心基础层 - **APGlobalShare** - 全局共享组件 - **APModuleShare** - 模块共享组件 - **APPersistentDomain** - 持久化域管理 - **APUIShare** - UI 共享组件库 #### 2. 业务领域层 - **管道系统** - APPipeDomain、APPipeCommand、APPipeTransaction - **设备管理** - APEquipDomain、APEquipCommand、APEquipTransaction - **钢结构** - APSteelCommand、APSteelTransaction - **暖通空调** - APHVACDomain、APHvacCommand、APHvacTransaction - **电缆桥架** - APCableTrayCommand、APCableTrayTransaction - **CAE 分析** - APCAEDomain、CalcFlow、StaticCalcFlow #### 3. 应用接口层 - **图形系统** - APGraphicGEO、APGraphicRVM、APGraphicSnap - **数据导入导出** - APImportCommand、APExportFileCommand - **目录管理** - APCatalogDomain、APCatalogCommand - **设计模板** - APDesTemplatCommand、APGTForDesTemplate ### 主要功能 ObjectPRX 为开发者提供以下核心能力: ✅ **数据库访问** - 直接操作 AutoPDMS 数据库,读写图形实体和属性数据 ✅ **编辑器交互** - 与 AutoPDMS 编辑器深度集成,响应用户操作事件 ✅ **MFC 界面开发** - 利用 MFC 框架创建专业的 Windows 用户界面 ✅ **多文档支持** - 完整支持 MDI 多文档界面环境 ✅ **自定义类扩展** - 创建派生类扩展 AutoPDMS 内置对象功能 ✅ **复杂应用构建** - 开发大型工程应用程序和行业解决方案 ✅ **跨环境互操作** - 与 Visual LISP 等其他编程接口协同工作 ## 💻 开发环境要求 ### 操作系统 - Windows XP Professional (SP1+) - Windows 2000 (SP4) - Windows Server 2003 (SP1) - Windows 7 / 8 / 10 / 11 ### 开发工具 - **Microsoft Visual C++ 2005** (基础版本) - 支持升级至 VS2008 / VS2010 / VS2012 / VS2015 / VS2017 / VS2022 - 支持 32 位和 64 位编译 ### 硬件配置 - **处理器** - Pentium IV 或更高 - **内存** - 512 MB RAM 或更多(推荐 2GB+) - **显示** - 1024×768 真彩色显示器(最低要求) - **硬盘** - 预留至少 5GB 空间用于开发环境 ### 必需软件 - **ObjectPRX SDK** - 核心开发包 - **CAD 平台**(至少一种): - AutoCAD (2007-2020) - ZWCAD (2019-2020) - GstarCAD (2019-2020) - CAXA - UECAD - AutoPDMS - UKP3D(计划支持) ### 第三方依赖库 项目集成了以下第三方库(位于 `Share/` 目录): | 库名称 | 版本 | 用途 | |--------|------|------| | boost | - | C++ 标准库扩展 | | cppunit | 1.11.0 | 单元测试框架 | | cryptopp | 5.6.3 | 加密算法库 | | curl | - | HTTP/网络请求 | | jsoncpp | 0.5.0 | JSON 解析 | | libxl | 4.5.1 | Excel 文件读写 | | miniblink | - | 浏览器内核 | | sqlite | - | 嵌入式数据库 | | uesdk | - | UESoft 核心 SDK | ## 📦 快速开始 ### 项目结构 ``` ObjectPRX/ ├── AutoBuildPRX/ # 自动化构建脚本 │ ├── *ProjectUpdateToVS*.js # VS 版本升级脚本 │ ├── *自动编译*.bat # 自动编译批处理 │ └── CreateAutoBuildCode*.js # 构建代码生成器 ├── Share/ # 第三方库和依赖 │ ├── boost/ │ ├── jsoncpp-src-0.5.0/ │ ├── uesdk/ │ └── ... ├── inc/ # 头文件目录 (912 个头文件) ├── src/ # 源代码目录 (1000+ 源文件) ├── sln/ # 项目解决方案 (322 个子项目) ├── doc/ # 文档目录 └── Project.txt # 项目文件列表 (273 个项目) ``` ### 编译步骤 #### 方法一:使用自动编译脚本(推荐) 1. **选择目标平台和配置** ```bash # 32 位 Debug 版本(VS2010, AutoCAD 2013-2014) cd AutoBuildPRX 32bit自动编译Debug(vc10.0,cad2013-2014,arx2013).bat # 64 位 Release 版本(VS2010, ZWCAD 2019-2020) 64bit自动编译Release(vc10.0,zwcad2019-2020,zrx2019-2020).bat ``` 2. **编译所有版本** ```bash # Debug 所有版本 Debug下自动编译全部版本.bat # Release 所有版本 Release下自动编译全部版本.bat ``` #### 方法二:升级并手动编译 1. **升级项目文件到目标 VS 版本** ```bash # 升级到 VS2010 cd AutoBuildPRX 32BitVS2005ProjectUpdateToVS2010自动升级.bat 64BitVS2005ProjectUpdateToVS2010自动升级.bat # 升级到 VS2022 64BitVS2005ProjectUpdateToVS2022自动升级.bat ``` 2. **在 Visual Studio 中打开解决方案** - 打开 `sln/` 目录下的相应项目文件 - 设置编译配置(Debug/Release,Win32/x64) - 编译解决方案 ### 开发示例 #### 创建一个简单的 PRX 应用 ```cpp #include "rxregsvc.h" #include "aced.h" // 初始化函数 extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) { switch (msg) { case AcRx::kInitAppMsg: // 应用初始化 acrxDynamicLinker->unlockApplication(pkt); acrxDynamicLinker->registerAppMDIAware(pkt); acedRegCmds->addCommand(_T("MYAPP"), _T("MYCMD"), _T("MYCMD"), ACRX_CMD_MODAL, myCommand); break; case AcRx::kUnloadAppMsg: // 应用卸载 acedRegCmds->removeGroup(_T("MYAPP")); break; } return AcRx::kRetOK; } // 命令实现 void myCommand() { acutPrintf(_T("\nHello ObjectPRX!")); } ``` ### 配置项目 #### 包含目录设置 ``` $(ProjectDir)..\..\inc $(ProjectDir)..\..\Share\boost $(ProjectDir)..\..\Share\uesdk\include ``` #### 库目录设置 ``` $(ProjectDir)..\..\lib\$(Configuration) $(ProjectDir)..\..\Share\uesdk\lib ``` #### 预处理器定义 ``` WIN32 _WINDOWS _USRDLL _AFXDLL _AFXEXT _ACRX_EXPORT ``` ## 🔧 常见问题 ### 问题 1:试用版限制 **现象**:提示"使用次数或使用天数已超过试用版软件的限制" **解决方案**: 1. 打开注册表编辑器(regedit) 2. 导航到路径:`HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\UESoft Shared\UsufructCheck` 3. 修改以下键值: - `UCUseCount` → 设置为 `1` - `UCUseFirstTime` → 设置为今日日期 ### 问题 2:循环编译依赖问题 **现象**:AutoPDMS 项目出现循环依赖编译错误 **解决方案**: 1. 打开 `PipeOpenGL.cpp` 2. 临时注释以下代码: ```cpp // ReadInpFile::GetInstance().ReadInpFileToList(filename, &minpPipeUnitList); ``` 3. 在链接器设置中移除:`APInpFileVSStruct10d.lib` 4. 编译完成后恢复注释和库引用 ### 问题 3:VS 版本升级后编译失败 **解决方案**: - 确保使用项目提供的自动升级脚本 - 检查目标平台工具集是否正确设置 - 清理解决方案后重新编译 ## 📚 文档资源 - **项目文档** - 查看 `doc/` 目录下的文档文件 - **常见问题** - 参考 `doc/常见问题.txt` - **构建文档** - 查看 `AutoBuildPRX/升级过程中的文档说明/` ## 🗂️ 主要模块说明 ### 核心模块(322 个子项目) | 模块分类 | 代表项目 | 说明 | |---------|---------|------| | 管道系统 | APPipeCommand, APPipeDomain | 管道设计、布置、计算 | | 设备管理 | APEquipCommand, APEquipDomain | 设备建模、定位、属性管理 | | 钢结构 | APSteelCommand, APSteelTransaction | 钢结构设计与分析 | | 暖通空调 | APHVACDomain, APHvacCommand | HVAC 系统设计 | | CAE 分析 | APCAECommand, CalcFlow | 工程分析与计算 | | 导入导出 | APImportCommand, APExportFileCommand | 多格式数据交换 | | UI 框架 | APUIShare, CJLibrary | 用户界面组件库 | ## ⚙️ 支持的编译配置 ### Visual Studio 版本支持 - VS 2005 (vc8.0) - 基础版本 - VS 2008 (vc9.0) - VS 2010 (vc10.0) - VS 2012 (vc11.0) - VS 2015 (vc14.0) - VS 2017 (vc14.1) - VS 2022 (vc14.3) ### CAD 平台兼容性 | CAD 平台 | 支持版本 | ARX/ZRX/GRX 版本 | VS 版本 | |----------|----------|------------------|----------| | AutoCAD | 2007-2009 | ARX 2007 | VC8.0 | | AutoCAD | 2010-2012 | ARX 2010 | VC9.0 | | AutoCAD | 2013-2014 | ARX 2013 | VC10.0 | | AutoCAD | 2015-2016 | ARX 2015 | VC11.0 | | AutoCAD | 2019-2020 | ARX 2019 | VC14.1 | | ZWCAD | 2019-2020 | ZRX 2019/2020 | VC10.0 | | GstarCAD | 2019-2020 | GRX 2019 | VC10.0 | ## 📋 项目统计 - **子项目数量**:273 个 vcproj 文件 - **解决方案模块**:322 个子目录 - **头文件数量**:912 个 - **源文件数量**:1000+ 个 - **代码规模**:预估 50 万行以上 ## 📄 许可证 本项目为 UESoft(优易集团)专有软件,版权所有。 详细许可协议请参阅 `AutoBuildPRX/UESoftMYRMAgreement.txt` ## 📞 技术支持 - **官方网站**:[UESoft 官网](http://www.uesoft.com.cn) - **技术文档**:参考项目 `doc/` 目录 - **问题反馈**:联系 UESoft 技术支持团队 --- **注意**:本项目需要合法的 ObjectPRX SDK 授权才能进行开发和部署。 *最后更新:2024-11*