!965 优化:增强捕捉吸附能力

pull/965/MERGE
ChenX 4 years ago
parent cf57827140
commit ce9e5bd270

@ -20,6 +20,9 @@ export function GenerateRaycaster(ptVcs: Vector3, view: IViewer): Raycaster
return raycaster;
}
let boxSize = new Vector2;
let pCenter = new Vector2;
/**
* .
* @param {Vector3} ptVcs
@ -31,7 +34,9 @@ export function GenerateRaycaster(ptVcs: Vector3, view: IViewer): Raycaster
export function PointPick(ptVcs: Vector3,
view: IViewer,
filter?: Filter,
selectObjects: Object3D[] = view.Scene.children): Object3D[]
selectObjects: Object3D[] = view.Scene.children,
selectSize = 10
): Object3D[]
{
let raycaster = GenerateRaycaster(ptVcs, view);
@ -39,10 +44,10 @@ export function PointPick(ptVcs: Vector3,
if (intersection && intersection.object)
return [intersection.object];
let pCenter = new Vector2(ptVcs.x, ptVcs.y);
let selectSize = new Vector2(10, 10);
let minPt = pCenter.clone().sub(selectSize);
let maxPt = pCenter.clone().add(selectSize);
pCenter.set(ptVcs.x, ptVcs.y);
boxSize.set(selectSize, selectSize);
let minPt = pCenter.clone().sub(boxSize);
let maxPt = pCenter.clone().add(boxSize);
let selectBox = new SelectBox(view, minPt, maxPt, SelectType.C);
selectBox.Select(selectObjects, filter);

@ -244,7 +244,7 @@ export class SnapServices
}
}
let selectEns = PointPick(vcsP, app.Viewer, { filterErase: this.FilterErase }).map(GetEntity);
let selectEns = PointPick(vcsP, app.Viewer, { filterErase: this.FilterErase }, app.Viewer.Scene.children, this.SnapSize).map(GetEntity);
let viewXform = new Matrix3().setFromMatrix4(app.Viewer.Camera.matrix);
@ -325,7 +325,7 @@ export class SnapServices
//#region 捕捉交点
if (this.SnapModeEnable & ObjectSnapMode.Int)
{
let sel = new SelectPick(app.Viewer, vcsP);
let sel = new SelectPick(app.Viewer, vcsP, this.SnapSize);
sel.Select(app.Viewer.VisibleObjects, { filterTypes: [Curve], filterErase: true });
let cus = sel.SelectEntityList as Curve[];
@ -397,7 +397,7 @@ export class SnapServices
snapData.Point = p;
snapData.Entitys = this.GetSupportEntity(mode, en, baseP, p, pIndex);
}
else if (dist < this.SnapSize && dist < minDistance)
else if (dist < 2 * this.SnapSize ** 2 && dist < minDistance)
{
minZ = z;
minDistance = dist;

Loading…
Cancel
Save