# Clash Detective 集成使用指南

## 概述

本指南详细介绍了 NavisworksTransport 插件与 Clash Detective 的集成功能，实现了动态碰撞检测与 Clash Detective 窗口的联动。

## 功能特性

### 1. 自动碰撞检测

- **实时检测**: 动画播放过程中实时检测碰撞
- **智能回退**: 当 Clash Detective 不可用时，自动切换到简化碰撞检测
- **双重模式**: 支持精确几何碰撞检测和简化包围盒检测

### 2. Clash Detective 集成

- **自动发现**: 自动检测并连接到 Clash Detective 插件
- **测试管理**: 创建和管理动态碰撞测试
- **结果同步**: 碰撞结果同步显示到 Clash Detective 窗口

### 3. 可视化高亮

- **碰撞高亮**: 自动高亮碰撞对象（红色显示）
- **实时更新**: 动画过程中实时更新碰撞状态
- **清理机制**: 动画结束后自动清理临时高亮

## 使用方法

### 1. 启动插件

1. 打开 Navisworks Manage 2017
2. 加载包含物流路径的模型
3. 从菜单栏选择 "附加模块" > "Transport Plugin"

### 2. 设置动画

1. 在控制面板中选择要动画的物体对象
2. 选择预定义的路径或创建新路径
3. 设置动画参数（时长、速度等）

### 3. 启用碰撞检测

1. 在动画控制面板中确保"启用碰撞检测"选项已勾选
2. 可选择"高亮显示碰撞"以可视化碰撞结果
3. 点击"播放动画"开始带碰撞检测的动画

### 4. 测试集成功能

1. 点击"测试Clash Detective集成"按钮
2. 系统会自动运行完整的集成测试
3. 查看测试结果和日志信息

## 集成架构

### 核心组件

#### 1. ClashDetectiveIntegration

- **功能**: 主要的集成管理器
- **位置**: `src/ClashDetectiveIntegration.cs`
- **职责**:
  - 管理与 Clash Detective 的连接
  - 执行碰撞检测逻辑
  - 处理结果同步

#### 2. PathAnimationManager

- **功能**: 动画管理器（已升级）
- **位置**: `src/PathAnimationManager.cs`
- **职责**:
  - 集成碰撞检测到动画循环
  - 管理碰撞检测事件
  - 处理高亮显示

#### 3. ClashDetectiveIntegrationTest

- **功能**: 集成测试管理器
- **位置**: `src/ClashDetectiveIntegrationTest.cs`
- **职责**:
  - 验证集成功能
  - 性能测试
  - 错误诊断

### 数据流程

```
动画播放 -> 碰撞检测 -> 结果处理 -> 高亮显示 -> 窗口同步
    ↓           ↓           ↓           ↓           ↓
   Timer    DetectCollisions  ProcessResults  HighlightObjects  SyncWindow
```

## API 接口

### 主要方法

#### ClashDetectiveIntegration.Instance

```csharp
// 初始化集成
void Initialize()

// 检测碰撞
List<CollisionResult> DetectCollisions(ModelItem animatedObject, ModelItemCollection excludeObjects = null)

// 高亮显示碰撞
void HighlightCollisions(List<CollisionResult> results)

// 清理资源
void Cleanup()
```

#### 事件处理

```csharp
// 碰撞检测事件
event EventHandler<CollisionDetectedEventArgs> CollisionDetected;

// 事件参数
public class CollisionDetectedEventArgs : EventArgs
{
    public List<CollisionResult> Results { get; }
    public int CollisionCount { get; }
}
```

### 碰撞结果数据结构

```csharp
public class CollisionResult
{
    public Guid ClashGuid { get; set; }
    public string DisplayName { get; set; }
    public ClashResultStatus Status { get; set; }
    public string GridLocation { get; set; }
    public ModelItem Item1 { get; set; }
    public ModelItem Item2 { get; set; }
    public Point3D Center { get; set; }
    public double Distance { get; set; }
    public DateTime CreatedTime { get; set; }
}
```

## 配置选项

### 碰撞检测参数

- **容差**: 默认 0.01 米（1厘米）
- **测试类型**: 硬碰撞检测
- **检测频率**: 50ms 间隔（20 FPS）

### 高亮设置

- **碰撞颜色**: 红色
- **非碰撞对象**: 保持原色
- **清理时机**: 动画结束或用户停止

## 故障排除

### 常见问题

#### 1. Clash Detective 未找到

**症状**: 系统提示"未找到Clash Detective插件"
**解决**:

- 确保 Clash Detective 已正确安装
- 检查 Navisworks 版本兼容性
- 查看日志文件获取详细信息

#### 2. 碰撞检测不工作

**症状**: 动画播放但无碰撞检测结果
**解决**:

- 确保模型包含几何体
- 检查动画对象是否有效
- 使用测试按钮验证集成

#### 3. 高亮显示异常

**症状**: 碰撞对象未正确高亮
**解决**:

- 重启动画播放
- 检查对象选择是否正确
- 清理临时材质覆盖

### 调试方法

#### 1. 查看日志

日志文件位置: `%USERPROFILE%\Documents\NavisworksTransport\Logs\`

#### 2. 运行测试

使用"测试Clash Detective集成"按钮进行全面测试

#### 3. 检查系统状态

```csharp
// 检查COM API状态
var state = ComApiBridge.ComApiBridge.State;

// 检查插件数量
var pluginCount = state.Plugins().Count;
```

## 性能优化

### 建议设置

- **大模型**: 增加碰撞检测间隔到 100ms
- **复杂路径**: 减少路径点数量
- **多对象**: 使用批处理检测

### 内存管理

- 动画结束后自动清理资源
- 定期重置临时材质
- 避免长时间运行动画

## 更新日志

### v0.1.8 (当前版本)

- ✅ 新增 Clash Detective 集成功能
- ✅ 实现实时碰撞检测
- ✅ 添加自动化测试框架
- ✅ 优化性能和错误处理

### 计划功能

- 🔄 支持自定义碰撞规则
- 🔄 批量路径碰撞分析
- 🔄 碰撞报告导出
- 🔄 更多可视化选项

## 技术支持

如有问题请查看：

1. 日志文件: `%USERPROFILE%\Documents\NavisworksTransport\Logs\`
2. 测试结果: 使用集成测试按钮
3. 开发文档: `doc/design/` 目录

---

*本文档随插件版本更新，请查看最新版本获取准确信息。*
