TellmePdmsPluging/CLAUDE.md
root 3082148d7e 实现PDMS模型状态API并移除硬编码数据
## 主要改进
- 实现 /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>
2025-08-01 10:36:02 +08:00

107 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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插件开发规范和线程安全要求
## 项目工作流程
- 所有的编译和测试由用户来执行
## 开发准则
- 项目不允许硬编码和模拟数据