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

3.3 KiB
Raw Permalink Blame History

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插件开发规范和线程安全要求

项目工作流程

  • 所有的编译和测试由用户来执行

开发准则

  • 项目不允许硬编码和模拟数据