From c64122eb194dcdd268eac8e1f15277ebdcab9f79 Mon Sep 17 00:00:00 2001 From: ChenX Date: Fri, 7 Dec 2018 14:33:02 +0800 Subject: [PATCH] =?UTF-8?q?fix=20#IPMHS=20=E4=BC=98=E5=8C=96=E6=8D=95?= =?UTF-8?q?=E6=8D=89=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Editor/PointPick.ts | 6 +++--- src/Editor/SnapServices.ts | 17 +++++++++-------- .../TranstrolControl/TransformServices.ts | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Editor/PointPick.ts b/src/Editor/PointPick.ts index c2847d676..3dfcb65b1 100644 --- a/src/Editor/PointPick.ts +++ b/src/Editor/PointPick.ts @@ -26,11 +26,11 @@ export function GenerateRaycaster(ptVcs: Vector3, view: IViewer): Raycaster * @param {Object3D} [selectObject] 选择的对象. 如果为空则为app.view.scene * @returns {Object3D[]} 返回选择到的对象,注意该返回的对象并不会得到它的子对象. */ -export function PointPick(ptVcs: Vector3, view: IViewer, filter?: Filter, selectObject: Object3D = view.Scene): Object3D[] +export function PointPick(ptVcs: Vector3, view: IViewer, filter?: Filter, selectObjects: Object3D[] = view.Scene.children): Object3D[] { let raycaster = GenerateRaycaster(ptVcs, view); - let intersection = Raycast(raycaster, selectObject.children, filter); + let intersection = Raycast(raycaster, selectObjects, filter); if (intersection.object) return [intersection.object]; @@ -40,7 +40,7 @@ export function PointPick(ptVcs: Vector3, view: IViewer, filter?: Filter, select let maxPt = pCenter.clone().add(selectSize); let selectBox = new SelectBox(view, minPt, maxPt, SelectType.C); - selectBox.Select(selectObject.children, filter); + selectBox.Select(selectObjects, filter); return selectBox.m_SelectList; } diff --git a/src/Editor/SnapServices.ts b/src/Editor/SnapServices.ts index 1d0ba0fb5..586d50fa3 100644 --- a/src/Editor/SnapServices.ts +++ b/src/Editor/SnapServices.ts @@ -3,7 +3,7 @@ import { app } from '../ApplicationServices/Application'; import { arrayRemoveIf } from '../Common/ArrayExt'; import { ColorMaterial } from '../Common/ColorPalette'; import { GetPointPrompt } from '../Common/InputState'; -import { FixIndex } from '../Common/Utils'; +import { FixIndex, GetEntity } from '../Common/Utils'; import { Arc } from '../DatabaseServices/Arc'; import { Curve } from '../DatabaseServices/Curve'; import { Entity } from '../DatabaseServices/Entity'; @@ -20,6 +20,7 @@ import { PromptBlock } from '../UI/DynamicPrompt/PromptBlock'; import { ObjectSnapMode } from './ObjectSnapMode'; import { SelectPick } from './SelectPick'; import { Circle } from '../DatabaseServices/Circle'; +import { PointPick } from './PointPick'; /** * 轴线捕捉模式 @@ -226,12 +227,12 @@ export class SnapServices ) return this.m_LastSnapEntityPoint; - //显示图元列表 - let visEns = app.m_Viewer.VisibleEntitys; + let selectEns = PointPick(vcsP, app.m_Viewer, undefined, app.m_Viewer.VisibleObjects).map(GetEntity).filter(e => e !== undefined); //如果只有切线捕捉 + if (this.SnapModeEnable === ObjectSnapMode.Tan && !this.m_HasBasePoint) - for (let e of visEns) + for (let e of selectEns) { if (e instanceof Circle || e instanceof Arc) { @@ -265,9 +266,9 @@ export class SnapServices if ((mode & this.SnapModeEnable) === 0) continue; - for (let ei = 0, el = visEns.length; ei < el; ei++) + for (let ei = 0, el = selectEns.length; ei < el; ei++) { - let en = visEns[ei]; + let en = selectEns[ei]; if (!en.Id || en.IsErase) continue; let sps = en.GetObjectSnapPoints(mode, wcsP, baseP, viewXform); @@ -289,7 +290,7 @@ export class SnapServices if (mode === ObjectSnapMode.End) for (; ei < el; ei++) { - let en = visEns[ei]; + let en = selectEns[ei]; let sps = en.GetObjectSnapPoints(ObjectSnapMode.End, wcsP, baseP, viewXform); for (let i = 0, l = sps.length; i < l; i++) { @@ -404,7 +405,7 @@ export class SnapServices //#region 最近点捕捉 if (this.SnapModeEnable & ObjectSnapMode.Nea) - for (let en of visEns) + for (let en of selectEns) { if (!en.Id || en.IsErase) continue; diff --git a/src/Editor/TranstrolControl/TransformServices.ts b/src/Editor/TranstrolControl/TransformServices.ts index d6c1cb285..e8e0c4160 100644 --- a/src/Editor/TranstrolControl/TransformServices.ts +++ b/src/Editor/TranstrolControl/TransformServices.ts @@ -53,7 +53,7 @@ export class TransformServicess implements EditorService return; axes.Rest(); - let objs = PointPick(ed.m_MouseCtrl.m_CurMousePointVCS, preView, undefined, axes); + let objs = PointPick(ed.m_MouseCtrl.m_CurMousePointVCS, preView, undefined, axes.children); if (objs.length === 1) { let obj = objs[0];