mirror
本文回答:镜像 =
entity.mirror(p1, p2),p1 / p2用new Point2D(x, y)定义镜像直线。命令版MIRROR,可选删除 / 保留原对象。
一、最小用法
const shape = new PolylineEnt();
shape.addVertex([20, 20]);
shape.addVertex([60, 20]);
shape.addVertex([60, 60]);
shape.addVertex([40, 80]);
shape.addVertex([20, 60]);
shape.isClosed = true;
shape.setDefaults();
shape.color = 1;
Engine.addEntities(shape);
// 沿垂直线 X=100 镜像
const m1 = shape.clone();
m1.mirror(new Point2D(100, 0), new Point2D(100, 100));
m1.color = 3;
// 沿水平线 Y=0 镜像
const m2 = shape.clone();
m2.mirror(new Point2D(0, 0), new Point2D(200, 0));
m2.color = 4;
Engine.addEntities([m1, m2]);
Engine.regen();
MCP 参考:vjcad/example/edit/05mirror.js。
二、画镜像线提示
const mirrorLine = new LineEnt([100, 0], [100, 100]);
mirrorLine.setDefaults();
mirrorLine.color = 5;
mirrorLine.lineType = 'CENTER'; // 中心线
Engine.addEntities(mirrorLine);
三、命令版
命令: MIRROR
选择对象: <选择图形>
指定镜像线的第一点: <点击>
指定镜像线的第二点: <点击>
是否删除源对象? [是(Y)/否(N)] <N>: <选择>
MCP 参考:vjcad/doc/edit/edit-commands.md。
反例
- 对标注 /
MLeaderEnt写mirror([0, 0], [100, 0]):标注族的 mirror/move/rotate/scale 只收Point2D,传数组得到 NaN 坐标(基础实体传数组没问题,内部会toPoint2D)。 - 镜像线两点重合:得到不可预期的结果。
- 没
clone()直接mirror:原图被替换,不是新增。
参考(官方文档 MCP)
- 文档:
vjcad/doc/edit/index.md、vjcad/doc/edit/edit-commands.md - 示例:
vjcad/example/edit/05mirror.js