新增ModelSearchEngine和ModelSearchHandler模块,提供零件和装配体名称搜索功能: • 支持prefix、contains、fuzzy三种匹配模式 • 从根装配体构建完整模型树层级路径 • 智能去重算法自动去除重复结果,保留最长路径 • 递归搜索支持多层级装配体遍历 • 向后兼容,不影响现有功能 解决搜索重复结果和缺少层级路径问题,提升用户体验。 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
141 lines
5.0 KiB
Markdown
141 lines
5.0 KiB
Markdown
# 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服务支持长操作和实时通信。 |