line-arc-circle
本文回答:
LineEnt(p1, p2)/CircleEnt(center, radius)/ArcEnt(center, radius, startAng, endAng);圆弧也支持arc.initBy3Pt(p1, p2, p3)三点构造。RayEnt(start, angle)是单向射线、XLineEnt(point, angle)是双向构造线。
一、Line
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
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
// 圆心 + 半径 + 起止角(弧度)
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
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。
五、变换
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/。
反例
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