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