!1063 修复:黏贴时槽位置错误

pull/1063/MERGE
ChenX 4 years ago
parent ace2c429b8
commit 14cd77de44

@ -1,15 +1,16 @@
import { Vector3, Matrix4, Box3 } from "three"; import { Box3, Matrix4, Vector3 } from "three";
import { app } from "../ApplicationServices/Application"; import { app } from "../ApplicationServices/Application";
import { arrayLast } from "../Common/ArrayExt";
import { KeyWord } from "../Common/InputState";
import { inflate } from "../Common/SerializeMaterial"; import { inflate } from "../Common/SerializeMaterial";
import { UpdateDraw } from "../Common/Status";
import { readClipboardText } from "../Common/Utils"; import { readClipboardText } from "../Common/Utils";
import { CADFiler } from "../DatabaseServices/CADFiler"; import { CADFiler } from "../DatabaseServices/CADFiler";
import { Curve } from "../DatabaseServices/Entity/Curve";
import { Entity } from "../DatabaseServices/Entity/Entity"; import { Entity } from "../DatabaseServices/Entity/Entity";
import { JigUtils } from "../Editor/JigUtils"; import { JigUtils } from "../Editor/JigUtils";
import { PromptStatus } from "../Editor/PromptResult"; import { PromptStatus } from "../Editor/PromptResult";
import { arrayLast } from "../Common/ArrayExt";
import { KeyWord } from "../Common/InputState";
import { AsVector3 } from "../Geometry/GeUtils"; import { AsVector3 } from "../Geometry/GeUtils";
import { Curve } from "../DatabaseServices/Entity/Curve";
export class PasteClip export class PasteClip
{ {
@ -83,26 +84,30 @@ export class PasteClip
let m = new Matrix4(); let m = new Matrix4();
const UpdateEntityPosition = (p: Vector3) => const UpdateEntityPosition = (p: Vector3, jig = true) =>
{ {
if (useUCS) if (useUCS)
{ {
let baseP_UCS = AsVector3(basePoint).applyMatrix4(ucsMtx).setZ(0); let baseP_UCS = AsVector3(basePoint).applyMatrix4(ucsMtx).setZ(0);
let p_UCS = p.clone().applyMatrix4(nowUCSInv); let p_UCS = p.clone().applyMatrix4(nowUCSInv);
p_UCS.sub(baseP_UCS); p_UCS.sub(baseP_UCS);
m.setPosition(p_UCS); //ucsMtx->m->nowUCS
for (let [en, ocs] of entityOCSCache) m.identity()
{ .setPosition(p_UCS)
en.OCS = ocs; .multiply(ucsMtx)
en.ApplyMatrix(ucsMtx); .premultiply(nowUCS);
en.ApplyMatrix(m);
en.ApplyMatrix(nowUCS);
}
} }
else else
m.identity().setPosition(p.clone().sub(basePoint));
for (let [en, ocs] of entityOCSCache)
{ {
m.setPosition(p.clone().sub(basePoint)); if (jig)
for (let [en, ocs] of entityOCSCache) {
en.OCS = ocs.clone().premultiply(m);
en.Update(UpdateDraw.Matrix);
}
else
{ {
en.OCS = ocs; en.OCS = ocs;
en.ApplyMatrix(m); en.ApplyMatrix(m);
@ -116,11 +121,11 @@ export class PasteClip
let ptRes = await app.Editor.GetPoint({ let ptRes = await app.Editor.GetPoint({
KeyWordList: keywords, KeyWordList: keywords,
Callback: UpdateEntityPosition Callback: p => UpdateEntityPosition(p, true)
}); });
if (ptRes.Status === PromptStatus.OK) if (ptRes.Status === PromptStatus.OK)
{ {
UpdateEntityPosition(ptRes.Point); UpdateEntityPosition(ptRes.Point, false);
for (let [en] of entityOCSCache) for (let [en] of entityOCSCache)
app.Database.ModelSpace.Append(en); app.Database.ModelSpace.Append(en);
} }

Loading…
Cancel
Save