16 KiB
16 KiB
NavisworksTransport 正式设计方案(Design Plan)
版本:v1.0
作者:Agent Mode
日期:2025-08-29
本方案依据以下输入编制:
- 需求文档:doc/requirement/user_requiement.md(以 Navisworks 2017/Windows 7 为基线)
- 项目上下文与结构参考:QWEN.md(包含 Navisworks 2026 的说明,仅作补充参考)
- 源代码:src 目录(核心模块:Core、PathPlanning、UI/WPF、Utils 等)
重要说明:如需求文档与 QWEN.md 在版本目标存在差异(2017 vs 2026),本方案默认以需求文档为准(Navisworks 2017)。若需面向 Navisworks 2026 的兼容性与增强功能,请在部署与验证环节中选配“2026 兼容模式”。
一、总体设计
1.1 背景与目标
- 背景:在 Autodesk Navisworks 环境中进行物流路径规划、动画仿真与碰撞检查,需高效的交互式工具,支持路径点编辑、自动路径规划(复杂场景)、导航输出与结构化结果文件(XML/JSON/CSV)。
- 目标:
- 快速完成通道选择与路径点规划(起点/路径点/终点),支持多路径管理与编辑;
- 支持模型切分与层级可见性管理,聚焦物流相关构件;
- 支持物流“类别属性”批量设置、识别与筛选;
- 集成动画和碰撞检测能力,支持结果导出和路径分析;
- 支持结构化结果文件输出,并满足 DELMIA 导入(按需求文档约束)。
1.2 需求综述(与需求文档对应)
- 通道选择及路径点规划:模型切分、通道选择、路径点规划、多路径管理、编辑保存与导入、路径点自动贴合;
- 物流“类别”设置:新增物流属性类别、设置可通行性/速度/宽度/优先级等属性,筛选与清除;
- 层级创建与显示:自动隐藏/淡化非关键层,物流元素筛选,路径时间标签;
- 交互式导航:交互式导航控件、结果输出(视频或图片)、输出格式(XML/JSON/CSV,可导入 DELMIA);
- 碰撞检查:动画生成与播放、碰撞检查/记录导出、路径规划分析与最优路径建议。
1.3 设计原则
- 实用优先:在 Navisworks 2017 环境中保证稳定运行与较好性能;
- 解耦分层:UI(WPF+MVVM)与核心逻辑(Core、PathPlanning)分离,便于后续扩展;
- 向后兼容:在自动规划/碰撞集成等关键能力上提供降级路径(如 BoundingBox 模式回退);
- 可观察性:统一日志 LogManager,异常采用 GlobalExceptionHandler;
- 数据可移植:路径/结果提供 XML/JSON/CSV 序列化能力(JSON 加载简化,建议 XML 为主)。
1.4 核心用例流程概览
- 路径编辑(手动):
- 用户通道选择(手动/属性筛选/自动查找可通行),计算通道边界;
- 进入编辑模式,3D 点击添加“起点/路径点/终点”,路线渲染与校验;
- 保存/导入/导出路径文件,维护历史记录;
- 自动路径规划:
- 依据通道与模型生成网格(优先 ChannelBased 2.5D,失败回退 BoundingBox);
- A* 求解路径并高度修正(贴合通道表面),渲染与事件广播;
- 动画与碰撞:
- 基于路径生成 TimeLiner 动画;
- 动画过程缓存碰撞,结束后统一生成 Clash 测试与报告,高亮冲突对象;
- 导航输出:
- 导航控件交互产生路径;
- 输出视频/图片与结构化结果(XML/JSON/CSV),满足 DELMIA 导入约束。
二、系统架构
2.1 分层架构与模块
- UI 层(WPF + MVVM,少量 WinForms 遗留):
- Views: UI/WPF/Views/*(含 PathEditingView、AnimationControlView 等)
- ViewModels: UI/WPF/ViewModels/*(LogisticsControlViewModel、PathEditingViewModel 等)
- 主控面板:UI/WPF/LogisticsControlPanel.xaml
- Core 业务层:
- PathPlanningManager:路径规划主控(事件驱动、状态机、路径可视化)
- CategoryAttributeManager:物流属性管理(COM API + .NET API)
- VisibilityManager:可见性与层级控制
- Animation:TimeLinerIntegrationManager、PathAnimationManager(动画控制)
- Collision:ClashDetectiveIntegration(碰撞集成,动画期缓存 + 结束时统一测试)
- ModelSplitterManager:模型切分(含简化实现)
- PathPlanning 算法层:
- GridMapGenerator:网格生成(ChannelBased 2.5D/BoundingBox),车辆膨胀优化
- AutoPathFinder:A* 路径搜索、路径优化/插值、高度贴合
- ChannelBasedGridBuilder、VerticalScanProcessor、TriangleSpatialHash 等支撑
- Utils:日志、坐标/单位转换、Navisworks API 辅助
2.2 系统架构图(截图占位)
- [截图占位] 系统架构图
- 要求:体现 UI(WPF+MVVM)/Core/PathPlanning/Utils 分层,以及 TimeLiner、Clash 的集成位置与事件流(PathPlanningManager 事件:StatusChanged、EditStateChanged、RouteGenerated 等)。
2.3 模块关系与数据流
- UI 通过 ViewModel 调用 PathPlanningManager 与其他 Core 服务;
- PathPlanningManager 根据通道选择与编辑状态,驱动网格生成与 A* 求解,并渲染路径标记;
- Animation/Collision 订阅路径与动画状态,按批次创建 TimeLiner 任务与 Clash 测试;
- CategoryAttributeManager 负责属性新增/更新/移除与筛选;
- VisibilityManager 提供“仅显示物流元素/隔离显示”等能力。
2.4 技术路线与选型
- 语言/框架:C#,.NET Framework 4.8;
- UI:WPF + MVVM(WinForms 仅用于部分对话框/遗留界面);
- 外部 API:Autodesk Navisworks API(2017 目标),COM API(属性写入)、TimeLiner API、Clash API;
- 路径算法:RoyT.AStar(格网 A*),自研 2.5D 高度约束与车辆膨胀优化;
- 序列化:XML(主)、JSON(简化加载)/CSV(结果);
- 日志/异常:LogManager、GlobalExceptionHandler。
2.5 关键数据模型(摘自源码)
- PathPoint、PathRoute:路径点/路径集合,支持类型(Start/End/WayPoint)、长度/时间统计、XML/JSON 序列化;
- ChannelBounds:通道边界与 2D 投影;
- PathHistoryEntry/Manager:路径历史;
- 事件模型:PathPlanningStatusChangedEventArgs、PathEditStateChangedEventArgs、RouteGeneratedEventArgs 等。
三、功能设计方案(逐模块)
3.1 模型切分
- 目标:对大型模型按楼层/属性进行切分,提升性能与操作体验;
- UI:ModelSplitterDialog(WinForms);
- Core:ModelSplitterManager、SimplifiedModelSplitterManager;
- 设计:
- 基于模型层级与属性枚举进行分层导出;
- 提供环境检查与测试导出入口;
- 与可见性/筛选配合以限定工作区域。
3.2 通道选择
- 能力:
- 手动选择:基于 Navisworks 选择;
- 属性筛选:通过 CategoryAttributeManager.FilterByLogisticsType(FilterTraversableItems);
- 自动选择:Search API 扫描“可通行”物流元素;
- PathPlanningManager.SelectChannels:计算组合边界 CombinedChannelBounds 并事件广播。
3.3 路径点规划(手动 + 自动)
- 手动规划:
- 工具:PathClickToolPlugin(精确拾取),PathPointRenderPlugin(3D 渲染);
- 流程:切换到 Creating/Editing 状态 -> 添加点 -> 渲染 -> 校验;
- 路径点自动贴合:高度修正在 AutoPathFinder.ApplyPreciseHeightCorrection 中贴合通道表面(有通道数据时);
- 自动规划(复杂环境):
- 网格生成:GridMapGenerator.GenerateFromBIM
- First 尝试 ChannelBased2_5D(通道优先、垂直扫描高度区间、车辆高度校验);
- Fallback 到 BoundingBox 模式(保持向后兼容);
- A*:AutoPathFinder.FindPath/ExecuteAStarAlgorithm
- 路径优化(去冗余点、直线可达校验)、2.5D 高度插值与起终点原位修正;
- 网格生成:GridMapGenerator.GenerateFromBIM
3.4 路径管理、编辑、保存与导入
- 编辑:创建/编辑/取消/完成编辑(FinishEditing 自动将末点设为终点并触发渲染与事件);
- 文件:PathFileSerializer(XML 主,JSON 简化,不建议作为主格式),支持多路径容器;
- 历史:PathHistoryManager(Created/Edited/ManualSave 等),提供查看历史 UI;
- 导入:DetectFileFormat -> LoadFromXml/LoadFromJson(JSON 加载简化,优先 XML)。
3.5 物流“类别”设置
- 类别:为模型添加“物流属性”类别(类型、可通行、优先级、车辆尺寸、速度限制、宽度限制等);
- 批量处理:Add/Update/Remove,使用 COM API 正确索引方式避免覆盖错误;
- 识别筛选:FilterTraversableItems/FilterByLogisticsType/FilterPassableAreas,供通道选择与可见性使用。
3.6 层级创建与显示
- 隐藏/淡化非关键层:VisibilityManager.HideNonLogisticsItems/ShowAllItems/IsolateSpecificItems;
- 物流元素筛选:ShowLogisticsItemsOnly;
- 路径时间标签:在 PathPlanningManager.CalculateEstimatedTime(当前简单估算,后续可接入速度限制)。
3.7 交互式导航
- 交互控件:UI/WPF 侧的主面板与路径/起终点选择;
- 导出:支持视频/图片占位(由用户录屏或快照)、结构化文件(XML/JSON/CSV);
- DELMIA 导入:以 XML/CSV 为主,JSON 仅作参考(需要与 DELMIA 侧字段约定)。
3.8 动画生成与播放
- TimeLinerIntegrationManager:创建运输任务(将路径关联到对象)、更新进度与状态文本、清理任务;
- PathAnimationManager:具体的路径关键帧/移动输出(见 Core/Animation);
- 设计要点:
- 以 TimelinerTask 为主线(Navisworks 2017 可用 API 能力有限,使用显示名/选择集传递状态)。
3.9 碰撞检查
- ClashDetectiveIntegration:
- 动画过程“实时缓存”碰撞(包围盒快速判定 + 去重 + 位置快照);
- 动画结束“统一创建并运行”测试(避免过程频繁创建);
- 高亮冲突对象、刷新 UI、导出报告;
- 兼容性:优先 .NET Clash API,必要时绕过繁重的 COM 插件枚举。
3.10 路径规划分析
- 汇总多条路径的碰撞结果,统计次数/距离/受影响对象;
- 以“最小碰撞/最短距离/最小转弯次数”等指标推荐最优路径;
- 输出分析报告(可选 CSV/XML)。
3.11 结果输出
- 地图/路径可视化:3D 渲染 + 可截屏;
- 结构化结果:XML/JSON/CSV(建议 XML/CSV 作为主导入格式到 DELMIA)。
四、系统部署方案
4.1 部署环境要求
- 操作系统:Windows 7(需求文档基准),建议 Windows 10 及以上(更佳兼容性与性能);
- Autodesk Navisworks:Manage 2017(需求基线)。如需 2026,请切换引用与验证用例(见下文兼容模式);
- .NET Framework:4.8;
- 开发工具:Visual Studio(建议 2019/2022)。
4.2 构建与产物
- 解决方案:NavisworksTransport.sln;
- 项目:NavisworksTransportPlugin.csproj;
- 产物:NavisworksTransportPlugin.dll(bin/Debug 或 bin/Release)。
4.3 安装与部署流程
- 自动安装(一键安装):
- 识别 Navisworks 安装目录;
- 将插件 DLL 与必要资源复制到 [Navisworks安装路径]\Plugins\NavisworksTransportPlugin\;
- 注册菜单/配置(如需);
- 手动安装:
- 复制 NavisworksTransportPlugin.dll 至上述目录;
- 重启 Navisworks,在“附加模块”中查看“物流路径规划”。
4.4 运行配置
- 日志输出:%AppData%\Autodesk Navisworks Manage 2017\PluginsData\NavisworksTransportPlugin(按 QWEN 中 2026 路径作适配);
- 配置切换:
- 自动路径规划模式网格参数(cellSize、vehicleSize、safetyMargin、vehicleHeight);
- 2.5D/BoundingBox 模式选择(自动/强制选项)。
4.5 验证计划
- 功能验证(最小可行用例):
- 通道选择(手动/自动),边界计算;
- 路径编辑:起点/若干路径点/终点,渲染正确;
- 路径保存/导入/导出(XML 主)、历史记录查看;
- 物流属性设置:批量标注、筛选/清除、颜色高亮检查;
- 层级显示:仅显示物流元素/隔离显示/恢复显示;
- 自动规划:A* 成功求解、路径高度贴合、优化去冗余;
- 动画:任务创建、播放/停止、进度状态变更;
- 碰撞:动画期缓存、结束后创建测试与高亮、导出记录;
- 导航输出:视频/图片占位与结构化结果(XML/CSV);
- 性能验证:
- 大模型下网格生成耗时(ChannelBased 2.5D 与 BoundingBox 比对);
- 车辆膨胀优化(距离变换算法)前后对比;
- PathPoint 渲染与状态事件对 UI 延迟的影响;
- 兼容性验证:
- Navisworks NWD/NWF/NWC 模型;
- 不同单位(mm/cm/m/ft/in)下的单位换算正确性;
- 如需 Navisworks 2026,切换引用并复测 TimeLiner/Clash API 行为差异。
4.6 2026 兼容模式(可选)
- 若目标为 Navisworks 2026:
- 切换引用到 2026 API;
- 复核 QWEN.md 所述运行路径与日志输出位置;
- 回归 TimeLiner 与 Clash API 可用性和接口差异;
- 扩展安装器适配多版本并行安装。
五、非功能与质量保证
5.1 日志与异常处理
- GlobalExceptionHandler:应用级异常捕获(线程/任务/未处理),尝试恢复组件,提供用户友好提示;
- LogManager:Info/Warning/Error/Debug 统一记录,关键路径设充分日志(网格生成、A*、碰撞快照)。
5.2 性能优化要点
- 网格生成:
- ChannelBased 2.5D 优先(垂直扫描、空间哈希、通道优先),失败回退 BoundingBox;
- 车辆膨胀:距离变换 O(n*m) 优化,跳过无障碍场景;
- UI:
- UIStateManager/QueueUIUpdate 降低 UI 阻塞;
- WPF 绑定优化与虚拟化集合;
- 搜索:
- Search API 替代全量遍历,尤其在通道/楼层检索时。
5.3 可维护性
- 分层清晰,事件驱动,保留向后兼容事件(_Legacy);
- 路径文件以 XML 为主,便于第三方集成;
- 关键类职责单一(PathPlanningManager/CategoryAttributeManager/GridMapGenerator 等)。
六、风险与边界
- Navisworks 版本差异:2017 与 2026 API 行为差异需要回归验证;
- JSON 加载功能简化:建议以 XML 为主格式;
- 大场景极大网格:需调大 cellSize 或范围裁剪以避免内存/耗时过大;
- COM 属性写入:需严格使用相对索引覆盖逻辑(源码已修复),防止属性覆盖错乱;
- 动画碰撞“位置恢复”:测试期间会短暂移动对象做验证,并在结束后恢复。
七、里程碑建议(示例)
- M1(1 周):路径编辑闭环(手动)、物流属性标注、可见性隔离;
- M2(1-2 周):自动路径(2.5D/回退)、XML 存取、历史;
- M3(1 周):动画与碰撞缓存 + 结束测试、报告与高亮;
- M4(1 周):导航输出与 DELMIA 结果结构;
- M5(1 周):性能与兼容性回归(2017 基线,若选 2026 追加一轮)。
八、截图占位与要求
- [截图占位] 系统架构图:
- 要求:展示 UI/Core/PathPlanning/Utils 分层与 TimeLiner/Clash 集成及事件流;
- [截图占位] 主停靠面板(WPF):
- 要求:展示“类别设置/路径编辑/检测动画/系统管理”四个页签;
- [截图占位] 路径编辑过程:
- 要求:3D 视图中路径点(起点/路径点/终点)与线段渲染、状态提示;
- [截图占位] 自动路径规划网格示意:
- 要求:对比 ChannelBased 2.5D 与 BoundingBox 的可通行网格差异;
- [截图占位] TimeLiner 任务与播放控制:
- 要求:任务创建、播放、进度显示;
- [截图占位] 碰撞检查结果:
- 要求:高亮冲突对象、Clash 测试列表与数量统计;
- [截图占位] 结果文件样例:
- 要求:XML/CSV 字段示意,可用于 DELMIA 导入对齐。
附录 A:代码与模块清单(节选)
- Core/MainPlugin、UI/WPF/LogisticsControlPanel.xaml:主入口与面板;
- Core/PathPlanningManager:路径规划主控(状态、事件、可视化、导入导出)
- PathPlanning/GridMapGenerator、AutoPathFinder:网格生成与 A* 路径;
- Core/Properties/CategoryAttributeManager:物流属性管理(COM API 正确索引覆盖);
- Core/Animation/TimeLinerIntegrationManager:TimeLiner 任务集成;
- Core/Collision/ClashDetectiveIntegration:动画期缓存 + 结束创建测试;
- Core/VisibilityManager:可见性隔离与统计;
- UI/WPF/ViewModels/*:MVVM 视图模型与命令绑定。