## 主要改进 - 实现 /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>
107 lines
3.3 KiB
Markdown
107 lines
3.3 KiB
Markdown
# 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
|
||
```
|
||
|
||
## 开发命令
|
||
|
||
### 构建项目
|
||
```bash
|
||
# 使用MSBuild构建解决方案
|
||
msbuild TellmePdmsPluging.sln /p:Configuration=Debug /p:Platform="Any CPU"
|
||
|
||
# 或使用Visual Studio命令行工具
|
||
devenv TellmePdmsPluging.sln /Build Debug
|
||
```
|
||
|
||
### 发布版本
|
||
```bash
|
||
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插件开发规范和线程安全要求
|
||
|
||
## 项目工作流程
|
||
|
||
- 所有的编译和测试由用户来执行
|
||
|
||
## 开发准则
|
||
|
||
- 项目不允许硬编码和模拟数据 |