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

如何从已加载的多个模型中获取点击/选中的模型?

可以实现,你可以通过Autodesk Viewer内置的事件系统和属性查询API获取选中模型的所有相关信息,具体实现逻辑如下:

1. 绑定选择事件监听

首先在Viewer初始化完成后,绑定SELECTION_CHANGED_EVENT事件,该事件会在用户点击选中/取消选中模型时触发:

// 此处viewer为你初始化Autodesk Viewer得到的实例对象
viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, (selectionEvent) => {
  // 获取当前选中的所有构件的dbId数组,dbId是Viewer中每个构件的唯一标识
  const selectedDbIds = selectionEvent.dbIdArray;
  // 获取当前选中构件所属的模型实例,多模型加载场景下可用于区分不同gltf来源
  const currentModel = selectionEvent.model;

  if (selectedDbIds.length === 0) {
    console.log('当前没有选中任何模型');
    return;
  }

  // 接下来处理选中的模型逻辑
  getSelectedModelInfo(selectedDbIds, viewer);
})
2. 查询选中模型的属性信息

通过getProperties接口可以拿到模型的所有内置属性和自定义属性:

function getSelectedModelInfo(selectedDbIds, viewer) {
  selectedDbIds.forEach(dbId => {
    viewer.getProperties(dbId, (propertyResult) => {
      // 常用基础信息示例
      const modelInfo = {
        dbId: dbId,
        模型名称: propertyResult.name,
        外部ID: propertyResult.externalId,
        所属模型ID: propertyResult.modelId,
        所有自定义属性: propertyResult.properties
      }
      // 按需处理拿到的模型信息
      console.log('选中模型信息:', modelInfo);
    }, (error) => {
      console.error('获取模型属性失败:', error);
    })
  })
}
3. 额外扩展信息获取

如果需要获取几何、层级等其他信息,可使用以下API:

  • 查询模型树层级关系:调用viewer.getObjectTree()获取完整构件树,可查询当前构件的父级、子级构件列表
  • 获取几何包围盒:调用viewer.getBoundingBox(dbId)返回选中模型的三维空间最小包围盒坐标,可用于定位、高亮等操作
  • 查询gltf原始节点信息:通过viewer.model.getFragmentList()可关联查询到加载的gltf原始节点的顶点、材质等参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:15:08