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

发布于 2022-09-06 10:55:22 字数 98 浏览 17 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍风燃霜 2022-09-13 10:55:22

可以的,你可以通过 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 ) ); // 打印父节点的名称
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文