mirror of https://gitee.com/cf-fz/WebCAD.git
parent
ac4538befa
commit
b1157be129
@ -0,0 +1,49 @@
|
|||||||
|
import { Matrix4, Vector3 } from "three";
|
||||||
|
import { app } from "../ApplicationServices/Application";
|
||||||
|
import { Entity } from "../DatabaseServices/Entity/Entity";
|
||||||
|
import { PromptStatus } from "../Editor/PromptResult";
|
||||||
|
|
||||||
|
export async function JigMoveEntity(entitys: Entity[]): Promise<Matrix4 | undefined>
|
||||||
|
{
|
||||||
|
let pos = new Vector3();
|
||||||
|
let mtx = new Matrix4();
|
||||||
|
let baseP = new Vector3();
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
let ptRes = await app.Editor.GetPoint({
|
||||||
|
Msg: "点取位置",
|
||||||
|
KeyWordList: [{ key: "B", msg: "基点" }],
|
||||||
|
Callback: (p: Vector3) =>
|
||||||
|
{
|
||||||
|
mtx.setPosition(p.clone().sub(pos));
|
||||||
|
for (let e of entitys)
|
||||||
|
e.ApplyMatrix(mtx);
|
||||||
|
pos.copy(p);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (ptRes.Status === PromptStatus.Keyword)
|
||||||
|
{
|
||||||
|
app.Editor.GetPointServices.snapServices.FilterErase = false;
|
||||||
|
let baseRes = await app.Editor.GetPoint({ Msg: "点取新基点:" });
|
||||||
|
app.Editor.GetPointServices.snapServices.FilterErase = true;
|
||||||
|
if (baseRes.Status === PromptStatus.OK)
|
||||||
|
{
|
||||||
|
let p = baseRes.Point;
|
||||||
|
baseP.add(p).sub(pos);
|
||||||
|
pos = p;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (ptRes.Status === PromptStatus.OK)
|
||||||
|
{
|
||||||
|
mtx.setPosition(ptRes.Point.sub(pos));
|
||||||
|
for (let e of entitys)
|
||||||
|
e.ApplyMatrix(mtx);
|
||||||
|
|
||||||
|
mtx.setPosition(ptRes.Point.sub(baseP));
|
||||||
|
return mtx;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue