NavisworksTransport/QWEN.md

7.1 KiB
Raw Blame History

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.exeNavisworks.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并注意处理缓存和刷新问题。