fix #IPMHS 优化捕捉性能

pull/214/MERGE
ChenX 6 years ago
parent ddae4d616d
commit c64122eb19

@ -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;
}

@ -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;

@ -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];

Loading…
Cancel
Save