7.3 KiB
7.3 KiB
NavisworksTransport 项目上下文 (QWEN.md)
项目概述
NavisworksTransport 是一个针对 Autodesk Navisworks Manage 2026 开发的插件。其核心目标是简化在 Navisworks 环境中进行物流路径规划、动画仿真和碰撞检测的工作流程。
该插件旨在通过自动化 Animator 动画创建、Clash Detective 碰撞测试配置与运行,并提供直观的图形化碰撞结果显示,大大提高工作效率,为用户提供一个快速验证施工物流和设备移动可行性的工具。
核心功能
-
类别属性分配:
- 为模型项目添加预定义的物流类别属性(门、电梯、楼梯、通道、障碍物、装卸区、停车位、检查点)。
- 支持批量处理和用户友好的界面(按钮式对话框)。
- 通过 Navisworks COM API 确保属性正确添加。
-
路径规划与编辑:
- 允许用户在3D视图中交互式地定义移动对象的路径点。
- 管理多条路径,支持路径的创建、编辑、删除、导入、导出和历史记录。
- 提供路径可视化(3D标记)和基础验证(如点数、长度)。
-
动画仿真:
- 集成 Navisworks Timeliner API,根据规划的路径自动创建对象动画。
- 提供动画控制界面,允许用户设置播放速度、持续时间、帧率、循环等参数。
-
碰撞检测:
- 集成 Navisworks Clash API,自动配置并运行基于路径动画的动态碰撞测试。
- 提供碰撞检测状态和摘要信息。
-
可见性控制:
- 提供模型分层拆分和仅显示物流相关元素的功能,以优化视图和性能。
-
用户界面:
- 通过 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 # 项目文件
└── ...
核心组件
-
MainPlugin(MainPlugin.cs):- 插件的入口点,继承自
Autodesk.Navisworks.Api.Plugins.DockPanePlugin。 - 负责初始化插件、创建和管理主停靠窗格。
- 包含旧版的 Windows Forms UI 逻辑(已部分迁移到 WPF)。
- 插件的入口点,继承自
-
LogisticsControlPanel(LogisticsControlPanel.xaml,LogisticsControlPanel.xaml.cs):- WPF 用户控件,作为主停靠窗格的内容。
- 使用 MVVM 模式,通过
DataContext绑定到LogisticsControlViewModel。
-
LogisticsControlViewModel(LogisticsControlViewModel.cs):- WPF UI 的核心逻辑处理中心。
- 管理 UI 状态、数据绑定、用户命令(ICommand)。
- 与 Core 层(如
PathPlanningManager)交互,驱动业务逻辑。
-
PathPlanningManager(PathPlanningManager.cs):- 路径规划的核心业务逻辑。
- 管理路径 (
PathRoute) 和路径点 (PathPoint) 的创建、编辑、验证。 - 管理路径编辑状态(查看、创建、编辑)。
- 处理与 Navisworks 模型的交互(选择、边界计算)。
- 提供事件供 UI 层订阅。
-
CategoryAttributeManager(CategoryAttributeManager.cs):- 负责通过 Navisworks COM API 为模型项添加、更新、删除自定义物流属性。
- 定义了物流类别 (
LogisticsCategories) 和属性 (LogisticsProperties)。 - 提供了筛选模型项的方法。
-
LogisticsAnimationManager,TimeLinerIntegrationManager:- 负责与 Navisworks Timeliner 集成,根据路径数据创建动画。
-
ClashDetectiveIntegration:- 负责与 Navisworks Clash Detective 集成,配置和运行碰撞测试。
-
VisibilityManager:- 管理模型元素的可见性,实现"仅显示物流元素"等功能。
-
LogManager:- 统一日志管理工具。
开发与构建
系统要求
- Windows 10 或更高版本
- Navisworks Manage 2026
- .NET Framework 4.8
- Visual Studio (推荐)
构建过程
- 使用 Visual Studio 打开
NavisworksTransport.sln解决方案文件。 - 确保项目引用指向正确的 Navisworks 2026 API DLL 文件(路径在
.csproj文件中定义)。 - 选择 "Debug" 或 "Release" 配置。
- 构建项目 (
Ctrl+Shift+B)。 - 输出文件为
NavisworksTransportPlugin.dll,位于bin\Debug\或bin\Release\目录下。
部署与安装
- 编译生成
NavisworksTransportPlugin.dll。 - 插件会自动安装到 Navisworks 插件目录:
[Navisworks安装路径]\Plugins\NavisworksTransportPlugin\ - 重启 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,并注意处理缓存和刷新问题。