> **本文回答**：`LineEnt(p1, p2)` / `CircleEnt(center, radius)` / `ArcEnt(center, radius, startAng, endAng)`；圆弧也支持 `arc.initBy3Pt(p1, p2, p3)` 三点构造。`RayEnt(start, angle)` 是单向射线、`XLineEnt(point, angle)` 是双向构造线。

## 一、Line

```js
const line = new LineEnt([0, 0], [100, 100]);
line.setDefaults();
Engine.addEntities(line);

console.log(line.Length);  // 长度（注意首字母大写 L，按示例）
```

MCP 参考：`vjcad/doc/guide/quick-start.md`、`vjcad/example/entity/line/01create.js`、`02properties.js`、`vjcad/example/input/02getpointwithbase.js`（用了 `line.Length`）。

> 文档与示例：`vjcad/doc/entity/line-ent.md` 是详尽 API；常用属性 `length`、`startPoint`、`endPoint`，颜色 `color`，按示例显示属性 `Length` 也可用。

## 二、Circle

```js
const circle = new CircleEnt([50, 50], 30);
circle.setDefaults();
Engine.addEntities(circle);

console.log(circle.center, circle.radius);
```

MCP 参考：`vjcad/doc/guide/quick-start.md`、`vjcad/example/entity/circle/01create.js` ～ `03transform.js`、`vjcad/doc/entity/circle-ent.md`。

## 三、Arc

```js
// 圆心 + 半径 + 起止角（弧度）
const arc = new ArcEnt([100, 100], 50, 0, Math.PI / 2);
arc.setDefaults();
Engine.addEntities(arc);

console.log(arc.startPoint, arc.endPoint, arc.length);

// 三点定弧（initBy3Pt 收 Point2D 对象，不是数组——传数组会因缺 .x/.y 得到 NaN）
const arc2 = new ArcEnt();
arc2.initBy3Pt(new Point2D(0, 0), new Point2D(50, 50), new Point2D(100, 0));
arc2.setDefaults();
Engine.addEntities(arc2);
```

MCP 参考：`vjcad/doc/guide/quick-start.md`、`vjcad/example/entity/arc/01create.js`、`02by3points.js`、`03properties.js`、`04transform.js`、`vjcad/doc/entity/arc-ent.md`。

## 四、Ray / XLine

```js
const ray   = new RayEnt([100, 0], 0);          // 单向射线，水平向右
const xline = new XLineEnt([100, 0], Math.PI/2); // 双向构造线，垂直
ray.setDefaults();
xline.setDefaults();
Engine.addEntities([ray, xline]);
```

MCP 参考：`vjcad/example/entity/all/01entities.js`、`vjcad/example/entity/ray/01create.js` ~ `02transform.js`、`vjcad/example/entity/xline/01create.js` ~ `02grid.js`、`vjcad/doc/entity/ray-xline-ent.md`。

## 五、变换

```js
ent.move([0, 0], [10, 0]);            // 平移
ent.rotate([cx, cy], Math.PI / 6);    // 绕点旋转
ent.scale([cx, cy], 2);               // 缩放
ent.mirror([0, 0], [1, 0]);           // 镜像（沿 x 轴）
```

详见 [edit/](../edit/overview.md)。

## 反例

- `ArcEnt(center, radius, 0, 90)` 把 90 当度数：`startAng / endAng` 是**弧度**。用 `Math.PI/2` 表示 90°。
- `new RayEnt([0, 0], [1, 0])` 把第二参当方向向量：实际是 `angle`（弧度）。
- 没 `setDefaults()` 直接 `Engine.addEntities`：颜色、图层、线型等不会被默认填充。

## 参考（官方文档 MCP）

- 文档：`vjcad/doc/entity/line-ent.md`、`vjcad/doc/entity/circle-ent.md`、`vjcad/doc/entity/arc-ent.md`、`vjcad/doc/entity/ray-xline-ent.md`、`vjcad/doc/guide/quick-start.md`
- 示例：`vjcad/example/entity/line/01create.js` ~ `04color.js`、`vjcad/example/entity/circle/01create.js` ~ `03transform.js`、`vjcad/example/entity/arc/01create.js` ~ `04transform.js`、`vjcad/example/entity/ray/01create.js` ~ `02transform.js`、`vjcad/example/entity/xline/01create.js` ~ `02grid.js`
