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

141 lines
5.0 KiB
Markdown
Raw 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
## 项目架构
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接口
### 状态查询
```http
GET /api/status/creo # Creo连接状态
GET /api/status/model # 当前模型状态
```
### 模型操作
```http
POST /api/model/open # 打开模型
POST /api/model/close # 关闭模型
POST /api/model/save # 保存模型
POST /api/export/model # 导出STEP
```
### 分析功能
```http
POST /api/creo/analysis/hierarchy # 层级分析
POST /api/analysis/shell-analysis # 薄壳化分析
POST /api/analysis/geometry-complexity # 几何复杂度分析
```
### 搜索功能
```http
POST /api/search/models # 模型名称模糊搜索
```
### 删除操作
```http
POST /api/creo/hierarchy/delete # 层级删除
POST /api/creo/component/delete-by-path # 路径删除
```
### 导出操作
```http
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服务支持长操作和实时通信。