NavisworksTransport/doc/design/Design_Plan.md

322 lines
16 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 正式设计方案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 环境中保证稳定运行与较好性能;
- 解耦分层UIWPF+MVVM与核心逻辑Core、PathPlanning分离便于后续扩展
- 向后兼容:在自动规划/碰撞集成等关键能力上提供降级路径(如 BoundingBox 模式回退);
- 可观察性:统一日志 LogManager异常采用 GlobalExceptionHandler
- 数据可移植:路径/结果提供 XML/JSON/CSV 序列化能力JSON 加载简化,建议 XML 为主)。
1.4 核心用例流程概览
- 路径编辑(手动):
1) 用户通道选择(手动/属性筛选/自动查找可通行),计算通道边界;
2) 进入编辑模式3D 点击添加“起点/路径点/终点”,路线渲染与校验;
3) 保存/导入/导出路径文件,维护历史记录;
- 自动路径规划:
1) 依据通道与模型生成网格(优先 ChannelBased 2.5D,失败回退 BoundingBox
2) A* 求解路径并高度修正(贴合通道表面),渲染与事件广播;
- 动画与碰撞:
1) 基于路径生成 TimeLiner 动画;
2) 动画过程缓存碰撞,结束后统一生成 Clash 测试与报告,高亮冲突对象;
- 导航输出:
1) 导航控件交互产生路径;
2) 输出视频/图片与结构化结果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可见性与层级控制
- AnimationTimeLinerIntegrationManager、PathAnimationManager动画控制
- CollisionClashDetectiveIntegration碰撞集成动画期缓存 + 结束时统一测试)
- ModelSplitterManager模型切分含简化实现
- PathPlanning 算法层:
- GridMapGenerator网格生成ChannelBased 2.5D/BoundingBox车辆膨胀优化
- AutoPathFinderA* 路径搜索、路径优化/插值、高度贴合
- ChannelBasedGridBuilder、VerticalScanProcessor、TriangleSpatialHash 等支撑
- Utils日志、坐标/单位转换、Navisworks API 辅助
2.2 系统架构图(截图占位)
- [截图占位] 系统架构图
- 要求:体现 UIWPF+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
- UIWPF + MVVMWinForms 仅用于部分对话框/遗留界面);
- 外部 APIAutodesk Navisworks API2017 目标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 模型切分
- 目标:对大型模型按楼层/属性进行切分,提升性能与操作体验;
- UIModelSplitterDialogWinForms
- CoreModelSplitterManager、SimplifiedModelSplitterManager
- 设计:
- 基于模型层级与属性枚举进行分层导出;
- 提供环境检查与测试导出入口;
- 与可见性/筛选配合以限定工作区域。
3.2 通道选择
- 能力:
- 手动选择:基于 Navisworks 选择;
- 属性筛选:通过 CategoryAttributeManager.FilterByLogisticsType(FilterTraversableItems)
- 自动选择Search API 扫描“可通行”物流元素;
- PathPlanningManager.SelectChannels计算组合边界 CombinedChannelBounds 并事件广播。
3.3 路径点规划(手动 + 自动)
- 手动规划:
- 工具PathClickToolPlugin精确拾取PathPointRenderPlugin3D 渲染);
- 流程:切换到 Creating/Editing 状态 -> 添加点 -> 渲染 -> 校验;
- 路径点自动贴合:高度修正在 AutoPathFinder.ApplyPreciseHeightCorrection 中贴合通道表面(有通道数据时);
- 自动规划(复杂环境):
- 网格生成GridMapGenerator.GenerateFromBIM
- First 尝试 ChannelBased2_5D通道优先、垂直扫描高度区间、车辆高度校验
- Fallback 到 BoundingBox 模式(保持向后兼容);
- A*AutoPathFinder.FindPath/ExecuteAStarAlgorithm
- 路径优化去冗余点、直线可达校验、2.5D 高度插值与起终点原位修正;
3.4 路径管理、编辑、保存与导入
- 编辑:创建/编辑/取消/完成编辑FinishEditing 自动将末点设为终点并触发渲染与事件);
- 文件PathFileSerializerXML 主JSON 简化,不建议作为主格式),支持多路径容器;
- 历史PathHistoryManagerCreated/Edited/ManualSave 等),提供查看历史 UI
- 导入DetectFileFormat -> LoadFromXml/LoadFromJsonJSON 加载简化,优先 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 NavisworksManage 2017需求基线。如需 2026请切换引用与验证用例见下文兼容模式
- .NET Framework4.8
- 开发工具Visual Studio建议 2019/2022
4.2 构建与产物
- 解决方案NavisworksTransport.sln
- 项目NavisworksTransportPlugin.csproj
- 产物NavisworksTransportPlugin.dllbin/Debug 或 bin/Release
4.3 安装与部署流程
- 自动安装(一键安装):
1) 识别 Navisworks 安装目录;
2) 将插件 DLL 与必要资源复制到 [Navisworks安装路径]\Plugins\NavisworksTransportPlugin\
3) 注册菜单/配置(如需);
- 手动安装:
1) 复制 NavisworksTransportPlugin.dll 至上述目录;
2) 重启 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应用级异常捕获线程/任务/未处理),尝试恢复组件,提供用户友好提示;
- LogManagerInfo/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 属性写入:需严格使用相对索引覆盖逻辑(源码已修复),防止属性覆盖错乱;
- 动画碰撞“位置恢复”:测试期间会短暂移动对象做验证,并在结束后恢复。
七、里程碑建议(示例)
- M11 周):路径编辑闭环(手动)、物流属性标注、可见性隔离;
- M21-2 周自动路径2.5D/回退、XML 存取、历史;
- M31 周):动画与碰撞缓存 + 结束测试、报告与高亮;
- M41 周):导航输出与 DELMIA 结果结构;
- M51 周性能与兼容性回归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/TimeLinerIntegrationManagerTimeLiner 任务集成;
- Core/Collision/ClashDetectiveIntegration动画期缓存 + 结束创建测试;
- Core/VisibilityManager可见性隔离与统计
- UI/WPF/ViewModels/*MVVM 视图模型与命令绑定。