Skip to content

Measure

NIVIOBIM测量功能模块,提供完整的3D测量工具集。包括距离测量、角度测量、面积测量、体积测量、标高测量等功能。

类定义

javascript
class Measure extends Plugin

构造函数

constructor(viewer3D, options)

创建测量插件实例,初始化测量工具,根据设备类型自动选择计算模式(桌面端使用ComputedMode,移动端使用TouchMode)。设置事件监听器,当测量状态更新时自动分发update事件。

参数:

  • viewer3D {Viewer3D} - 三维视图实例,提供场景管理器和渲染器访问
  • options {Object} - 插件配置选项
    • name {string} [可选] - 插件名称,默认为'Measure'
    • enabled {boolean} [可选] - 是否启用插件,默认为false

示例:

javascript
// 创建测量插件
const measure = new Measure(viewer3D, {
    name: 'Measure',
    enabled: false
});

// 启用测量功能
measure.enabled = true;

静态属性

MODE

测量模式枚举,定义所有可用的测量模式类型。

类型: {Object}
静态: true
只读: true

属性:

  • NONE {number} - 无测量模式
  • DISTANCE {number} - 距离测量模式
  • LEVEL {number} - 标高测量模式
  • ANGEL {number} - 角度测量模式
  • CLOSED_LINE_AREA {number} - 闭合线面积测量模式
  • MESH_SURFACE_AREA {number} - 网格表面积测量模式
  • MESH_VOLUME {number} - 网格体积测量模式

UNIT

测量单位枚举,定义所有可用的测量单位类型。

类型: {Object}
静态: true
只读: true

属性:

  • KM {number} - 千米
  • M {number} - 米
  • DM {number} - 分米
  • CM {number} - 厘米
  • MM {number} - 毫米

PRECISION

测量精度枚举,定义测量结果的小数位数精度。

类型: {Object}
静态: true
只读: true

属性:

  • ZERO {number} - 0位小数
  • ONE {number} - 1位小数
  • TWO {number} - 2位小数
  • THREE {number} - 3位小数
  • FOUR {number} - 4位小数

属性

enabled

测量功能是否启用,控制测量功能是否处于活动状态。启用后可以进行测量交互,禁用后停止所有测量操作。

类型: {boolean}
默认值: false

示例:

javascript
// 启用测量功能
measure.enabled = true;

// 禁用测量功能
measure.enabled = false;

// 检查测量功能是否启用
if (measure.enabled) {
    console.log('测量功能已启用');
}

currentMode

当前测量模式,返回当前激活的测量模式,如距离测量、角度测量、面积测量等。

类型: {number}
只读: true
默认值: Measure.MODE.DISTANCE

示例:

javascript
// 获取当前测量模式
const mode = measure.currentMode;
console.log('当前测量模式:', mode);

// 判断是否为距离测量模式
if (measure.currentMode === Measure.MODE.DISTANCE) {
    console.log('当前为距离测量模式');
}

currentUnit

当前测量单位,返回当前测量结果的显示单位,如米、厘米、毫米等。

类型: {number}
只读: true
默认值: Measure.UNIT.M

示例:

javascript
// 获取当前测量单位
const unit = measure.currentUnit;
console.log('当前测量单位:', unit);

// 判断是否为米单位
if (measure.currentUnit === Measure.UNIT.M) {
    console.log('当前单位为米');
}

currentPrecision

当前测量精度,返回当前测量结果的小数位数精度设置。

类型: {number}
只读: true
默认值: Measure.PRECISION.TWO

示例:

javascript
// 获取当前测量精度
const precision = measure.currentPrecision;
console.log('当前测量精度:', precision);

// 判断是否为2位小数精度
if (measure.currentPrecision === Measure.PRECISION.TWO) {
    console.log('当前精度为2位小数');
}

方法

clear()

清除所有测量结果,清空当前场景中的所有测量数据,包括测量线、测量标签和测量缓存。调用后所有已完成的测量结果将被移除。

示例:

javascript
// 清除所有测量结果
measure.clear();
console.log('所有测量结果已清除');

setModel(model)

设置要测量的3D模型,指定测量操作的目标模型,设置后测量功能将针对该模型进行交互。

参数:

  • model {Object3D} - 要测量的3D模型对象

示例:

javascript
// 设置测量模型
measure.setModel(modelGroup);
console.log('测量模型已设置');

setCurrentMode(mode)

设置当前测量模式,激活指定的测量功能,支持距离、角度、面积、体积、标高等多种测量模式。设置后用户可以通过交互进行相应类型的测量操作。

参数:

  • mode {number} - 测量模式(使用Measure.MODE枚举)

示例:

javascript
// 设置距离测量模式
measure.setCurrentMode(Measure.MODE.DISTANCE);

// 设置角度测量模式
measure.setCurrentMode(Measure.MODE.ANGEL);

// 设置面积测量模式
measure.setCurrentMode(Measure.MODE.CLOSED_LINE_AREA);

// 设置体积测量模式
measure.setCurrentMode(Measure.MODE.MESH_VOLUME);

// 设置标高测量模式
measure.setCurrentMode(Measure.MODE.LEVEL);

setCurrentUnit(unit)

设置当前测量单位,更改测量结果的显示单位,支持千米、米、分米、厘米、毫米等多种长度单位。设置后所有测量结果将按新单位显示。

参数:

  • unit {number} - 测量单位(使用Measure.UNIT枚举)

示例:

javascript
// 设置单位为米
measure.setCurrentUnit(Measure.UNIT.M);

// 设置单位为厘米
measure.setCurrentUnit(Measure.UNIT.CM);

// 设置单位为毫米
measure.setCurrentUnit(Measure.UNIT.MM);

// 设置单位为千米
measure.setCurrentUnit(Measure.UNIT.KM);

setCurrentPrecision(precision)

设置当前测量精度,控制测量结果的小数位数精度,支持1-5位小数精度设置。设置后所有测量结果将按新精度显示。

参数:

  • precision {number} - 测量精度(使用Measure.PRECISION枚举)

示例:

javascript
// 设置精度为1位小数
measure.setCurrentPrecision(Measure.PRECISION.ONE);

// 设置精度为2位小数
measure.setCurrentPrecision(Measure.PRECISION.TWO);

// 设置精度为3位小数
measure.setCurrentPrecision(Measure.PRECISION.THREE);

// 设置精度为4位小数
measure.setCurrentPrecision(Measure.PRECISION.FOUR);

// 设置精度为5位小数
measure.setCurrentPrecision(Measure.PRECISION.FIVE);

dispose()

销毁测量插件,清理插件资源,移除所有事件监听器,销毁计算模式和测量工具。调用后插件将无法使用,需要重新创建实例。

示例:

javascript
// 销毁测量插件
measure.dispose();
console.log('测量插件已销毁');

事件

update

测量状态更新时触发,当测量模式、单位、精度或测量结果发生变化时触发。

示例:

javascript
measure.addEventListener('update', () => {
    console.log('测量状态已更新');
});

使用场景

距离测量

  • 测量两点之间的距离
  • 测量点到线的距离
  • 测量点到面的距离

角度测量

  • 测量两条线之间的夹角
  • 测量三个点形成的角度
  • 测量面与面之间的夹角

面积测量

  • 测量闭合区域的面积
  • 测量网格表面的面积
  • 测量投影面积

体积测量

  • 测量网格的体积
  • 测量复杂几何体的体积
  • 测量建筑空间的体积

标高测量

  • 测量点的高程
  • 测量相对标高
  • 测量标高差

相关链接

文档内容为北京逆维悦动科技有限公司版权所有,禁止未授权转载