|
|
@ -1,10 +1,10 @@
|
|
|
|
import { Command } from '../Editor/CommandMachine';
|
|
|
|
import { Command } from '../Editor/CommandMachine';
|
|
|
|
import { app } from '../ApplicationServices/Application';
|
|
|
|
import { app } from '../ApplicationServices/Application';
|
|
|
|
import * as THREE from 'three';
|
|
|
|
import * as THREE from 'three';
|
|
|
|
import { Line, Solid3d } from '../DatabaseServices/Entity';
|
|
|
|
import { Circle, Line, Solid3d } from '../DatabaseServices/Entity';
|
|
|
|
import * as _ from 'lodash';
|
|
|
|
import * as _ from 'lodash';
|
|
|
|
import { UndoData } from '../DatabaseServices/UndoData';
|
|
|
|
import { UndoData } from '../DatabaseServices/UndoData';
|
|
|
|
import { PromptStatus } from '../Editor/PromptResult';
|
|
|
|
import { PromptResult, PromptStatus } from '../Editor/PromptResult';
|
|
|
|
import * as ReactDOM from 'react-dom';
|
|
|
|
import * as ReactDOM from 'react-dom';
|
|
|
|
import { GeUtils } from "../Geometry/GeUtils";
|
|
|
|
import { GeUtils } from "../Geometry/GeUtils";
|
|
|
|
import { RenderType } from '../GraphicsSystem/Enum';
|
|
|
|
import { RenderType } from '../GraphicsSystem/Enum';
|
|
|
@ -73,7 +73,7 @@ export class DrawBox implements Command
|
|
|
|
let box = new Solid3d(100, 100, 100);
|
|
|
|
let box = new Solid3d(100, 100, 100);
|
|
|
|
let obj = app.m_Viewer.drawTempEntity(box);
|
|
|
|
let obj = app.m_Viewer.drawTempEntity(box);
|
|
|
|
obj.position.copy(app.m_Editor.m_MouseCtrl.m_CurMousePointWCS);
|
|
|
|
obj.position.copy(app.m_Editor.m_MouseCtrl.m_CurMousePointWCS);
|
|
|
|
app.m_Viewer.m_bNeedUpdate=true;
|
|
|
|
app.m_Viewer.m_bNeedUpdate = true;
|
|
|
|
let pt = await app.m_Editor.GetPoint(
|
|
|
|
let pt = await app.m_Editor.GetPoint(
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Callback: (pt: THREE.Vector3) =>
|
|
|
|
Callback: (pt: THREE.Vector3) =>
|
|
|
@ -118,3 +118,105 @@ void main() {
|
|
|
|
app.m_Database.appendEntity(box);
|
|
|
|
app.m_Database.appendEntity(box);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export class DrawRect implements Command
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
async exec()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let p1: THREE.Vector3;
|
|
|
|
|
|
|
|
let p2: THREE.Vector3;
|
|
|
|
|
|
|
|
let ptRes = await app.m_Editor.GetPoint();
|
|
|
|
|
|
|
|
if (ptRes.Status != PromptStatus.OK)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
p1 = ptRes.Value;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let box: THREE.Box3 = new THREE.Box3();
|
|
|
|
|
|
|
|
let l1 = new Line(p1.clone(), p1.clone());
|
|
|
|
|
|
|
|
let l2 = new Line(p1.clone(), p1.clone());
|
|
|
|
|
|
|
|
let l3 = new Line(p1.clone(), p1.clone());
|
|
|
|
|
|
|
|
let l4 = new Line(p1.clone(), p1.clone());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.m_Viewer.drawTempEntity(l1);
|
|
|
|
|
|
|
|
app.m_Viewer.drawTempEntity(l2);
|
|
|
|
|
|
|
|
app.m_Viewer.drawTempEntity(l3);
|
|
|
|
|
|
|
|
app.m_Viewer.drawTempEntity(l4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let updateRect = (p1, p2) =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
box.setFromPoints([p2, p1]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let px1 = box.min;
|
|
|
|
|
|
|
|
let px3 = box.max;
|
|
|
|
|
|
|
|
let px2 = new THREE.Vector3(px3.x, px1.y);
|
|
|
|
|
|
|
|
let px4 = new THREE.Vector3(px1.x, px3.y);
|
|
|
|
|
|
|
|
l1.setStartPoint(px1);
|
|
|
|
|
|
|
|
l1.setEndPoint(px2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l2.setStartPoint(px2);
|
|
|
|
|
|
|
|
l2.setEndPoint(px3);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l3.setStartPoint(px3);
|
|
|
|
|
|
|
|
l3.setEndPoint(px4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l4.setStartPoint(px1);
|
|
|
|
|
|
|
|
l4.setEndPoint(px4);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ptRes = await app.m_Editor.GetPoint({
|
|
|
|
|
|
|
|
Callback: (p) =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
updateRect(p, p1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
if (ptRes.Status != PromptStatus.OK)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
app.m_Database.appendEntity(l1);
|
|
|
|
|
|
|
|
app.m_Database.appendEntity(l2);
|
|
|
|
|
|
|
|
app.m_Database.appendEntity(l3);
|
|
|
|
|
|
|
|
app.m_Database.appendEntity(l4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export class DrawCircle implements Command
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
async exec()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let cir = new Circle(app.m_Editor.m_MouseCtrl.m_CurMousePointWCS, 10);
|
|
|
|
|
|
|
|
app.m_Editor.UpdateScreen();
|
|
|
|
|
|
|
|
let ptRes = await app.m_Editor.GetPoint({
|
|
|
|
|
|
|
|
Callback: (p) =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cir.Center = p;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
if (ptRes.Status != PromptStatus.OK)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
app.m_Viewer.drawTempEntity(cir);
|
|
|
|
|
|
|
|
ptRes = await app.m_Editor.GetPoint(
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Callback: (p) =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cir.Radius = p.distanceTo(cir.m_Center);
|
|
|
|
|
|
|
|
console.log('cir.Radius: ', cir.m_Radius);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ptRes.Status == PromptStatus.OK)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
app.m_Database.appendEntity(cir);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|