@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
283 lines (236 loc) • 9.2 kB
TypeScript
import { Entity, Plugin, Viewer } from "../../viewer";
import { DistanceMeasurementsControl } from "./DistanceMeasurementsControl";
import { DistanceMeasurement } from "./DistanceMeasurement";
export declare type DistanceMeasurementsPluginConfiguration = {
/** Optional ID for this plugin, so that we can find it within {@link Viewer.plugins}. */
id?: string;
/** The minimum length, in pixels, of an axis wire beyond which its label is shown. */
labelMinAxisLength?: number;
/** Container DOM element for markers and labels. Defaults to ````document.body````. */
container?: HTMLElement;
/** The default value of the DistanceMeasurements `visible` property. */
defaultVisible?: boolean;
/** The default value of the DistanceMeasurements `originVisible` property. */
defaultOriginVisible?: boolean;
/** The default value of the DistanceMeasurements `targetVisible` property. */
defaultTargetVisible?: boolean;
/** The default value of the DistanceMeasurements `wireVisible` property. */
defaultWireVisible?: boolean;
/** The default value of the DistanceMeasurements `axisVisible` property. */
defaultAxisVisible?: boolean;
/** The default color of the length dots, wire and label. */
defaultColor?: string;
/** The default value of the DistanceMeasurements `labelsOnWires` property. */
defaultLabelsOnWires?: boolean;
/** If set, the wires, dots and labels will have this zIndex (+1 for dots and +2 for labels). */
zIndex?: number;
};
/**
* Event fire by {@link DistanceMeasurementsPlugin} when mouse enters over a {@link DistanceMeasurement}.
*/
export declare type DistanceMeasurementMouseOverEvent = {
/**
* The plugin.
*/
plugin: DistanceMeasurementsPlugin;
/**
* The measurement.
*/
angleMeasurement: DistanceMeasurement;
/**
* The measurement.
*/
measurement: DistanceMeasurement;
/**
* The original mouse event.
*/
event: MouseEvent;
}
/**
* Event fire by {@link DistanceMeasurementsPlugin} when mouse leaves a {@link DistanceMeasurement}.
*/
export declare type DistanceMeasurementMouseLeaveEvent = {
/**
* The plugin.
*/
plugin: DistanceMeasurementsPlugin;
/**
* The measurement.
*/
angleMeasurement: DistanceMeasurement;
/**
* The measurement.
*/
measurement: DistanceMeasurement;
/**
* The original mouse event.
*/
event: MouseEvent;
}
/**
* Event fire by {@link DistanceMeasurementsPlugin} when context menu is shown on {@link DistanceMeasurement}.
*/
export declare type DistanceMeasurementMouseContextMenuEvent = {
/**
* The plugin.
*/
plugin: DistanceMeasurementsPlugin;
/**
* The measurement.
*/
distanceMeasurement: DistanceMeasurement;
/**
* The measurement.
*/
measurement: DistanceMeasurement;
/**
* The original mouse event.
*/
event: MouseEvent;
}
/**
* {@link Viewer} plugin for measuring point-to-point distances.
*/
export declare class DistanceMeasurementsPlugin extends Plugin {
/**
* @constructor
* @param {Viewer} viewer The Viewer.
* @param {DistanceMeasurementsPluginConfiguration} [cfg] Plugin configuration.
*/
constructor(viewer: Viewer, cfg?: DistanceMeasurementsPluginConfiguration);
/**
* Sets the minimum length, in pixels, of an axis wire beyond which its label is shown.
*
* The axis wire's label is not shown when its length is less than this value.
*
* This is ````25```` pixels by default.
*
* Must not be less than ````1````.
*
* @type {number}
*/
set labelMinAxisLength(arg: number);
/**
* Gets the minimum length, in pixels, of an axis wire beyond which its label is shown.
* @returns {number}
*/
get labelMinAxisLength(): number;
/**
* Gets the {@link DistanceMeasurementsControl}, which creates {@link DistanceMeasurement}s from user input.
*
* @type {DistanceMeasurementsControl}
*/
get control(): DistanceMeasurementsControl;
/**
* Gets the existing {@link DistanceMeasurement}s, each mapped to its {@link DistanceMeasurement.id}.
*
* @type {{String:DistanceMeasurement}}
*/
get measurements(): { [key:string]: DistanceMeasurement };
/**
* Creates a {@link DistanceMeasurement}.
*
* The DistanceMeasurement is then registered by {@link DistanceMeasurement.id} in {@link DistanceMeasurementsPlugin.measurements}.
*
* @param {Object} params {@link DistanceMeasurement} configuration.
* @param {String} params.id Unique ID to assign to {@link DistanceMeasurement.id}. The DistanceMeasurement will be registered by this in {@link DistanceMeasurementsPlugin.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.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 DistanceMeasurement}.
* @param {Boolean} [params.originVisible=true] Whether to initially show the {@link DistanceMeasurement} origin.
* @param {Boolean} [params.targetVisible=true] Whether to initially show the {@link DistanceMeasurement} target.
* @param {Boolean} [params.wireVisible=true] Whether to initially show the direct point-to-point wire between {@link DistanceMeasurement.origin} and {@link DistanceMeasurement.target}.
* @param {Boolean} [params.axisVisible=true] Whether to initially show the axis-aligned wires between {@link DistanceMeasurement.origin} and {@link DistanceMeasurement.target}.
* @param {string} [params.color] The color of the length dot, wire and label.
* @param {Boolean} [params.labelsOnWires=true] Determines if labels will be set on wires or one below the other.
* @returns {DistanceMeasurement} The new {@link DistanceMeasurement}.
*/
createMeasurement(params?: {
id: string;
origin: {
entity: Entity;
worldPos: number[];
};
target: {
entity: Entity;
worldPos: number[];
};
visible?: boolean;
originVisible?: boolean;
targetVisible?: boolean;
wireVisible?: boolean;
axisVisible?: boolean;
color?: string;
labelsOnWires?: boolean;
}): DistanceMeasurement;
/**
* Gets whether the distance measurement axis are visible.
* @returns {Boolean}
*/
getAxisVisible(): boolean;
/**
* Sets whether the distance measurement axis are visible.
* @param {Boolean} axisVisible
*/
setAxisVisible(axisVisible: boolean): void;
/**
* Destroys a {@link DistanceMeasurement}.
*
* @param {String} id ID of DistanceMeasurement to destroy.
*/
destroyMeasurement(id: string): void;
/**
* Destroys all {@link DistanceMeasurement}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: DistanceMeasurementMouseOverEvent)=> 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: DistanceMeasurementMouseLeaveEvent)=> 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: (event: DistanceMeasurementMouseContextMenuEvent)=> 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: DistanceMeasurement)=> 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: DistanceMeasurement)=> void): string;
/**
* Fires when a measurement is completed.
* @param {String} event The measurementEnd event
* @param {Function} callback Callback fired on the event
*/
on(event: "measurementEnd", callback: (measurement: DistanceMeasurement)=> void): string;
/**
* Fires when a measurement is cancelled.
* @param {String} event The measurementCancel event
* @param {Function} callback Callback fired on the event
*/
on(event: "measurementCancel", callback: (measurement: DistanceMeasurement)=> void): string;
/**
* 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: DistanceMeasurement)=> void): string;
}