NavisworksTransport/doc/working/multi_level_hoisting_path.md

7.0 KiB
Raw Blame History

多层阶梯式吊装路径开发方案

概述

本文档描述多层阶梯式吊装路径Multi-Level Stepped Hoisting Path的实现方案。该功能支持在多个水平高度进行正交移动适用于车间桁车等复杂吊装场景。

术语定义

  • 单层吊装路径:传统的"起吊 → 平移 → 下降"三段式路径
  • 多层阶梯式吊装路径:支持在多个高度层进行"提升/下降 → 平移"的阶梯式路径
  • 正交路径:运动严格按 X/Y/Z 轴方向,每次只改变一个维度

需求规格

功能需求

  1. 支持在多个高度层进行水平移动
  2. 支持上升和下降过程(可混合)
  3. 每个层级可设置不同的水平目标位置
  4. 保持与现有单层吊装路径的向后兼容

运动轨迹示例

单层吊装:
地面起吊 → 提升高度H → 水平移动到终点 → 下降落地
     ↑______________↓

多层吊装2层提升+1层下降
地面起吊 → 提升H1 → 水平移动到P1 → 
           提升H2 → 水平移动到P2 → 
           下降H3 → 水平移动到P3 → 
           下降落地
     ↑______↑______↓______↓

架构设计

数据模型

┌─────────────────────────────────────────────────────────────┐
│                      AerialPathParameters                    │
├─────────────────────────────────────────────────────────────┤
│  PathType: PathType.Hoisting                                │
│  StartPoint: Point3D            ← 起吊点(地面)            │
│  EndPoint: Point3D              ← 落点(地面)              │
│  LiftHeightMeters: double       ← 单层模式使用(保留)      │
│  Mode: HoistingMode             ← SingleLevel/MultiLevel    │
│  Levels: List<HoistingLevel>    ← 多层模式层级列表          │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                       HoistingLevel                          │
├─────────────────────────────────────────────────────────────┤
│  Index: int                     ← 层级序号                  │
│  HeightInMeters: double         ← 相对起吊点的高度          │
│  HorizontalTarget: Point3D      ← 水平目标位置XY        │
│  IsRise: bool                   ← true=提升, false=下降     │
│  Description: string            ← 层级描述                  │
└─────────────────────────────────────────────────────────────┘

兼容性设计

组件 兼容性策略
PathRoute.Points List<PathPoint> 天然支持可变数量,无需修改
PathType.Hoisting 继续使用现有枚举值,无需新增
XML序列化 按属性序列化,点数不影响格式
数据库存储 路径点表结构不变,仅插入行数变化
AerialHeightDialog 保留现有对话框,单层模式继续使用

实现计划

阶段1核心数据结构

目标:创建数据模型,扩展参数类,实现多层路径生成器

涉及文件

  1. src/Core/PathPlanningModels.cs - 添加 HoistingLevel
  2. src/Commands/CreateAerialPathCommand.cs - 扩展参数和模式枚举
  3. src/PathPlanning/AerialPathGenerator.cs - 添加多层生成方法

实现步骤

  1. PathPlanningModels.cs 中添加 HoistingLevel 类和 HoistingMode 枚举
  2. CreateAerialPathCommand.cs 中扩展 AerialPathParameters
  3. AerialPathGenerator.cs 中实现 GenerateMultiLevelHoistingPath 方法
  4. 修改 CreateAerialPathCommand.ExecuteInternalAsync 支持两种模式

向后兼容保证

  • 现有 GenerateThreeStepHoistingPath 方法保持不变
  • AerialPathParameters.LiftHeightMeters 继续存在
  • 新增 Mode 属性默认值为 SingleLevel

阶段2UI对话框

目标:创建多层吊装路径输入对话框

涉及文件

  1. src/UI/WPF/Views/MultiLevelHoistingDialog.xaml - 新建
  2. src/UI/WPF/Views/MultiLevelHoistingDialog.xaml.cs - 新建

功能需求

  • 显示层级列表(可添加/删除)
  • 每个层级设置:高度、方向(提升/下降)、描述
  • 水平目标位置通过3D点击获取
  • 实时预览路径点数

阶段3ViewModel集成

目标:在 PathEditingViewModel 中集成多层模式

涉及文件

  1. src/UI/WPF/ViewModels/PathEditingViewModel.cs

功能需求

  • 添加模式选择命令
  • 集成多层对话框
  • 支持在创建流程中动态添加层级

API规范

HoistingLevel 类

public class HoistingLevel
{
    public int Index { get; set; }
    public double HeightInMeters { get; set; }
    public Point3D HorizontalTarget { get; set; }
    public bool IsRise { get; set; }
    public string Description { get; set; }
}

HoistingMode 枚举

public enum HoistingMode
{
    SingleLevel,   // 单层(默认,向后兼容)
    MultiLevel     // 多层阶梯式
}

AerialPathParameters 扩展

public class AerialPathParameters
{
    // 现有字段保留...
    public HoistingMode Mode { get; set; } = HoistingMode.SingleLevel;
    public List<HoistingLevel> Levels { get; set; }
}

AerialPathGenerator 新方法

public List<PathPoint> GenerateMultiLevelHoistingPath(
    Point3D startPoint, 
    Point3D endPoint, 
    List<HoistingLevel> levels)

测试要点

  1. 向后兼容测试:单层模式路径生成与之前完全一致
  2. 多层路径测试2层、3层、混合升降路径生成正确
  3. 数据序列化测试:多层路径保存/加载正确
  4. 渲染测试多层路径在3D视图中正确显示
  5. 动画测试:动画沿多层路径正确插值

风险分析

风险 可能性 影响 缓解措施
现有单层功能被破坏 保留原方法,添加新实现,充分测试
路径点过多影响性能 限制最大层级数如10层
数据库兼容性问题 验证现有表结构支持可变点数

版本记录

版本 日期 描述
1.0 2026-02-24 初始方案