## 主要改进 - 实现 /api/status/model 接口,返回真实PDMS模型状态信息 - 使用MDB.CurrentMDB、Project.CurrentProject等AVEVA API获取真实数据 - 移除硬编码的CurrentSession、PositionInfo、PdmsSpecific等复杂结构 - 简化数据模型,只保留核心的真实数据字段 ## 技术实现 - 通过DbSession获取真实的用户名、会话开始时间和持续时间 - 通过WorldMembers()获取真实的模型元素统计 - 修复DateTime类型的null合并运算符编译错误 - 清理不使用的方法和类定义 ## API返回数据 现在返回的数据主要包含真实的PDMS信息: - ModelLoaded: MDB连接状态检查 - ProjectName: 真实的设计数据库名称 - MdsName: 真实的MDB名称 - UserName: 真实的数据库会话用户 - StartTime: 真实的会话创建时间 - TotalElements: 真实的模型元素数量统计 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.3 KiB
3.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
这是一个专为AVEVA PDMS 12.1 SP4设计的远程控制插件项目,目标是实现单前端客户端对单个PDMS会话的远程操控功能。
技术约束
- 目标框架: .NET Framework 3.5 (由于PDMS 12.1 SP4的兼容性要求)
- 平台架构: x86 (32位) - PDMS不支持64位DLL加载
- 编译配置: Debug/Release 均为AnyCPU,但需注意实际运行环境限制
项目架构
核心组件设计
根据README.md中的技术方案,系统采用以下架构:
- HttpListener服务器: 基于System.Net.HttpListener的自托管HTTP服务
- 线程安全队列: SafeQueue实现HTTP线程到PDMS主线程的命令传递
- 命令模式: ICommand接口抽象化PDMS API调用
- 插件接口: IAddin实现PDMS插件规范
通信模型
前端 → HTTP请求 → HttpListener → SafeQueue → PDMS主线程 → PDMS API
开发命令
构建项目
# 使用MSBuild构建解决方案
msbuild TellmePdmsPluging.sln /p:Configuration=Debug /p:Platform="Any CPU"
# 或使用Visual Studio命令行工具
devenv TellmePdmsPluging.sln /Build Debug
发布版本
msbuild TellmePdmsPluging.sln /p:Configuration=Release /p:Platform="Any CPU"
关键实现要点
线程安全要求
- 绝对禁止在HttpListener线程中直接调用PDMS API
- 所有PDMS API调用必须在主线程执行
- 使用SafeQueue进行线程间通信
内存管理
- 由于.NET 3.5的内存限制,需要考虑Large Address Aware (LAA)配置
- 大数据操作时需要实现分页和流式传输
- 定期执行GC.Collect()以释放内存
API设计原则
根据技术方案,主要API端点包括:
/health- 健康检查/api/status/model- 获取PDMS模型状态信息/command- 即时命令执行/task- 长任务管理/stats- 统计数据获取/export/ifc- 模型导出
已实现的功能
- 模型状态查询API (
/api/status/model):- 使用真实的PDMS API获取项目信息、会话状态和模型统计
- 通过MDB.CurrentMDB、Project.CurrentProject等真实API获取数据
- 移除硬编码数据,确保返回真实的PDMS状态
部署要求
PDMS集成
- 编译输出的DLL需要复制到PDMS安装目录
- 需要修改
DesignAddin.xml配置文件注册插件 - 确保使用x86架构编译以兼容PDMS要求
网络配置
- HTTP服务默认监听localhost:9001端口
- 仅允许本地连接,外网访问需通过反向代理
性能优化指导
大模型处理
- 使用分区查询减少内存占用
- 实现数据流式传输避免内存峰值
- 支持后台任务执行和进度查询
资源释放
- 及时释放PDMS对象引用
- 监控内存使用情况,超过阈值时发出重启警告
开发注意事项
- 严格遵循.NET 3.5 API限制,避免使用高版本特性
- 所有异步操作使用.NET 3.5兼容的方式实现
- 优先使用BCL内置组件,减少第三方依赖
- 遵循PDMS插件开发规范和线程安全要求
项目工作流程
- 所有的编译和测试由用户来执行
开发准则
- 项目不允许硬编码和模拟数据