请问要如何通过 dbId 获取父层信息?

你好,在 Forge Viewer 里头有办法通过 dbId 查询他的父层信息吗?例如我有一个 Basic Wall [49805] 的墙构件,我想知道他的获取族名称和类别有办法吗?

阅读 2.1k
1 个回答

可以的,你可以通过 InstanceTree.getNodeParentId( dbId ) 这个函数获取该构件父节点的 dbId。如果你想遞歸(resursively)的获取该构件父层的父层的信息,可以这么做:

/**
 * @param {InstanceTree} it - Forge Viewer instance tree.
 * @param {number} dbId - 想要查询的构件 dbId.
 * @param {number[]} parentIds - 结果容器.
 */
function getParnetIds( it, dbId, parentIds ) {
 const pid = it.getNodeParentId( dbId );
 if( pid == it.getRootId() ) return;

 parentIds.push( pid );
 getParnetIds( pid, parentIds );
}

const it = viewer.model.getData().instanceTree;
const parentIds = [];

getParnetIds( it, 915, parentIds );

if( parentIds.length > 0 ) {
  const n = parentIds.length;
  for( let i = 0; i < n ; i++ ) {
     cosnt dbId = parentIds[i];
     console.log( it.getNodeName( dbId ) ); // 打印父节点的名称
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题