370 lines
11 KiB
Markdown
370 lines
11 KiB
Markdown
# 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<HistoryRecord> | 历史记录列表 |
|
||
|
||
### 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
|
||
/// <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();
|
||
}
|
||
```
|
||
|
||
### 事件接口
|
||
```csharp
|
||
/// <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. 注释设计
|
||
|
||
### 代码注释规范
|
||
```csharp
|
||
/// <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 | 操作详情 |
|