> **本文回答**：修订云线 REVCLOUD —— 用边缘圆弧表示审阅标记区域。

## 一、通过命令绘制

修订云线有专门的命令 `REVCLOUD`：

```js
mapcadLayer.executeCommand('REVCLOUD');
```

用户交互：**先问弧长**（输入数字或图上拾取两点，直接回车保留当前值），再逐点点击顶点；`U` 撤上一个顶点，`C` 闭合并完成，`Enter`/`Esc` 按当前点收尾为**开口**云线。结果是一条带 bulge 的 `PolylineEnt`（命令内强制 `fillOpacity = 0`）。弧长由 `RevcloudCommand.arcLength`（静态，默认 50，CAD 单位）控制，生成的弧 bulge 固定为 1（半圆）。

## 二、程序化生成

以任意闭合路径生成云线：

```js
const basePoly = [[0,0],[200,0],[200,120],[0,120]];
const cloud = new vjmapext.PolylineEnt([], true);
// 折线控制点 → bulgePoints（每条边细分为若干半圆弧）
cloud.bulgePoints = vjmapext.generateRevcloudBulgePoints(basePoly, {
  arcLength: 20,           // 每段弧长（CAD 单位），越小弧越密
  bulge: 1,                // 弧凸度，1=半圆（默认）
  isClosed: true
});
cloud.color = 0xff4444;
cloud.lineWidth = 2;
mapcadLayer.addEntity(cloud);
```

`generateRevcloudBulgePoints(pathPoints, options?)` 是真实导出（`vjmapext.generateRevcloudBulgePoints`），`RevcloudOptions = { arcLength?, bulge?, isClosed? }`——返回值可直接赋给 `bulgePoints`。

## 三、手工构造（小弧段）

```js
function revcloud(pts, arcLen = 15) {
  const out = [], bulges = [];
  const n = pts.length;
  for (let i = 0; i < n; i++) {
    const p1 = pts[i];
    const p2 = pts[(i + 1) % n];
    const dx = p2[0] - p1[0], dy = p2[1] - p1[1];
    const len = Math.hypot(dx, dy);
    const count = Math.max(1, Math.round(len / arcLen));
    for (let k = 0; k < count; k++) {
      const t1 = k / count, t2 = (k + 1) / count;
      out.push([p1[0] + dx * t1, p1[1] + dy * t1]);
      bulges.push(0.5);        // 固定鼓出 0.5
    }
  }
  return { points: out, bulges };
}

const { points, bulges } = revcloud([[0,0],[300,0],[300,200],[0,200]], 25);
const poly = new vjmapext.PolylineEnt();
points.forEach((p, i) => poly.addVertex(p, bulges[i]));
poly.isClosed = true;
poly.color = 0xff0000;
mapcadLayer.addEntity(poly);
```

## 四、场景

- 图纸审阅的修改区域标记
- 关注区域高亮
- 变更点包围框

## 五、与普通 Polyline 差异

本质还是 `PolylineEnt`，只是每段都带正向 bulge → 每段是一个小弧；视觉像"云朵边缘"。

## 六、参数调节

| 参数 | 建议 |
|---|---|
| `arcLength` | 10–40（单位同图纸） |
| `bulge` | 0.3–0.7；过大弧过圆，过小近似直线 |
| `lineWidth` | 1.5–3，粗一点显得醒目 |
| 颜色 | 通常红色 `0xff0000` |

## 七、常见坑

1. **bulge 正负交替** → 弧段内凸外凹，不像云；保持同号。
2. **arcLength 过大** → 边数太少，像锯齿；应小于边长的 1/3。
3. **尝试用纯 `bulges: [0.5, 0.5, ...]` 对原始矩形 4 边** → 只有 4 个大弧，不是云线；要细分每条边。
4. **性能**：细分过密会顶点爆炸；建议 arcLength ≥ 10。
