You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Forge Viewer中区分中心文件与链接文件的元素?

区分BIM 360中中心文件与链接文件元素的可行方法
  • 通过模型实例标识区分
    Forge Viewer加载中心文件后,链接模型会以子模型形式存在。可以通过以下方式判断:

    • 调用viewer.impl.modelQueue().getModels()获取所有加载的模型实例,遍历每个模型
    • 检查模型的documentNode.isExternal属性,值为true的即为链接模型
    • 对于元素,调用viewer.getProperties(dbId)获取属性,若包含Link Name、Link Instance这类标识字段,说明该元素属于链接文件
  • 自定义着色直观区分
    给链接模型的所有元素设置专属颜色,快速识别:

    // 获取所有模型
    const models = viewer.impl.modelQueue().getModels();
    models.forEach(model => {
      // 判断是否为链接模型
      if (model.documentNode.isExternal) {
        // 获取模型所有元素的dbId
        const fragList = model.getFragmentList();
        const fragIds = fragList.getFragments();
        fragIds.forEach(fragId => {
          const dbId = fragList.getDbId(fragId);
          // 设置红色主题色
          viewer.setThemingColor(dbId, new THREE.Color(0xff0000), model);
        });
      }
    });
    
  • 分析元素外部ID
    链接模型中元素的外部ID(externalId)会包含链接文件的唯一标识。通过viewer.model.getExternalIdMapping()获取映射关系后,可分析ID结构判断元素所属模型:

    model.getExternalIdMapping().then(mapping => {
      Object.keys(mapping).forEach(externalId => {
        const dbId = mapping[externalId];
        // 链接文件的externalId通常带有特定前缀或包含链接文件ID
        if (externalId.includes('LINK_') || externalId.includes(model.documentNode.guid)) {
          // 该元素属于链接模型
        }
      });
    });
    

内容的提问来源于stack exchange,提问作者Jihai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:23:12