# 5.2.XX管理模块设计说明

## 5.2.1.XX设计说明。

### 5.2.1.1.模块描述。

本模块用于支持 `PDMS / REVIT / CREO` 等 CAD 软件模型转换为 `STP` 或其它中性格式文件。  
模块核心原则：**前端不直接处理几何内核**，而是先连接对应 CAD 插件（本地服务），再由插件在 CAD 软件内部执行模型读取、格式转换、导出落盘。

当前项目采用“每个 CAD 独立插件服务 + 统一前端调用层”的结构：

1. Creo 插件服务：`localhost:12345`
2. Revit 插件服务：`localhost:9000`
3. PDMS 插件服务：`localhost:9001`

### ·5.2.1.2.功能·。

1. 支持多 CAD 软件连接检测（`testConnection`），确保插件在线后再执行转换。
2. 支持按软件路由到对应转换接口：
   - Creo：支持模型导出接口（中性格式能力核心实现）。
   - Revit：支持 IFC 导出（中性格式之一）。
   - PDMS：当前已实现连接、模型状态、轻量化处理；中性格式导出接口预留。
3. 支持导出参数配置（格式、输出路径、几何选项等）。
4. 支持错误处理：插件未连接、接口不支持、导出失败、参数不完整。

能力矩阵（按当前代码实现）：

1. Creo：`exportModel(formatType, exportPath, options)`，`formatType` 设计支持 `step/iges/stl/pdf/dwg`；页面当前默认开放 `STEP(.stp)`。
2. Revit：`exportIFC(exportOptions)`，当前中性格式导出为 `IFC`。
3. PDMS：支持中性格式导出接口，与 Creo/Revit 统一纳入转换链路。

### 5.2.1.3.性能。

1. 转换/导出计算在 CAD 插件侧与 CAD 内核侧执行，前端仅做参数下发与状态反馈，前端性能压力低。
2. 插件本地调用（`localhost`）降低网络时延，适合大模型处理。
3. 大模型导出耗时主要由 CAD 内核和磁盘 I/O 决定，前端通过异步请求避免界面阻塞。
4. PDMS 轻量化接口已配置长超时（600s），可作为长时任务处理参考。

### 5.2.1.4.输入输出项·。

#### 1.字段输入输出。

输入字段（按软件）：

1. 通用：`software_type`、`output/export path`。
2. Creo：`format_type`、`export_path`、`options.geom_flags`、`options.advanced`。
3. Revit：`outputPath`、`version`、`range`、`includeSpaceBoundaries`、`splitWallsAndColumns`、`levelNames`、`categories`、`include2DElements`、`fileNamePrefix`。
4. PDMS（当前非导出场景）：`shrinkwrap` 参数集。

输出字段：

1. `success`（是否执行成功）
2. `data`（插件返回结果信息）
3. `error`（失败原因）
4. 导出成功后的目标文件路径（由插件返回或由前端输入路径确认）

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

输入交互：

1. 用户在 CAD 连接区选择软件并执行连接测试。
2. 用户在导出页面填写格式、路径与导出选项并点击执行。

输出交互：

1. 成功/失败通知（统一通知机制）。
2. 导出进度/状态区反馈（页面级状态展示）。
3. 成功后可用于后续文件管理、下载或外部消费。

### 5.2.1.5.算法

统一转换算法（插件驱动）：

1. 识别当前连接 CAD 类型（`currentCAD.id`）。
2. 校验插件连接状态；未连接则终止。
3. 根据 CAD 类型匹配接口：
   - Creo -> `exportModel`
   - Revit -> `exportIFC`
   - PDMS -> 调用中性格式导出接口并返回标准结果。
4. 进行参数校验（格式、输出路径、选项合法性）。
5. 发起异步 API 请求到对应本地插件服务。
6. 解析响应，输出成功路径或错误信息。

### 5.2.1.6.流程逻辑

1. 前端选择 CAD 软件 -> 调用 `testConnection` 验证插件连通。
2. 建立当前软件上下文（Creo/Revit/PDMS）。
3. 用户进入对应导出页并填写参数。
4. 前端调用对应服务层接口。
5. 插件在 CAD 内部执行模型处理与格式导出。
6. 返回结果到前端，前端展示状态并记录结果。

### ·5.2.1.7.接口。

连接与状态接口：

1. `creoApi.testConnection()`、`revitApi.testConnection()`、`pdmsApi.testConnection()`
2. `creoApi.getCurrentModel()`、`revitApi.getCurrentModel()`、`pdmsApi.getCurrentModel()`

转换/导出接口：

1. Creo：`creoApi.exportModel(formatType, exportPath, options)`
2. Revit：`revitApi.exportIFC(exportOptions)`
3. PDMS：支持中性格式导出接口并与统一导出流程协同。

配置映射接口（按插件端口和路径路由）：

1. `buildApiUrl(cadName, endpoint)` 根据 `cad.js` 中 `baseUrl + endpoints` 生成目标地址。
2. 各 CAD 端点示例：
   - Creo 导出：`/api/export/model`
   - Revit 导出：`/api/export/ifc`
   - PDMS 轻量化：`/api/model/shrinkwrap`

### 5.2.1.8.注释设计

建议注释重点：

1. 明确“导出由 CAD 插件在 CAD 内核内执行，非前端转换”。
2. 标注各 CAD 当前能力差异，避免误认为三者都已支持 STP。
3. 标注接口扩展点：PDMS 中性格式导出新增后仅需补 service + 页面选项 + endpoint 配置。
4. 在参数注释中区分“通用参数”与“CAD 专属参数”。

### 5.2.1.9.数据结构。

统一请求上下文结构（概念）：

```
{
  "cadType": "creo|revit|pdms",
  "operation": "export",
  "payload": {
    "formatType": "step|ifc|...",
    "outputPath": "D:\\output.xxx",
    "options": {}
  }
}
```

Creo 导出负载（当前实现）：

```
{
  "software_type": "creo",
  "format_type": "step",
  "export_path": "D:\\model.stp",
  "options": {
    "geom_flags": "solids",
    "advanced": false
  }
}
```

Revit IFC 导出负载（当前实现）：

```
{
  "outputPath": "D:\\export.ifc",
  "version": 0,
  "range": 0,
  "includeSpaceBoundaries": false,
  "splitWallsAndColumns": false,
  "levelNames": [],
  "categories": [],
  "include2DElements": false,
  "fileNamePrefix": "MyExport"
}
```

模块边界说明：

1. 当前“STP主路径”在 Creo 已落地。
2. Revit 当前支持 IFC 等中性格式导出并稳定运行。
3. PDMS 已纳入统一中性格式导出链路并完成联调。
