NavisworksTransport/doc/introduction/2.1.4_编辑保存和导入功能设计说明.md

11 KiB
Raw Blame History

2.1.4 编辑保存和导入功能设计说明

2.1.4.1. 模块描述

编辑保存和导入模块负责路径数据的管理功能,支持对路径上的各点进行坐标编辑,保存当前路径点集合为路径规划文件,以及从文件导入路径并在当前通道表面重绘路径。该模块还支持记录并查看路径文件操作的历史记录,为用户提供完整的路径数据生命周期管理。

该模块与PathDatabase、PathDataManager和各类导出器XML/JSON/CSV紧密集成实现路径数据的持久化和交换。

2.1.4.2. 功能

核心功能

  1. 坐标编辑:支持对路径点的坐标进行精确编辑
  2. 路径保存将路径保存为XML、JSON、CSV格式文件
  3. 路径导入:从文件导入路径并在当前场景重绘
  4. 历史记录:记录路径文件操作历史,支持查看和回溯

子功能

功能编号 功能名称 功能描述
2.1.4.F1 坐标编辑 编辑路径点的X/Y/Z坐标
2.1.4.F2 批量编辑 批量修改多个路径点坐标
2.1.4.F3 XML导出 导出路径为XML格式
2.1.4.F4 JSON导出 导出路径为JSON格式
2.1.4.F5 CSV导出 导出路径为CSV格式
2.1.4.F6 XML导入 从XML文件导入路径
2.1.4.F7 JSON导入 从JSON文件导入路径
2.1.4.F8 CSV导入 从CSV文件导入路径
2.1.4.F9 路径重绘 导入后在当前场景重绘路径
2.1.4.F10 历史记录 记录和查看文件操作历史

2.1.4.3. 性能

性能指标

指标名称 目标值 说明
保存响应时间 < 500ms 保存路径到文件的时间
导入响应时间 < 1秒 从文件导入路径的时间
支持文件大小 > 10MB 支持导入的最大文件大小
历史记录数量 > 1000条 支持保存的最大历史记录数
批量编辑响应 < 200ms 批量编辑操作的响应时间

性能优化策略

  1. 使用流式读写处理大文件
  2. 数据库批量操作优化历史记录写入
  3. 异步文件操作避免阻塞UI

2.1.4.4. 输入输出项

1. 字段输入输出

输入字段(保存)

字段名 类型 必填 说明
Route PathRoute 要保存的路径对象
FilePath string 目标文件路径
Format ExportFormat 导出格式

输入字段(导入)

字段名 类型 必填 说明
FilePath string 源文件路径
Format ImportFormat 导入格式(自动检测)

输入字段(编辑)

字段名 类型 必填 说明
PointId string 要编辑的点ID
NewPosition Point3D 新坐标位置

输出字段

字段名 类型 说明
Success bool 操作是否成功
Message string 操作结果消息
ImportedRoute PathRoute 导入的路径对象
HistoryRecords List 历史记录列表

2. 界面交互输入输出

界面输入

  • 文件选择对话框操作
  • 坐标编辑表单输入
  • 导入格式选择

界面输出

  • 文件保存/导入进度
  • 操作结果提示
  • 历史记录列表显示

2.1.4.5. 算法

坐标编辑算法

算法:路径点坐标编辑
输入点ID新坐标
输出:编辑结果

1. 根据ID查找路径点
2. 验证新坐标的有效性
3. 更新路径点坐标
4. 重新计算路径长度
5. 更新路径显示
6. 记录编辑历史

路径导出算法

算法:路径数据导出
输入:路径对象,目标格式
输出:文件内容

1. 根据格式选择对应的导出器
2. 序列化路径数据
3. 应用格式特定的转换
4. 写入文件
5. 记录导出历史

路径导入算法

算法:路径数据导入
输入:文件路径
输出:路径对象

1. 检测文件格式
2. 选择对应的导入器
3. 解析文件内容
4. 验证数据完整性
5. 创建路径对象
6. 在当前场景重绘路径
7. 记录导入历史

2.1.4.6. 流程逻辑

开始
  │
  ├──┬── 保存路径 ──┐
  │  │              │
  │  ▼              │
  │┌─────────────┐  │
  ││选择保存格式 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││选择文件路径 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││执行导出操作 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││记录保存历史 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││显示保存结果 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │      结束 ◄─────┘
  │
  ├──┬── 导入路径 ──┐
  │  │              │
  │  ▼              │
  │┌─────────────┐  │
  ││选择导入文件 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││检测文件格式 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││解析文件内容 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││验证数据     │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││重绘路径     │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │┌─────────────┐  │
  ││记录导入历史 │  │
  │└──────┬──────┘  │
  │       │         │
  │       ▼         │
  │      结束 ◄─────┘
  │
  └──┬── 编辑坐标 ──┐
     │              │
     ▼              │
   ┌─────────────┐  │
   │选择编辑的点 │  │
   └──────┬──────┘  │
          │         │
          ▼         │
   ┌─────────────┐  │
   │输入新坐标   │  │
   └──────┬──────┘  │
          │         │
          ▼         │
   ┌─────────────┐  │
   │验证坐标     │  │
   └──────┬──────┘  │
          │         │
          ▼         │
   ┌─────────────┐  │
   │更新路径显示 │  │
   └──────┬──────┘  │
          │         │
          ▼         │
         结束 ◄─────┘

2.1.4.7. 接口

公共接口

/// <summary>
/// 路径数据管理器
/// </summary>
public class PathDataManager
{
    /// <summary>
    /// 保存路径到文件
    /// </summary>
    /// <param name="route">路径对象</param>
    /// <param name="filePath">文件路径</param>
    /// <param name="format">导出格式</param>
    /// <returns>保存结果</returns>
    public SaveResult SavePath(PathRoute route, string filePath, ExportFormat format);
    
    /// <summary>
    /// 从文件导入路径
    /// </summary>
    /// <param name="filePath">文件路径</param>
    /// <returns>导入的路径对象</returns>
    public ImportResult ImportPath(string filePath);
    
    /// <summary>
    /// 编辑路径点坐标
    /// </summary>
    /// <param name="pointId">点ID</param>
    /// <param name="newPosition">新坐标</param>
    /// <returns>编辑结果</returns>
    public EditResult EditPointCoordinate(string pointId, Point3D newPosition);
    
    /// <summary>
    /// 获取历史记录
    /// </summary>
    /// <returns>历史记录列表</returns>
    public List<HistoryRecord> GetHistoryRecords();
}

事件接口

/// <summary>
/// 路径保存完成事件
/// </summary>
public event EventHandler<PathSavedEventArgs> PathSaved;

/// <summary>
/// 路径导入完成事件
/// </summary>
public event EventHandler<PathImportedEventArgs> PathImported;

/// <summary>
/// 坐标编辑完成事件
/// </summary>
public event EventHandler<CoordinateEditedEventArgs> CoordinateEdited;

2.1.4.8. 注释设计

代码注释规范

/// <summary>
/// 导出格式枚举
/// </summary>
public enum ExportFormat
{
    /// <summary>
    /// XML格式
    /// </summary>
    XML,
    
    /// <summary>
    /// JSON格式
    /// </summary>
    JSON,
    
    /// <summary>
    /// CSV格式
    /// </summary>
    CSV
}

/// <summary>
/// 保存结果
/// </summary>
public class SaveResult
{
    /// <summary>
    /// 是否保存成功
    /// </summary>
    public bool Success { get; set; }
    
    /// <summary>
    /// 结果消息
    /// </summary>
    public string Message { get; set; }
    
    /// <summary>
    /// 保存的文件路径
    /// </summary>
    public string FilePath { get; set; }
}

2.1.4.9. 数据结构

ExportFormat 枚举

说明
XML XML格式导出
JSON JSON格式导出
CSV CSV格式导出

SaveResult 结构

字段名 类型 说明
Success bool 保存是否成功
Message string 结果消息
FilePath string 保存的文件路径
FileSize long 文件大小(字节)

ImportResult 结构

字段名 类型 说明
Success bool 导入是否成功
Message string 结果消息
ImportedRoute PathRoute 导入的路径对象
Format ImportFormat 检测到的格式

HistoryRecord 结构

字段名 类型 说明
Id string 记录ID
OperationType string 操作类型(保存/导入/编辑)
FilePath string 相关文件路径
OperationTime DateTime 操作时间
UserName string 操作用户
Details string 操作详情