# 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. 接口 ### 公共接口 ```csharp /// /// 路径数据管理器 /// public class PathDataManager { /// /// 保存路径到文件 /// /// 路径对象 /// 文件路径 /// 导出格式 /// 保存结果 public SaveResult SavePath(PathRoute route, string filePath, ExportFormat format); /// /// 从文件导入路径 /// /// 文件路径 /// 导入的路径对象 public ImportResult ImportPath(string filePath); /// /// 编辑路径点坐标 /// /// 点ID /// 新坐标 /// 编辑结果 public EditResult EditPointCoordinate(string pointId, Point3D newPosition); /// /// 获取历史记录 /// /// 历史记录列表 public List GetHistoryRecords(); } ``` ### 事件接口 ```csharp /// /// 路径保存完成事件 /// public event EventHandler PathSaved; /// /// 路径导入完成事件 /// public event EventHandler PathImported; /// /// 坐标编辑完成事件 /// public event EventHandler CoordinateEdited; ``` ## 2.1.4.8. 注释设计 ### 代码注释规范 ```csharp /// /// 导出格式枚举 /// public enum ExportFormat { /// /// XML格式 /// XML, /// /// JSON格式 /// JSON, /// /// CSV格式 /// CSV } /// /// 保存结果 /// public class SaveResult { /// /// 是否保存成功 /// public bool Success { get; set; } /// /// 结果消息 /// public string Message { get; set; } /// /// 保存的文件路径 /// 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 | 操作详情 |