# 2.4.3 输出格式功能设计说明

## 2.4.3.1. 模块描述

输出格式模块是交互式导航功能的关键模块，负责支持路径规划结果结构化文件输出（XML/JSON/CSV），确保结果文件能够导入DELMIA。该模块提供了标准化的数据交换格式，使路径规划结果可以在不同的系统和软件之间进行交换和复用。

该模块与ExportPathCommand、PathDataManager和各类导出器（XML/JSON/CSV）紧密集成，实现灵活的数据导出功能。

## 2.4.3.2. 功能

### 核心功能
1. **XML格式输出**：导出为XML格式的结构化数据
2. **JSON格式输出**：导出为JSON格式的结构化数据
3. **CSV格式输出**：导出为CSV表格格式
4. **DELMIA兼容**：确保输出格式兼容DELMIA导入
5. **数据转换**：支持不同格式之间的数据转换

### 子功能
| 功能编号 | 功能名称 | 功能描述 |
|---------|---------|---------|
| 2.4.3.F1 | XML导出 | 导出路径数据为XML格式 |
| 2.4.3.F2 | JSON导出 | 导出路径数据为JSON格式 |
| 2.4.3.F3 | CSV导出 | 导出路径数据为CSV格式 |
| 2.4.3.F4 | DELMIA格式 | 生成DELMIA兼容的输出 |
| 2.4.3.F5 | 格式验证 | 验证输出格式正确性 |
| 2.4.3.F6 | 批量导出 | 批量导出多条路径 |
| 2.4.3.F7 | 字段定制 | 定制导出的字段内容 |

## 2.4.3.3. 性能

### 性能指标
| 指标名称 | 目标值 | 说明 |
|---------|-------|------|
| 导出响应时间 | < 1秒 | 导出单条路径的响应时间 |
| 批量导出速度 | > 100条/秒 | 批量导出的处理速度 |
| 文件大小优化 | < 1MB | 单条路径的导出文件大小 |
| 内存占用 | < 100MB | 导出过程的内存占用 |

### 性能优化策略
1. 流式写入大文件
2. 异步导出操作
3. 数据压缩

## 2.4.3.4. 输入输出项

### 1. 字段输入输出

#### 输入字段
| 字段名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| Routes | List<PathRoute> | 是 | 要导出的路径列表 |
| Format | ExportFormat | 是 | 导出格式 |
| ExportOptions | ExportOptions | 否 | 导出选项 |

#### 输出字段
| 字段名 | 类型 | 说明 |
|-------|------|------|
| FilePath | string | 导出文件路径 |
| ExportedCount | int | 导出的路径数量 |
| FileSize | long | 文件大小 |

### 2. 界面交互输入输出

#### 界面输入
- 导出格式选择
- 字段选择勾选
- 文件路径选择
- DELMIA兼容选项

#### 界面输出
- 导出进度显示
- 文件大小信息
- 导出结果提示
- 文件预览

## 2.4.3.5. 算法

### XML导出算法
```
算法：导出路径为XML格式
输入：路径列表，导出选项
输出：XML文件

1. 创建XML文档
2. 添加根元素<TransportPaths>
3. 对于每条路径：
   4. 创建<Path>元素
   5. 添加路径属性（ID、名称、长度等）
   6. 添加<Points>子元素
   7. 对于每个路径点：
      8. 创建<Point>元素
      9. 添加坐标和属性
10. 保存XML文件
```

### JSON导出算法
```
算法：导出路径为JSON格式
输入：路径列表，导出选项
输出：JSON文件

1. 创建路径数据对象列表
2. 对于每条路径：
   3. 序列化路径对象为JSON对象
   4. 添加到列表
5. 序列化整个列表为JSON字符串
6. 保存到文件
```

### CSV导出算法
```
算法：导出路径为CSV格式
输入：路径列表，导出选项
输出：CSV文件

1. 写入CSV表头
2. 对于每条路径的每个点：
   3. 创建数据行
   4. 写入坐标、类型等信息
   5. 写入CSV文件
```

## 2.4.3.6. 流程逻辑

```
开始
  │
  ▼
┌─────────────────┐
│  选择要导出的路径 │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  选择导出格式    │
└────────┬────────┘
         │
    ┌────┼────┬────────┐
    ▼    ▼    ▼        ▼
┌──────┐┌──────┐┌──────┐┌──────┐
│ XML  ││ JSON ││ CSV  ││DELMIA│
└──┬───┘└──┬───┘└──┬───┘└──┬───┘
   │       │       │       │
   └───────┼───────┼───────┘
           │       │
           ▼       ▼
   ┌─────────────────────┐
   │ 配置导出字段和选项   │
   └──────────┬──────────┘
              │
              ▼
   ┌─────────────────────┐
   │ 选择保存文件路径     │
   └──────────┬──────────┘
              │
              ▼
   ┌─────────────────────┐
   │ 执行导出操作         │
   └──────────┬──────────┘
              │
              ▼
   ┌─────────────────────┐
   │ 验证导出结果         │
   └──────────┬──────────┘
              │
              ▼
   ┌─────────────────────┐
   │ 显示导出完成信息     │
   └──────────┬──────────┘
              │
              ▼
             结束
```

## 2.4.3.7. 接口

### 公共接口
```csharp
/// <summary>
/// 导出路径命令
/// </summary>
public class ExportPathCommand
{
    /// <summary>
    /// 执行导出
    /// </summary>
    /// <param name="routes">路径列表</param>
    /// <param name="format">导出格式</param>
    /// <param name="filePath">文件路径</param>
    /// <returns>导出结果</returns>
    public ExportResult Execute(List<PathRoute> routes, ExportFormat format, string filePath);
}

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

/// <summary>
/// 导出选项
/// </summary>
public class ExportOptions
{
    public bool IncludeCoordinates { get; set; }
    public bool IncludeTiming { get; set; }
    public bool IncludeProperties { get; set; }
    public bool UseMeters { get; set; }
}
```

## 2.4.3.8. 注释设计

### 代码注释规范
```csharp
/// <summary>
/// DELMIA导出配置
/// 用于生成DELMIA兼容的路径数据
/// </summary>
public class DelmiaExportConfig
{
    /// <summary>
    /// 坐标系类型
    /// DELMIA使用特定的坐标系约定
    /// </summary>
    public CoordinateSystemType CoordinateSystem { get; set; }
    
    /// <summary>
    /// 是否包含速度信息
    /// </summary>
    public bool IncludeVelocity { get; set; }
    
    /// <summary>
    /// 采样间隔（秒）
    /// </summary>
    public double SampleInterval { get; set; }
}
```

## 2.4.3.9. 数据结构

### ExportFormat 枚举
| 值 | 说明 |
|---|------|
| XML | XML格式 |
| JSON | JSON格式 |
| CSV | CSV格式 |
| DELMIA | DELMIA兼容格式 |

### ExportOptions 结构
| 字段名 | 类型 | 说明 |
|-------|------|------|
| IncludeCoordinates | bool | 包含坐标信息 |
| IncludeTiming | bool | 包含时间信息 |
| IncludeProperties | bool | 包含属性信息 |
| UseMeters | bool | 使用米制单位 |
| Precision | int | 坐标精度（小数位） |

### XML格式示例
```xml
<?xml version="1.0" encoding="UTF-8"?>
<TransportPaths>
  <Path id="path001" name="主通道路径">
    <Length>125.5</Length>
    <EstimatedTime>156.9</EstimatedTime>
    <Points>
      <Point index="0" type="Start">
        <X>10.0</X>
        <Y>20.0</Y>
        <Z>0.0</Z>
      </Point>
      <!-- 更多点... -->
    </Points>
  </Path>
</TransportPaths>
```

### JSON格式示例
```json
{
  "paths": [
    {
      "id": "path001",
      "name": "主通道路径",
      "length": 125.5,
      "estimatedTime": 156.9,
      "points": [
        {
          "index": 0,
          "type": "Start",
          "x": 10.0,
          "y": 20.0,
          "z": 0.0
        }
      ]
    }
  ]
}
```

### CSV格式示例
```csv
PathID,PathName,PointIndex,PointType,X,Y,Z
path001,主通道路径,0,Start,10.0,20.0,0.0
path001,主通道路径,1,WayPoint,15.0,25.0,0.0
```
