## 主要改进 - 新增动态超时机制:支持timeout_seconds参数(10-300秒) - 增强异常处理:细分OTK异常类型,提供具体错误信息 - 保持向后兼容:新参数可选,不影响现有API ## 技术细节 - ShrinkwrapManager.h: 添加timeout_seconds字段 - ShellExportHandler.cpp: 实现超时参数解析和验证 - MFCCreoDll.cpp: HTTP层支持动态超时控制 - ShrinkwrapManager.cpp: 细分pfcXToolkitError等异常类型 ## 解决问题 - 复杂模型处理超时导致的504错误 - 异常信息不明确难以定位问题 - 固定30秒超时限制了大模型处理能力 ## 文档和测试 - SHRINKWRAP_OPTIMIZATION.md: 完整使用说明 - test_timeout.py/bat: 自动化和手动测试工具 - 更新CLAUDE.md项目文档 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.8 KiB
3.8 KiB
CLAUDE.md
项目架构
MFC动态链接库(DLL)项目,作为Creo CAD软件插件运行,文档在项目文件夹otk_cpp_doc目录下。
技术栈:
- MFC框架 + OTK/ProToolkit + Windows Socket + WebSocket
核心功能:
- HTTP服务器(端口12345),提供RESTful API
- 跨线程OTK调用,定时器机制处理主线程操作
- 支持跨主机部署
已实现功能模块
1. 基础服务
- HTTP服务器 - Windows Socket实现,路由注册,超时处理
- Creo状态检测 - 连接状态、模型状态实时检测
- 模型生命周期 - 打开/关闭/保存模型
2. 分析功能
- 层级分析 - 装配体结构分析,支持target_level参数按需返回指定层级
- 薄壳化分析 - 基于几何边界的特征删除建议
- 几何复杂度分析 - 多维度复杂度评估和排序
3. 操作功能
- STEP导出 - 装配体和零件导出,支持多种参数配置
- Shrinkwrap导出 - 外壳导出,智能重名处理
- 层级删除 - 按层级安全删除组件,使用SuppressFeatures
- 路径删除 - 按组件路径批量删除
核心API接口
状态查询
GET /api/status/creo # Creo连接状态
GET /api/status/model # 当前模型状态
模型操作
POST /api/model/open # 打开模型
POST /api/model/close # 关闭模型
POST /api/model/save # 保存模型
POST /api/export/model # 导出STEP
分析功能
POST /api/creo/analysis/hierarchy # 层级分析
POST /api/analysis/shell-analysis # 薄壳化分析
POST /api/analysis/geometry-complexity # 几何复杂度分析
删除操作
POST /api/creo/hierarchy/delete # 层级删除
POST /api/creo/component/delete-by-path # 路径删除
导出操作
POST /api/creo/shrinkwrap/shell # Shrinkwrap导出(支持动态超时)
关键技术特性
无锁线程通信
- 完全避免C++标准库mutex,使用原子操作和volatile指针
- MessageItem结构统一处理HTTP请求
- 50ms间隔轮询,平衡响应速度和CPU占用
层级分析优化
- target_level参数: 支持返回指定单一层级,解决前端大数据卡顿
- SOTA算法: 基于ListFeaturesByType的高效遍历
- 向后兼容: target_level=-1或未指定时返回所有层级
安全删除策略
- 使用SuppressFeatures替代DeleteFeatures避免装配体结构破坏
- 按装配体分组抑制,解决上下文匹配问题
- 保持特征引用关系完整
Shrinkwrap优化
- 动态超时控制: 支持timeout_seconds参数(10-300秒范围)
- 细分异常处理: 区分OTK工具包错误、参数错误、内存不足等
- 向后兼容: 新参数可选,不影响现有API调用
- 详细错误信息: 为不同异常类型提供具体错误描述和解决建议
构建环境
- IDE: Visual Studio 2022 (v143工具集)
- 配置: Debug|x64
- 依赖: Creo 5.0.0.0 OTK库
- 目标: Windows 7+运行环境
开发原则
- 模块化开发 - 独立测试,逐步集成
- 向后兼容 - 保持现有API稳定
- 最小修改 - 优先扩展,避免破坏性变更
- 错误处理 - 完善异常处理,确保服务稳定
- 性能优先 - 减少数据传输,提升前端体验
已解决的关键问题
- HTTP线程mutex崩溃 → 无锁MessageItem机制
- target_level数组越界 → 安全边界检查
- DeleteFeatures崩溃 → SuppressFeatures策略
- 字符编码冲突 → UTF-8 BOM标准化
- Socket超时阻塞 → 30秒超时机制
- Shrinkwrap复杂模型500错误 → 动态超时和详细异常处理
下一步计划
核心分析和操作功能已完备,建议实现WebSocket服务支持长操作和实时通信。