NavisworksTransport/QWEN.md

151 lines
7.1 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.

# 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/
│ │ ├── Forms/ # 旧版WinForms UI (逐渐被WPF替代)
│ │ └── 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并注意处理缓存和刷新问题。