---
title: WebCAD（条件启用）
source: https://vjmap.com/guide/service/api/06-webcad.html
---

# WebCAD（条件启用）

> 分类代号：C.6  本章共 **6 个接口**

---

## 启用判定

最推荐的方式：

```python
svc = vjmap.Vjmap(API, TOKEN)
if svc.webcad_enabled():
    draws = svc.list_webcad_draws()
else:
    print("本服务未启用 WebCAD")
```

`svc.webcad_enabled()` 的判定规则：

1. `GET /api/v1/service/webcad` 若返回 2xx 且 **没有** `enabled=false` / `error` 字段，视为"可用"；
2. 若返回 4xx/5xx 或业务错误（如 `Token is invalid`），视为"不可用"。

### 本仓库实采

```json
// /api/v1/service/webcad?token=...
{
  "status": 403,
  "body": {
    "code": 7,
    "data": { "reload": true },
    "msg": "Token is invalid"
  }
}
```

---

## 快速索引

| 序号 | SDK 方法 | URL |
|----:|---------|-----|
| 42 | `list_webcad_draws` / `listWebcadDraws` | `GET /api/v1/map/cmd/listWebcadDraws/_/v1` |
| 43 | `get_webcad_data` / `getWebcadData` | `POST /api/v1/map/cmd/getWebcadData/{mapid}/{version}` |
| 44 | `save_webcad_patch` / `saveWebcadPatch` | `POST /api/v1/map/cmd/saveWebcadPatch/{mapid}/{version}` |
| 45 | `delete_webcad_draw` / `deleteWebcadDraw` | `POST /api/v1/map/cmd/deleteWebcadDraw/{mapid}/{version}` |
| 46 | `convert_webcad` / `convertWebcad` | `POST /api/v1/map/cmd/convertWebCAD/{mapid}/{version}` |
| 47 | `export_webcad` / `exportWebcad` | `POST /api/v1/map/cmd/exportWebCAD/_null/v1` |

---

## 42 · 列出 WebCAD 图 `listWebcadDraws`

**URL**：`GET /api/v1/map/cmd/listWebcadDraws/_/v1`  
**响应**（启用时）：

```json
{
  "draws": [
    { "mapid": "proj_wc", "version": "v1", "updatedAt": "2024-..." },
    ...
  ]
}
```

### Python / Node

```python
svc.list_webcad_draws()
```

```javascript
await svc.listWebcadDraws();
```

---

## 43 · 读取 WebCAD 数据 `getWebcadData`

**URL**：`POST /api/v1/map/cmd/getWebcadData/{mapid}/{version}`

### 请求参数

| 字段 | 说明 |
|------|------|
| `branch` | 分支名 |
| `includePatches` | 是否把历次补丁一并返回 |

### 响应（启用时）

```json
{
  "mapdata": "<DWG JSON 字符串>",
  "branch": "main",
  "headVersion": 12,
  "patches": []
}
```

### Python

```python
svc.get_webcad_data("proj_wc", "v1", branch="main")
```

---

## 44 · 保存 WebCAD 补丁 `saveWebcadPatch`

**URL**：`POST /api/v1/map/cmd/saveWebcadPatch/{mapid}/{version}`

### 请求参数

| 字段 | 说明 |
|------|------|
| `patch` | 一段 JSON/字符串形式的差异描述 |
| `branch` | 分支名 |
| `author` | 作者标识（可选） |
| `comment` | 提交说明 |
| `baseVersion` | 基于哪个补丁号提交，用于冲突检测 |

### 响应（启用时）

```json
{ "status": true, "version": 13 }
```

### Python

```python
svc.save_webcad_patch(
    "proj_wc", "v1",
    patch='[{"op":"add","entity":{...}}]',
    branch="main",
    author="alice",
    comment="add hatch",
    baseVersion=12,
)
```

---

## 45 · 删除 WebCAD 图 `deleteWebcadDraw`

**URL**：`POST /api/v1/map/cmd/deleteWebcadDraw/{mapid}/{version}`

### 请求参数

| 字段 | 说明 |
|------|------|
| `branch` | 只删某个分支；为空则删整图 |

### 响应（启用时）

```json
{ "status": true }
```

---

## 46 · 转为 WebCAD `convertWebCAD`

把一张已上传的 DWG 转成 WebCAD 可用的结构（初始化分支、预计算可编辑实体）。

**URL**：`POST /api/v1/map/cmd/convertWebCAD/{mapid}/{version}`

### 响应（启用时）

```json
{
  "status": true,
  "branch": "main",
  "entityCount": 12345
}
```

---

## 47 · 导出 WebCAD 为 DWG `exportWebCAD`

**URL**：`POST /api/v1/map/cmd/exportWebCAD/_null/v1`

### 请求参数

| 字段 | 说明 |
|------|------|
| `mapid` / `version` | 要导出的 WebCAD 图 |
| `branch` | 导出哪个分支（默认 main） |
| `newMapid` / `newVersion` | 新 DWG 的 mapid / version |

### 响应（启用时）

```json
{ "status": true, "path": "download/xxx.dwg" }
```
