You need to enable JavaScript to run this app. Autodesk Forge查看器基于dbId/externalId获取图元属性值的实现语法
优惠活动
大模型
产品
解决方案
定价
更多

Autodesk Forge查看器基于dbId/externalId获取图元属性值的实现语法

Forge查看器基于dbId、externalId的BIM工程属性查询实现

基础逻辑说明

查询周长、面积、体积这类和属性面板同源的工程属性,不需要额外对接远端接口拉取数据,所有可展示的属性值都会在模型前端加载阶段完成缓存,直接调用查看器内置接口即可获取,和属性面板的取数逻辑没有差异。

基于dbId的直接属性查询

dbId是查看器内部遍历构件的原生唯一标识,不需要额外做转换,可直接作为查询入参:

  • 前置准备:在模型加载完成的回调中保存当前加载的模型对象引用viewer.model
  • 核心调用方法:调用模型内置的getProperties异步接口,返回的数据结构和属性面板展示的数据源完全一致
// 替换为实际获取到的目标构件dbId
const targetDbId = 12345;

viewer.model.getProperties(targetDbId, (props) => {
  // props.attributes 数组包含构件全部可查询属性,涵盖周长、面积、体积、标高、材质、系统分类等
  const propList = props.attributes;
  // 示例:提取构件体积属性
  const volumeProp = propList.find(item => item.displayName.includes('体积') || item.displayName.includes('Volume'));
  if(volumeProp) {
    console.log(`构件体积:${volumeProp.displayValue} 单位:${volumeProp.units}`);
  }
}, (error) => {
  console.error('属性查询失败:', error);
});

基于externalId的属性查询

externalId是源BIM文件自带的构件原生全局ID,不属于查看器内部遍历标识,需要先完成ID映射转换为对应的dbId,再复用上述dbId查询流程:

  • 适配逻辑:调用模型内置的getExternalIdMapping异步接口,获取全量externalId与dbId的映射关系
// 替换为实际获取到的目标构件externalId
const targetExternalId = "Room_2F_East_001";

viewer.model.getExternalIdMapping((idMap) => {
  // 从映射表中匹配目标externalId对应的dbId
  const mappedDbId = idMap[targetExternalId];
  if(!mappedDbId) {
    console.warn('未匹配到对应externalId的构件,请检查ID值是否属于当前加载的模型范围');
    return;
  }
  // 复用dbId的查询逻辑获取全量属性
  viewer.model.getProperties(mappedDbId, (props) => {
    console.log('构件全量属性列表:', props.attributes);
  });
}, (error) => {
  console.error('ID映射查询失败:', error);
});

实操注意要点

  • 批量查询多构件属性时,不要循环单条调用getProperties,可替换使用getBulkProperties接口,传入dbId数组和需要筛选的属性名列表,减少重复异步调用的性能损耗
  • 查询周长、面积、体积这类工程属性时,不要硬编码纯中文显示名做匹配,不同源BIM文件导出的属性名可能存在多语言差异,匹配时同时兼容中英文关键词,或直接遍历属性项的数值类型做筛选
  • 针对嵌套链接模型内的构件做查询时,不能直接使用顶层全局模型引用viewer.model调用接口,需要替换为对应嵌套层级的模型实例对象,否则会出现查询空值的问题
  • 如果遇到属性列表返回为空的情况,优先检查传入的dbId/externalId是否存在拼写错误、是否属于当前已加载的模型范围,避免传入其他文件的ID导致匹配失败

内容的提问来源于stack exchange,提问作者Hoz.Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 14:24:03