UNPKG

@xeokit/xeokit-sdk

Version:

3D BIM IFC Viewer SDK for AEC engineering applications. Open Source JavaScript Toolkit based on pure WebGL for top performance, real-world coordinates and full double precision

103 lines (92 loc) 3.52 kB
import {AngleMeasurementsControl} from "./AngleMeasurementsControl.js"; import {AngleMeasurementsPlugin} from "./AngleMeasurementsPlugin"; import {PointerLens} from "../../extras/"; import {AngleMeasurement} from "./AngleMeasurement"; /** * Creates {@link AngleMeasurement}s in an {@link AngleMeasurementsPlugin} from mouse input. * * @example * import { Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin, AngleMeasurementsMouseControl, PointerLens } from "xeokit-sdk.es.js"; * * const viewer = new Viewer({ * canvasId: "myCanvas", * }); * * viewer.camera.eye = [-3.93, 2.85, 27.01]; * viewer.camera.look = [4.40, 3.72, 8.89]; * viewer.camera.up = [-0.01, 0.99, 0.039]; * * const xktLoader = new XKTLoaderPlugin(viewer); * * const sceneModel = xktLoader.load({ * id: "myModel", * src: "Duplex.xkt" * }); * * const angleMeasurements = new AngleMeasurementsPlugin(viewer); * * const pointerLens = new PointerLens(viewer); // Create a PointerLens instance * * const angleMeasurementsMouseControl = new AngleMeasurementsMouseControl(angleMeasurements, { * pointerLens: pointerLens, * snapping: true * }); * * angleMeasurementsMouseControl.activate(); */ export class AngleMeasurementsMouseControl extends AngleMeasurementsControl { /** * Creates a new AngleMeasurementsMouseControl. * * @param {AngleMeasurementsPlugin} angleMeasurementsPlugin The AngleMeasurementsPlugin to control. * @param {Object} [cfg] Configuration options. * @param {PointerLens} [cfg.pointerLens] A PointerLens to use for providing a magnified view of the cursor when snapping is enabled. * @param {function} [cfg.canvasToPagePos] Optional function to map canvas-space coordinates to page coordinates. * @param {boolean} [cfg.snapping=true] Whether to initially enable snap-to-vertex and snap-to-edge for this AngleMeasurementsMouseControl. */ constructor(angleMeasurementsPlugin: AngleMeasurementsPlugin, cfg?: { pointerLens?: PointerLens; snapping?: boolean; canvasToPagePos? : Function; }); /** * Gets whether this AngleMeasurementsMouseControl is currently active, responding to input. * * @returns {boolean} True if active, false otherwise. */ get active(): boolean; /** * Sets whether snap-to-vertex and snap-to-edge are enabled for this AngleMeasurementsMouseControl. * * @param {boolean} snapping True to enable snap-to-vertex and snap-to-edge, false to disable. */ set snapping(snapping: boolean); /** * Gets whether snap-to-vertex and snap-to-edge are enabled for this AngleMeasurementsMouseControl. * * @returns {boolean} True if snap-to-vertex and snap-to-edge are enabled, false otherwise. */ get snapping(): boolean; /** * Activates this AngleMeasurementsMouseControl, making it responsive to input. */ activate(): void; /** * Deactivates this AngleMeasurementsMouseControl, making it unresponsive to input. */ deactivate(): void; /** * Resets this AngleMeasurementsMouseControl, destroying any AngleMeasurement under construction. */ reset(): void; /** * Gets the {@link AngleMeasurement} under construction by this AngleMeasurementsMouseControl, if any. * * @returns {null|AngleMeasurement} */ get currentMeasurement() : AngleMeasurement /** * Destroys this AngleMeasurementsMouseControl. */ destroy(): void; }