From d4dc7af85c3b1d6e86b05b2723564e6789b166fb Mon Sep 17 00:00:00 2001 From: ChenX Date: Wed, 10 Jan 2018 16:34:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=8A=A8=E4=BD=9C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Editor/Editor.ts | 5 +++++ src/Editor/GetPointServices.ts | 20 +++++++++++++++++--- src/Editor/PromptResult.ts | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Editor/Editor.ts b/src/Editor/Editor.ts index 00dbdb600..b4b6b504e 100644 --- a/src/Editor/Editor.ts +++ b/src/Editor/Editor.ts @@ -41,6 +41,11 @@ export class Editor app.m_Viewer.m_PreViewer.SerCursorPostion(this.m_MouseCtrl.m_CurMousePointVCS); }) } + //尝试取消当前的操作 + Canel() + { + this.m_GetpointServices.Canel(); + } GetPoint(prompt?: GetPointPrompt, showDyn: boolean = true): Promise { return this.m_GetpointServices.Doit(prompt, showDyn); diff --git a/src/Editor/GetPointServices.ts b/src/Editor/GetPointServices.ts index 440f5754e..eef013657 100644 --- a/src/Editor/GetPointServices.ts +++ b/src/Editor/GetPointServices.ts @@ -53,6 +53,11 @@ export class GetPointServices }); } + Canel() + { + this._return(); + } + //更新当前点事件,统一使用该方法注入其他服务的更新(aop在此方法中注入) UpdateCurPointEvent(pt: Vector3) { @@ -230,6 +235,7 @@ export class GetPointServices //调用promis的回调. protected _return(v?: THREE.Vector3 | string) { + if (!this.promisResolve) return; this.restAppState(); let retValue = new PromptPointResult(); @@ -248,6 +254,8 @@ export class GetPointServices retValue.StringResult = v; } this.promisResolve(retValue); + + this.promisResolve = undefined; } //初始化设置 程序的状态 @@ -262,12 +270,14 @@ export class GetPointServices app.m_Editor.m_InputState = InputState.None; app.m_Viewer.m_PreViewer.ToSelect(); - app.m_Editor.UpdateScreen(); this.removeCalls.forEach(f => f()); this.removeCalls.length = 0; this.noSnapList.clear(); + + app.m_Editor.UpdateScreen(); + app.m_Viewer.m_PreViewer.render(); } //极轴捕捉的线列表 @@ -576,6 +586,9 @@ export class GetDistanceServices return new Promise(async (resolve, reject) => { this.promisResolve = resolve; + + this.removeCalls.push(() => app.m_Editor.Canel()) + let p1 = prompt.BasePoint; if (!p1) { @@ -650,11 +663,12 @@ export class GetDistanceServices { res.Status = PromptStatus.Cancel; } - else if (v instanceof Number) + else if ((typeof v) === "number") { + res.Value = v as number; res.Status = PromptStatus.OK } - else + else if (v instanceof String) { res.Status = PromptStatus.Keyword res.StringResult = v; diff --git a/src/Editor/PromptResult.ts b/src/Editor/PromptResult.ts index ec5e2e78b..435374373 100644 --- a/src/Editor/PromptResult.ts +++ b/src/Editor/PromptResult.ts @@ -49,7 +49,7 @@ export class PromptDistendResult extends PromptResult { return this._value; } - set Value(v) + set Value(v: number) { this._value = v; }