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

Autodesk Forge选中关联问题时如何高亮ROOM下的子solid实体对象

可行实现方案

你之前的判断正确,NWC导出的ROOM为组合节点,自身无几何数据,几何资源全部存放在子级solid节点下,直接选中ROOM节点仅会触发节点树的状态标记,不会渲染实体高亮效果。具体实现步骤如下:

  • 第一步:获取模型实例树,递归遍历目标ROOM节点的所有后代节点,筛选出具备几何属性的solid子节点dbId
  • 第二步:将收集到的所有子节点dbId批量传入Viewer的高亮/选择API即可实现整间房的高亮效果

示例代码如下:

// roomDbId为你从关联关系中拿到的房间节点ID
function highlightWholeRoom(roomDbId) {
  const instanceTree = viewer.model.getData().instanceTree
  const geometryIds = []

  // 递归遍历所有后代节点
  instanceTree.enumNodeChildren(roomDbId, childId => {
    // 筛选带几何数据的节点
    if (viewer.model.getGeometry(childId)) {
      geometryIds.push(childId)
    }
  }, true)

  // 执行高亮,可根据需求替换为setThemingColor自定义颜色
  viewer.select(geometryIds)
}

优化建议

如果需要频繁触发房间高亮操作,可以在模型加载完成后提前遍历所有ROOM节点,构建「ROOM节点ID-子实体ID列表」的映射表缓存,后续调用时直接查表即可,无需重复递归遍历,可大幅提升响应速度。

常见问题排查

  • 确认NWC导出时已勾选导出房间几何的配置项,部分精简导出模式会省略房间的solid几何数据,导致遍历不到有效子节点
  • 若在Power BI自定义视觉对象沙箱中运行,确认Viewer相关API未被沙箱权限限制拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:57:01