# NavisworksTransport 项目上下文 (QWEN.md)

## 项目概述

NavisworksTransport 是一个针对 Autodesk Navisworks Manage 2026 开发的插件。其核心目标是简化在 Navisworks 环境中进行物流路径规划、动画仿真和碰撞检测的工作流程。

该插件旨在通过自动化 Animator 动画创建、Clash Detective 碰撞测试配置与运行，并提供直观的图形化碰撞结果显示，大大提高工作效率，为用户提供一个快速验证施工物流和设备移动可行性的工具。

### 核心功能

1. **类别属性分配**：
    * 为模型项目添加预定义的物流类别属性（门、电梯、楼梯、通道、障碍物、装卸区、停车位、检查点）。
    * 支持批量处理和用户友好的界面（按钮式对话框）。
    * 通过 Navisworks COM API 确保属性正确添加。

2. **路径规划与编辑**：
    * 允许用户在3D视图中交互式地定义移动对象的路径点。
    * 管理多条路径，支持路径的创建、编辑、删除、导入、导出和历史记录。
    * 提供路径可视化（3D标记）和基础验证（如点数、长度）。

3. **动画仿真**：
    * 集成 Navisworks Timeliner API，根据规划的路径自动创建对象动画。
    * 提供动画控制界面，允许用户设置播放速度、持续时间、帧率、循环等参数。

4. **碰撞检测**：
    * 集成 Navisworks Clash API，自动配置并运行基于路径动画的动态碰撞测试。
    * 提供碰撞检测状态和摘要信息。

5. **可见性控制**：
    * 提供模型分层拆分和仅显示物流相关元素的功能，以优化视图和性能。

6. **用户界面**：
    * 通过 Navisworks 的 Ribbon 界面添加自定义按钮启动插件。
    * 提供一个停靠窗格 (DockPane) 作为主控制面板，使用 WPF 构建。
    * 控制面板包含多个 Tab 页：类别设置、路径编辑、检测动画、系统管理。

## 技术架构

### 编程语言与框架

* **语言**: C#
* **框架**: .NET Framework 4.8
* **UI框架**: Windows Forms (部分遗留) 和 Windows Presentation Foundation (WPF)
* **API**: Autodesk Navisworks API (包括 COM API, Timeliner API, Clash API)

### 项目结构

```
NavisworksTransportPlugin/
├── src/
│   ├── Core/                  # 核心业务逻辑
│   │   ├── Animation/         # 动画管理 (LogisticsAnimationManager, TimeLinerIntegrationManager)
│   │   ├── Collision/         # 碰撞检测 (ClashDetectiveIntegration)
│   │   ├── Properties/        # 属性管理 (CategoryAttributeManager)
│   │   ├── MainPlugin.cs      # 插件主入口和旧版UI
│   │   ├── PathPlanningManager.cs # 路径规划核心逻辑
│   │   ├── PathPlanningModels.cs # 路径数据模型
│   │   ├── VisibilityManager.cs # 可见性控制
│   │   └── ...                # 其他核心组件
│   ├── UI/
│   │   └── WPF/               # 新版WPF UI
│   │       ├── ViewModels/    # MVVM ViewModels
│   │       ├── Views/         # MVVM Views (UserControls)
│   │       ├── LogisticsControlPanel.xaml # 主停靠面板
│   │       └── ...
│   ├── Utils/                 # 工具类 (日志、几何、坐标转换等)
│   └── Legacy/                # 为兼容性保留的旧代码
├── Properties/
│   └── AssemblyInfo.cs
├── NavisworksTransportPlugin.csproj # 项目文件
└── ...
```

### 核心组件

1. **`MainPlugin` (`MainPlugin.cs`)**:
    * 插件的入口点，继承自 `Autodesk.Navisworks.Api.Plugins.DockPanePlugin`。
    * 负责初始化插件、创建和管理主停靠窗格。
    * 包含旧版的 Windows Forms UI 逻辑（已部分迁移到 WPF）。

2. **`LogisticsControlPanel` (`LogisticsControlPanel.xaml`, `LogisticsControlPanel.xaml.cs`)**:
    * WPF 用户控件，作为主停靠窗格的内容。
    * 使用 MVVM 模式，通过 `DataContext` 绑定到 `LogisticsControlViewModel`。

3. **`LogisticsControlViewModel` (`LogisticsControlViewModel.cs`)**:
    * WPF UI 的核心逻辑处理中心。
    * 管理 UI 状态、数据绑定、用户命令（ICommand）。
    * 与 Core 层（如 `PathPlanningManager`）交互，驱动业务逻辑。

4. **`PathPlanningManager` (`PathPlanningManager.cs`)**:
    * 路径规划的核心业务逻辑。
    * 管理路径 (`PathRoute`) 和路径点 (`PathPoint`) 的创建、编辑、验证。
    * 管理路径编辑状态（查看、创建、编辑）。
    * 处理与 Navisworks 模型的交互（选择、边界计算）。
    * 提供事件供 UI 层订阅。

5. **`CategoryAttributeManager` (`CategoryAttributeManager.cs`)**:
    * 负责通过 Navisworks COM API 为模型项添加、更新、删除自定义物流属性。
    * 定义了物流类别 (`LogisticsCategories`) 和属性 (`LogisticsProperties`)。
    * 提供了筛选模型项的方法。

6. **`LogisticsAnimationManager`, `TimeLinerIntegrationManager`**:
    * 负责与 Navisworks Timeliner 集成，根据路径数据创建动画。

7. **`ClashDetectiveIntegration`**:
    * 负责与 Navisworks Clash Detective 集成，配置和运行碰撞测试。

8. **`VisibilityManager`**:
    * 管理模型元素的可见性，实现"仅显示物流元素"等功能。

9. **`LogManager`**:
    * 统一日志管理工具。

## 开发与构建

### 系统要求

* Windows 10 或更高版本
* Navisworks Manage 2026
* .NET Framework 4.8
* Visual Studio (推荐)

### 构建过程

1. 使用 Visual Studio 打开 `NavisworksTransport.sln` 解决方案文件。
2. 确保项目引用指向正确的 Navisworks 2026 API DLL 文件（路径在 `.csproj` 文件中定义）。
3. 选择 "Debug" 或 "Release" 配置。
4. 构建项目 (`Ctrl+Shift+B`)。
5. 输出文件为 `NavisworksTransportPlugin.dll`，位于 `bin\Debug\` 或 `bin\Release\` 目录下。

### 部署与安装

1. 编译生成 `NavisworksTransportPlugin.dll`。
2. 插件会自动安装到 Navisworks 插件目录：
    `[Navisworks安装路径]\Plugins\NavisworksTransportPlugin\`
3. 重启 Navisworks 即可在 "附加模块" 选项卡中找到插件。

### 运行与调试

* 在 Visual Studio 中可以直接调试插件，方法是设置 Navisworks 可执行文件（如 `NwAddinDev.exe` 或 `Navisworks.exe`）为启动外部程序。
* 插件运行时会在 `%AppData%\Autodesk Navisworks Manage 2026\PluginsData\NavisworksTransportPlugin` 目录下生成日志文件。

## 开发约定与实践

* **MVVM 模式**: 新的 UI 开发强烈推荐使用 WPF 和 MVVM 模式，将 UI 逻辑 (`ViewModel`) 与 UI 呈现 (`View`) 分离。
* **全局异常处理**: 使用 `GlobalExceptionHandler` 类来捕获和处理未处理的异常，提供用户友好的错误提示。
* **日志记录**: 使用 `LogManager` 进行统一的日志记录，便于调试和问题追踪。
* **安全执行**: 关键操作包装在 `GlobalExceptionHandler.SafeExecute` 方法中，以提高稳定性。
* **COM API 使用**: 在需要与 Navisworks 属性系统深度交互时，谨慎使用 COM API，并注意处理缓存和刷新问题。
