|
|
|
@ -3,6 +3,7 @@ import * as THREE from 'three';
|
|
|
|
|
import { app } from '../ApplicationServices/Application';
|
|
|
|
|
import { Command } from '../Editor/CommandMachine';
|
|
|
|
|
import { PromptStatus } from '../Editor/PromptResult';
|
|
|
|
|
import { Matrix4 } from 'three';
|
|
|
|
|
|
|
|
|
|
export class Command_Rotate implements Command
|
|
|
|
|
{
|
|
|
|
@ -20,12 +21,15 @@ export class Command_Rotate implements Command
|
|
|
|
|
{ return; }
|
|
|
|
|
|
|
|
|
|
let pt1 = ptRes.Value;
|
|
|
|
|
let ucsInv = new Matrix4().getInverse(app.m_Editor.UCSMatrix);
|
|
|
|
|
let pt1Ucs = pt1.clone().applyMatrix4(ucsInv);
|
|
|
|
|
app.m_Editor.m_CommandStore.Prompt("请输入第二个点:");
|
|
|
|
|
let an = 0;
|
|
|
|
|
ptRes = await app.m_Editor.GetPoint({
|
|
|
|
|
Callback: (p: THREE.Vector3) =>
|
|
|
|
|
{
|
|
|
|
|
let rov = p.clone().sub(pt1);
|
|
|
|
|
let pInv = p.clone().applyMatrix4(ucsInv);
|
|
|
|
|
let rov = pInv.sub(pt1Ucs);
|
|
|
|
|
let newan = Math.atan2(rov.y, rov.x);
|
|
|
|
|
if (!newan)
|
|
|
|
|
{
|
|
|
|
@ -38,7 +42,7 @@ export class Command_Rotate implements Command
|
|
|
|
|
moveMatInv.getInverse(moveMat);
|
|
|
|
|
|
|
|
|
|
let roMat = new THREE.Matrix4();
|
|
|
|
|
roMat.makeRotationAxis(new THREE.Vector3(0, 0, 1), newan - an);
|
|
|
|
|
roMat.makeRotationAxis(new THREE.Vector3(0, 0, 1).applyMatrix4(app.m_Editor.UCSMatrix), newan - an);
|
|
|
|
|
|
|
|
|
|
app.m_Viewer.m_OutlinePass.selectedObjects.forEach(o =>
|
|
|
|
|
{
|
|
|
|
|