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

如何在Forge Viewer中隐藏参照模型并获取关联模型的dbId?

Forge Viewer外部参照模型的dbId获取与显示控制方案

一、从AEC数据映射关联模型的dbId集合

你通过NOP_VIEWER.model.getDocumentNode().getAECdata()拿到的documentId和traverseId,可以用Viewer内置方法直接映射到对应参照模型的dbId范围:

  • 第一步先获取完整的AEC数据:
    const aecData = NOP_VIEWER.model.getDocumentNode().getAECdata();
    
  • 找到目标外部参照的条目,调用getExternalReferenceDbIds获取所有关联dbId:
    // 替换targetDocId为你要定位的参照documentId
    const targetRef = aecData.externalReferences.find(ref => ref.documentId === targetDocId);
    if (targetRef) {
        const refDbIds = NOP_VIEWER.model.getExternalReferenceDbIds(targetRef.traverseId);
        // refDbIds就是该外部参照模型的全部元素dbId
    }
    

二、控制参照模型的显示状态

拿到dbId集合后,用Viewer的显示API就能实现隐藏或单独显示:

1. 隐藏整个参照模型

NOP_VIEWER.hide(refDbIds);

2. 仅显示选中的关联模型

如果需要单独展示目标参照,先隐藏所有可见元素,再显示目标dbId:

// 隐藏当前所有可见元素
NOP_VIEWER.hide(NOP_VIEWER.model.getVisibleDbIds());
// 显示目标参照模型的元素
NOP_VIEWER.show(refDbIds);

三、获取标高的dbId

标高可以通过类别搜索或AEC楼层数据两种方式获取:

方式1:按类别搜索

// 搜索Revit中"Levels"类别的元素
NOP_VIEWER.search('Levels', (dbIds) => {
    // dbIds即为所有标高的dbId集合
}, ['Category']);

方式2:通过AEC楼层数据映射

const levels = aecData.levels;
levels.forEach(level => {
    const levelDbIds = NOP_VIEWER.model.getExternalReferenceDbIds(level.traverseId);
    // 对标高dbId进行操作
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:35:23