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

183 lines (156 loc) 5.67 kB
import { Entity, Plugin, Viewer } from "../../viewer"; import { AngleMeasurement } from "./AngleMeasurement"; import { AngleMeasurementsControl } from "./AngleMeasurementsControl"; export declare type AngleMeasurementsPluginConfiguration = { /** Optional ID for this plugin, so that we can find it within {@link Viewer.plugins}. */ id?: string; /** Container DOM element for markers and labels. Defaults to ````document.body````. */ container?: HTMLElement; /** The default color of the dots, wire and label. */ defaultColor?: string; /** If set, the wires, dots and labels will have this zIndex (+1 for dots and +2 for labels). */ zIndex?: number; }; /** * Event fire by {@link AngleMeasurementsPlugin} when mouse enters over an {@link AngleMeasurement}. */ export declare type AngleMeasurementMouseOverEvent = { /** * The plugin. */ plugin: AngleMeasurementsPlugin; /** * The measurement. */ angleMeasurement: AngleMeasurement; /** * The measurement. */ measurement: AngleMeasurement; /** * The original mouse event. */ event: MouseEvent; } /** * Event fire by {@link AngleMeasurementsPlugin} when mouse leaves an {@link AngleMeasurement}. */ export declare type AngleMeasurementMouseLeaveEvent = { /** * The plugin. */ plugin: AngleMeasurementsPlugin; /** * The measurement. */ angleMeasurement: AngleMeasurement; /** * The measurement. */ measurement: AngleMeasurement; /** * The original mouse event. */ event: MouseEvent; } /** * {@link Viewer} plugin for measuring angles. */ export declare class AngleMeasurementsPlugin extends Plugin { /** * @constructor * @param {Viewer} viewer The Viewer. * @param {AngleMeasurementsPluginConfiguration} [cfg] Plugin configuration. */ constructor(viewer: Viewer, cfg?: AngleMeasurementsPluginConfiguration); /** * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input. * * @type {AngleMeasurementsControl} */ get control(): AngleMeasurementsControl; /** * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement.id}. * * @type {{String:AngleMeasurement}} */ get measurements(): { [key:string]: AngleMeasurement}; /** * Creates an {@link AngleMeasurement}. * * The AngleMeasurement is then registered by {@link AngleMeasurement.id} in {@link AngleMeasurementsPlugin.measurements}. * * @param {Object} params {@link AngleMeasurement} configuration. * @param {String} params.id Unique ID to assign to {@link AngleMeasurement.id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin.measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}. * @param {Number[]} params.origin.worldPos Origin World-space 3D position. * @param {Entity} params.origin.entity Origin Entity. * @param {Number[]} params.corner.worldPos Corner World-space 3D position. * @param {Entity} params.corner.entity Corner Entity. * @param {Number[]} params.target.worldPos Target World-space 3D position. * @param {Entity} params.target.entity Target Entity. * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}. * @returns {AngleMeasurement} The new {@link AngleMeasurement}. */ createMeasurement(params?: { id: string; origin: { entity: Entity; worldPos: number[]; }, corner: { entity: Entity; worldPos: number[]; }, target: { entity: Entity; worldPos: number[]; }, visible?: boolean; }): AngleMeasurement; /** * Destroys a {@link AngleMeasurement}. * * @param {String} id ID of AngleMeasurement to destroy. */ destroyMeasurement(id: string): void; /** * Destroys all {@link AngleMeasurement}s. */ clear(): void; /** * Fires when mouse is over a measurement. * @param {String} event The mouseOver event * @param {Function} callback Callback fired on the event */ on(event: "mouseOver", callback: (event: AngleMeasurementMouseOverEvent)=> void): string; /** * Fires when mouse leaves a measurement. * @param {String} event The mouseLeave event * @param {Function} callback Callback fired on the event */ on(event: "mouseLeave", callback: (event: AngleMeasurementMouseLeaveEvent)=> void): string; /** * Fires when a context menu is to be opened on a measurement. * @param {String} event The contextMenu event * @param {Function} callback Callback fired on the event */ on(event: "contextMenu", callback: (measurement: AngleMeasurement)=> void): string; /** * Fires when a measurement is completed. * @param {String} event The measurementEnd event * @param {Function} callback Callback fired on the event */ on(event: "measurementStart", callback: (measurement: AngleMeasurement)=> void): string; /** * Fires when a measurement is created. * @param {String} event The measurementCreated event * @param {Function} callback Callback fired on the event */ on(event: "measurementCreated", callback: (measurement: AngleMeasurement)=> void): void; /** * Fires when a measurement is destroyed. * @param {String} event The measurementDestroyed event * @param {Function} callback Callback fired on the event */ on(event: "measurementDestroyed", callback: (measurement: AngleMeasurement)=> void): void; }