CreoOtkPluging/CLAUDE.md
sladro b874b17534 实现模型搜索功能 - 支持名称模糊匹配和完整层级路径显示
新增ModelSearchEngine和ModelSearchHandler模块,提供零件和装配体名称搜索功能:
• 支持prefix、contains、fuzzy三种匹配模式
• 从根装配体构建完整模型树层级路径
• 智能去重算法自动去除重复结果,保留最长路径
• 递归搜索支持多层级装配体遍历
• 向后兼容,不影响现有功能

解决搜索重复结果和缺少层级路径问题,提升用户体验。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 18:36:12 +08:00

5.0 KiB
Raw Blame History

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
  • 路径删除 - 按组件路径批量删除

4. 搜索功能

  • 模型搜索 - 零件和装配体名称模糊匹配,支持三种匹配模式
  • 层级路径显示 - 返回完整的模型树层级路径
  • 去重算法 - 自动去除重复结果,保留最完整路径

核心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/search/models                     # 模型名称模糊搜索

删除操作

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调用
  • 详细错误信息: 为不同异常类型提供具体错误描述和解决建议

几何复杂度分析优化

  • 装配体去重机制: 使用std::set跟踪已处理零件避免重复分析相同零件
  • 基于文件名去重: 使用模型文件名作为唯一标识符进行重复检测
  • 递归装配体支持: 正确处理多层级装配体中的重复零件

模型搜索优化

  • 多种匹配模式: 支持prefix、contains、fuzzy三种匹配算法
  • 完整层级路径: 从根装配体构建完整的模型树路径显示
  • 智能去重算法: 自动去除重复结果,保留最长层级路径
  • 递归搜索: 支持从根装配体开始的完整层级遍历
  • 向后兼容: 不影响现有搜索功能,支持多种搜索范围

构建环境

  • IDE: Visual Studio 2022 (v143工具集)
  • 配置: Debug|x64
  • 依赖: Creo 5.0.0.0 OTK库
  • 目标: Windows 7+运行环境

开发原则

  1. 模块化开发 - 独立测试,逐步集成
  2. 向后兼容 - 保持现有API稳定
  3. 最小修改 - 优先扩展,避免破坏性变更
  4. 错误处理 - 完善异常处理,确保服务稳定
  5. 性能优先 - 减少数据传输,提升前端体验

已解决的关键问题

  • HTTP线程mutex崩溃 → 无锁MessageItem机制
  • target_level数组越界 → 安全边界检查
  • DeleteFeatures崩溃 → SuppressFeatures策略
  • 字符编码冲突 → UTF-8 BOM标准化
  • Socket超时阻塞 → 30秒超时机制
  • Shrinkwrap复杂模型500错误 → 动态超时和详细异常处理
  • 几何复杂度分析重复零件 → 装配体遍历去重机制
  • 模型搜索重复结果问题 → 智能去重算法保留最完整路径
  • 搜索结果缺少层级路径 → 从根装配体构建完整模型树路径

下一步计划

核心分析和操作功能已完备建议实现WebSocket服务支持长操作和实时通信。