|
|
|
@ -33,12 +33,17 @@ export class Editor
|
|
|
|
|
this.m_KeyCtrl = new KeyBoardControls();
|
|
|
|
|
this.m_SelectCtrl = new SelectControls(app.m_Viewer, this)
|
|
|
|
|
this.m_CommandStore = new CommandStore(this);
|
|
|
|
|
|
|
|
|
|
xaop.end(this.m_MouseCtrl, this.m_MouseCtrl.onMouseMove, () =>
|
|
|
|
|
{
|
|
|
|
|
app.m_Viewer.m_PreViewer.SerCursorPostion(this.m_MouseCtrl.m_CurMousePointVCS);
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
GetPoint(prompt?: GetPointPrompt): Promise<PromptPointResult>
|
|
|
|
|
{
|
|
|
|
|
prompt = prompt ? prompt : {};
|
|
|
|
|
|
|
|
|
|
this.m_App.m_CursorViewer.ToGetpoint();
|
|
|
|
|
this.m_App.m_Viewer.m_PreViewer.ToGetpoint();
|
|
|
|
|
this.m_InputState = InputState.GetPoint;
|
|
|
|
|
|
|
|
|
|
let retValue = new PromptPointResult();
|
|
|
|
@ -50,25 +55,36 @@ export class Editor
|
|
|
|
|
return new Promise<PromptPointResult>((resolve, reject) =>
|
|
|
|
|
{
|
|
|
|
|
//如果有基点,那么绘制直线
|
|
|
|
|
if (prompt.BasePoint)
|
|
|
|
|
if (prompt.BasePoint && prompt.AllowDrawRubberBand)
|
|
|
|
|
{
|
|
|
|
|
let line = new Line(prompt.BasePoint, prompt.BasePoint);
|
|
|
|
|
|
|
|
|
|
this.m_App.m_Database.appendEntity(line);
|
|
|
|
|
let preView = this.m_App.m_Viewer.m_PreViewer;
|
|
|
|
|
|
|
|
|
|
let drawObj = line.Draw(RenderType.Wireframe);
|
|
|
|
|
let startP = prompt.BasePoint.clone();
|
|
|
|
|
this.m_App.m_Viewer.WorldToScreen(startP);
|
|
|
|
|
preView.ScreenPointToViewerPoint(startP);
|
|
|
|
|
|
|
|
|
|
this.noSnapList.add(drawObj);
|
|
|
|
|
let line = preView.DrawLine(startP, startP, preView.m_DashMaterial);
|
|
|
|
|
let geo = line.geometry as THREE.Geometry;
|
|
|
|
|
geo.computeLineDistances();
|
|
|
|
|
|
|
|
|
|
preView.Scene.add(line);
|
|
|
|
|
removeCalls.push(
|
|
|
|
|
() =>
|
|
|
|
|
{
|
|
|
|
|
this.m_App.m_Database.removeEntityId(line.objectId);
|
|
|
|
|
preView.Scene.remove(line);
|
|
|
|
|
},
|
|
|
|
|
xaop.end(this.m_MouseCtrl, this.m_MouseCtrl.onMouseMove, () =>
|
|
|
|
|
{
|
|
|
|
|
let p = this.GetNowPoint(prompt.BasePoint);
|
|
|
|
|
line.setEndPoint(p);
|
|
|
|
|
let endP = this.GetNowPoint(prompt.BasePoint);
|
|
|
|
|
this.m_App.m_Viewer.WorldToScreen(endP);
|
|
|
|
|
preView.ScreenPointToViewerPoint(endP);
|
|
|
|
|
|
|
|
|
|
geo.vertices[1] = endP;
|
|
|
|
|
geo.computeLineDistances();
|
|
|
|
|
geo.lineDistancesNeedUpdate = true;
|
|
|
|
|
geo.verticesNeedUpdate = true;
|
|
|
|
|
|
|
|
|
|
preView.render();
|
|
|
|
|
this.UpdateScreen();
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
@ -117,7 +133,7 @@ export class Editor
|
|
|
|
|
//返回
|
|
|
|
|
let _return = () =>
|
|
|
|
|
{
|
|
|
|
|
this.m_App.m_CursorViewer.ToSelect();
|
|
|
|
|
this.m_App.m_Viewer.m_PreViewer.ToSelect();
|
|
|
|
|
this.m_InputState = InputState.None;
|
|
|
|
|
|
|
|
|
|
this.noSnapList.clear();
|
|
|
|
@ -145,9 +161,9 @@ export class Editor
|
|
|
|
|
*/
|
|
|
|
|
private GetNowPoint(basePoint?: THREE.Vector3): THREE.Vector3
|
|
|
|
|
{
|
|
|
|
|
if (this.m_App.m_CursorViewer.m_LastSnapPoint)
|
|
|
|
|
if (this.m_App.m_Viewer.m_PreViewer.m_LastSnapPoint)
|
|
|
|
|
{
|
|
|
|
|
let retP = app.m_CursorViewer.ptWcs;
|
|
|
|
|
let retP = app.m_Viewer.m_PreViewer.ptWcs;
|
|
|
|
|
app.m_Viewer.ScreenToWorld(retP);
|
|
|
|
|
return retP;
|
|
|
|
|
}
|
|
|
|
@ -203,14 +219,14 @@ export class Editor
|
|
|
|
|
|
|
|
|
|
if (ptC.distanceToSquared(this.m_MouseCtrl.m_CurMousePointVCS) < 100)
|
|
|
|
|
{
|
|
|
|
|
app.m_CursorViewer.m_LastSnapPoint = ptC;
|
|
|
|
|
app.m_Viewer.m_PreViewer.m_LastSnapPoint = ptC;
|
|
|
|
|
|
|
|
|
|
app.m_CursorViewer.m_LastEntity = obj;
|
|
|
|
|
app.m_CursorViewer.m_LastIndex = i;
|
|
|
|
|
app.m_Viewer.m_PreViewer.m_LastEntity = obj;
|
|
|
|
|
app.m_Viewer.m_PreViewer.m_LastIndex = i;
|
|
|
|
|
|
|
|
|
|
app.m_CursorViewer.SerCursorPostion(ptC);
|
|
|
|
|
app.m_Viewer.m_PreViewer.SerCursorPostion(ptC);
|
|
|
|
|
|
|
|
|
|
app.m_CursorViewer.render();
|
|
|
|
|
app.m_Viewer.m_PreViewer.render();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|