唯杰地图 logo唯杰地图
VJMAP
EN

spline-ellipse

vjcad/references/entity/spline-ellipse.md 3.1 KB79 行
原文

本文回答:SplineEnt 用 setControlPoints([...]) 设控制点(也支持拟合点 / 闭合 / 权重),EllipseEnt(center, major, minor, rotation) 构造椭圆;椭圆弧通过同一个 EllipseEnt 加 startAngle / endAngle 完成。

一、Spline(控制点)

const sp = new SplineEnt();
sp.setControlPoints([
  [-45, 0],
  [-15, 28],
  [ 15, -28],
  [ 45, 0]
]);
sp.setDefaults();
sp.color = 6;
Engine.addEntities(sp);

MCP 参考:vjcad/example/entity/all/01entities.js、vjcad/example/entity/spline/01create.js。

二、Spline(闭合 / 权重 / 拟合点)

想要的 示例
闭合 vjcad/example/entity/spline/02closed.js
带权重的控制点(NURBS 影响曲线形状) vjcad/example/entity/spline/03weight.js
拟合点(曲线精确经过指定点) vjcad/example/entity/spline/05fitpoints.js

具体 API 请按 vjcad/doc/entity/spline-ent.md 与对应示例查阅。⚠️ SplineEnt 没有 setWeights——权重用 setControlPoints([[x, y], weight] 混合格式或 getControlPointWithWeight/getControlPointsWithWeight;闭合相关只有只读 getter isClosed / endPtIsClosed / areaIsClosed(无 setter,闭合要在创建/编辑 API 里处理——可设闭合的是 PolylineEnt.isClosed/closed/setClosed)。⚠️ 空 SplineEnt(无控制点/拟合点)上读这些闭合 getter 抛 TypeError: Cannot read properties of undefined (reading 'point2d')——内部 spline 对象未初始化;须先 setControlPoints/setFitPoints 再读。

三、Ellipse(椭圆)

// 完整椭圆
const e = new EllipseEnt(
  [cx, cy],
  45,           // 长半轴
  22,           // 短半轴
  Math.PI / 6   // 旋转(弧度)
);
e.setDefaults();
Engine.addEntities(e);

四、Ellipse(椭圆弧)

const arc = new EllipseEnt([cx, cy], 40, 20, 0);
arc.startAngle = 0;
arc.endAngle   = Math.PI * 1.2;
arc.setDefaults();
Engine.addEntities(arc);

MCP 参考:vjcad/example/entity/all/01entities.js、vjcad/example/entity/ellipse/01create.js、02arc.js。

五、变换

SplineEnt / EllipseEnt 都继承 EntityBase,通用变换方法:

ent.move(from, to);
ent.rotate(center, angle);
ent.scale(center, factor);
ent.mirror(p1, p2);

详见 edit/,对应示例 vjcad/example/entity/spline/04transform.js、vjcad/example/entity/ellipse/03transform.js。

反例

  • setControlPoints 之后又 addControlPoint:注意是否双倍添加(按你的 SDK 版本验证)。
  • 椭圆参数顺序写反:new EllipseEnt(center, minor, major, ...) 会得到一个"竖椭圆"(看上去和你预期不同)。
  • 椭圆弧用 start / end 度数:是弧度。

参考(官方文档 MCP)

  • 文档:vjcad/doc/entity/spline-ent.md、vjcad/doc/entity/ellipse-ent.md
  • 示例:vjcad/example/entity/spline/01create.js~05fitpoints.js、vjcad/example/entity/ellipse/01create.js~03transform.js、vjcad/example/entity/all/01entities.js