酷家乐插入后进行动态移动

pull/493/head
ChenX 5 years ago
parent ac4538befa
commit b1157be129

@ -2,6 +2,7 @@ import { Euler, Matrix4, Vector2, Vector3 } from "three";
import { app } from "../ApplicationServices/Application"; import { app } from "../ApplicationServices/Application";
import { EBoardKeyList } from "../Common/BoardKeyList"; import { EBoardKeyList } from "../Common/BoardKeyList";
import { FileSystem } from "../Common/FileSystem"; import { FileSystem } from "../Common/FileSystem";
import { JigMoveEntity } from "../Common/JigMove";
import { FixIndex, ToFixed } from "../Common/Utils"; import { FixIndex, ToFixed } from "../Common/Utils";
import { Board, BoardType } from "../DatabaseServices/Entity/Board"; import { Board, BoardType } from "../DatabaseServices/Entity/Board";
import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude"; import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude";
@ -118,6 +119,13 @@ export class Command_KJLImport implements Command
let gName = m.modelBrandGoodName; let gName = m.modelBrandGoodName;
ParseModel(m, roomName, gName); ParseModel(m, roomName, gName);
} }
let ens = app.CommandReactor._createObejcts.filter(obj => obj instanceof Board) as Board[];
if (ens.length === 0)
return true;
let ok = await JigMoveEntity(ens);
return !ok;
} }
} }
} }

@ -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;
}
}

@ -9,8 +9,8 @@ type CommandEndListener = (cmdName: string, changeObjects: CADObject[], createOb
export class CommandReactor export class CommandReactor
{ {
private _cmdName: string; _cmdName: string;
private _createObejcts: CADObject[] = []; _createObejcts: CADObject[] = [];
constructor(private app: ApplicationService) constructor(private app: ApplicationService)
{ {
begin(commandMachine, commandMachine.CommandStart, (cmdName: string) => begin(commandMachine, commandMachine.CommandStart, (cmdName: string) =>

Loading…
Cancel
Save