diff --git a/src/Add-on/Move.ts b/src/Add-on/Move.ts index c3910870f..228034b05 100644 --- a/src/Add-on/Move.ts +++ b/src/Add-on/Move.ts @@ -1,6 +1,7 @@ import * as THREE from 'three'; import { app } from '../ApplicationServices/Application'; +import { Entity } from '../DatabaseServices/Entity'; import { Command } from '../Editor/CommandMachine'; import { PromptStatus } from '../Editor/PromptResult'; import { SelectSet } from '../Editor/SelectSet'; @@ -32,7 +33,10 @@ export class Command_Move implements Command selectList.forEach(o => { - o.applyMatrix(moveMat); + if (o.userData && o.userData instanceof Entity) + o.userData.ApplyMatrix(moveMat) + else + o.applyMatrix(moveMat); }) pt1 = p.clone(); diff --git a/src/DatabaseServices/Circle.ts b/src/DatabaseServices/Circle.ts index bef6b5d91..7bf417858 100644 --- a/src/DatabaseServices/Circle.ts +++ b/src/DatabaseServices/Circle.ts @@ -1,4 +1,4 @@ -import { EllipseCurve, Geometry, Vector3 } from 'three'; +import { EllipseCurve, Geometry, Matrix4, Vector3 } from 'three'; import * as THREE from 'three'; import { ColorMaterial } from '../Common/ColorPalette'; @@ -80,6 +80,14 @@ export class Circle extends Entity geo.computeBoundingSphere(); } } + + ApplyMatrix(m: Matrix4) + { + super.ApplyMatrix(m); + this.m_Center.applyMatrix4(m); + this.Update(); + } + GetSnapPoints(): Array { return this.GetStretchPoints(); diff --git a/src/DatabaseServices/Entity.ts b/src/DatabaseServices/Entity.ts index af9ce2d39..74606fafb 100644 --- a/src/DatabaseServices/Entity.ts +++ b/src/DatabaseServices/Entity.ts @@ -1,5 +1,6 @@ //所有图元的基类 import * as THREE from 'three'; +import { Matrix4 } from 'three'; import { RenderType } from '../GraphicsSystem/Enum'; import { Factory } from './CADFactory'; @@ -67,6 +68,11 @@ export class Entity extends CADObject this.updateVisible(); } + ApplyMatrix(m: Matrix4) + { + + } + GetSnapPoints(): Array { return [];