|
|
@ -1,14 +1,15 @@
|
|
|
|
import hotkeys from 'hotkeys-js-ext';
|
|
|
|
import hotkeys from 'hotkeys-js-ext';
|
|
|
|
import { BufferGeometry, Intersection, Light, Line, Vector3 } from 'three';
|
|
|
|
import { BufferGeometry, Intersection, Light, Line, Object3D, Vector3 } from 'three';
|
|
|
|
import * as xaop from 'xaop';
|
|
|
|
import * as xaop from 'xaop';
|
|
|
|
import { end } from 'xaop';
|
|
|
|
import { end } from 'xaop';
|
|
|
|
import { app } from '../ApplicationServices/Application';
|
|
|
|
import { app } from '../ApplicationServices/Application';
|
|
|
|
import { HostApplicationServices } from '../ApplicationServices/HostApplicationServices';
|
|
|
|
import { HostApplicationServices } from '../ApplicationServices/HostApplicationServices';
|
|
|
|
import { ColorMaterial } from '../Common/ColorPalette';
|
|
|
|
import { ColorMaterial } from '../Common/ColorPalette';
|
|
|
|
import { DisposeThreeObj } from '../Common/Dispose';
|
|
|
|
import { DisposeThreeObj } from '../Common/Dispose';
|
|
|
|
|
|
|
|
import { safeEval } from '../Common/eval';
|
|
|
|
import { InputState, KeyWord, MenuDividerKWD } from '../Common/InputState';
|
|
|
|
import { InputState, KeyWord, MenuDividerKWD } from '../Common/InputState';
|
|
|
|
import { KeyBoard, MouseKey } from '../Common/KeyEnum';
|
|
|
|
import { KeyBoard, MouseKey } from '../Common/KeyEnum';
|
|
|
|
import { safeEval } from '../Common/eval';
|
|
|
|
import { Entity } from '../DatabaseServices/Entity/Entity';
|
|
|
|
import { BufferGeometryUtils } from '../Geometry/BufferGeometryUtils';
|
|
|
|
import { BufferGeometryUtils } from '../Geometry/BufferGeometryUtils';
|
|
|
|
import { isParallelTo } from '../Geometry/GeUtils';
|
|
|
|
import { isParallelTo } from '../Geometry/GeUtils';
|
|
|
|
import { CursorMode } from '../GraphicsSystem/Cursor';
|
|
|
|
import { CursorMode } from '../GraphicsSystem/Cursor';
|
|
|
@ -23,7 +24,8 @@ import { ObjectSnapMode } from './ObjectSnapMode';
|
|
|
|
import { GenerateRaycaster, Raycast } from './PointPick';
|
|
|
|
import { GenerateRaycaster, Raycast } from './PointPick';
|
|
|
|
import { GetPointPrompt } from "./PromptOptions";
|
|
|
|
import { GetPointPrompt } from "./PromptOptions";
|
|
|
|
import { PromptPointResult, PromptStatus } from './PromptResult';
|
|
|
|
import { PromptPointResult, PromptStatus } from './PromptResult';
|
|
|
|
import { SNAPMODE, SnapMenuKW } from './ShowSnapMenu';
|
|
|
|
import { Filter } from './SelectFilter';
|
|
|
|
|
|
|
|
import { SnapMenuKW, SNAPMODE } from './ShowSnapMenu';
|
|
|
|
import { SnapServices } from './SnapServices';
|
|
|
|
import { SnapServices } from './SnapServices';
|
|
|
|
|
|
|
|
|
|
|
|
const MinP = new Vector3(-2e6, -2e6, -2e6);
|
|
|
|
const MinP = new Vector3(-2e6, -2e6, -2e6);
|
|
|
@ -175,7 +177,20 @@ export class GetPointServices implements EditorService
|
|
|
|
if (this._prompt.RaycastPreExecFunc) this._prompt.RaycastPreExecFunc();
|
|
|
|
if (this._prompt.RaycastPreExecFunc) this._prompt.RaycastPreExecFunc();
|
|
|
|
|
|
|
|
|
|
|
|
let raycaster = GenerateRaycaster(app.Editor.MouseCtrl._CurMousePointVCS, app.Viewer);
|
|
|
|
let raycaster = GenerateRaycaster(app.Editor.MouseCtrl._CurMousePointVCS, app.Viewer);
|
|
|
|
this.intersection = Raycast(raycaster, app.Viewer.VisibleObjects, { filterFunction: (obj, ent) => { return obj.visible && ent && ent.Id && !ent.Id.IsErase && !(ent instanceof Light); } });
|
|
|
|
let filterFunction = (obj: Object3D, ent: Entity) => obj.visible && ent && ent.Id && !ent.Id.IsErase && !(ent instanceof Light);
|
|
|
|
|
|
|
|
let filter: Filter = { filterFunction };
|
|
|
|
|
|
|
|
if (this._prompt.RaycastFilter)
|
|
|
|
|
|
|
|
filter = {
|
|
|
|
|
|
|
|
...this._prompt.RaycastFilter,
|
|
|
|
|
|
|
|
filterFunction: (obj, ent) =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (this._prompt.RaycastFilter.filterFunction)
|
|
|
|
|
|
|
|
return this._prompt.RaycastFilter.filterFunction(obj, ent) && filterFunction(obj, ent);
|
|
|
|
|
|
|
|
return filterFunction(obj, ent);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.intersection = Raycast(raycaster, app.Viewer.VisibleObjects, filter);
|
|
|
|
if (this.intersection?.point)
|
|
|
|
if (this.intersection?.point)
|
|
|
|
app.Editor.MouseCtrl._CurMousePointWCS.copy(this.intersection.point);
|
|
|
|
app.Editor.MouseCtrl._CurMousePointWCS.copy(this.intersection.point);
|
|
|
|
}
|
|
|
|
}
|
|
|
|