Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId

Posted

技术标签:

【中文标题】Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId【英文标题】:Autodesk Forge Viewer - Getting different values dbId from "viewer.model.search" and "viewer.getSelection()" 【发布时间】:2019-07-31 14:03:42 【问题描述】:

我正在尝试隔离一些我使用方法 viewer.model.search 搜索的元素,但是当我使用 viewer.isolate 方法时,我会隐藏所有内容。

我已经使用getSelection 来隔离元素,我注意到它们为同一元素提供了不同的 dbId 值。使用getSelection dbId 有效,但使用search 无效

有人有同样的错误吗?

2019 年 3 月 11 日更新: 当我试图弄清楚发生了什么时,我意识到search 方法给你的数字是减一,例如:如果你用getSelection 得到数字2302,search 给你的数字是2301。

这是一个错误吗?

【问题讨论】:

【参考方案1】:

差异可能是由那些 dbId 代表层次结构中不同级别的相同元素造成的。当您通过单击在 UI 中选择某些内容时,然后是叶子(层次结构树中的最低元素,通常是 bodysolid ) 被选中。

您可以在 Hierarchy Browser 面板中查看正在选择的确切节点:

同样讲到这个现象,这里有一篇关于覆盖在哪个层级选择元素的文章: Selection override

编辑:Body 和 Solid 叶实体的父级的 dbId 数往往比叶本身的 dbId 少 1,如下图所示:

【讨论】:

嗨,亚当,感谢您的回答。但是我已经放弃了这个选项,因为我查找了每个组 id 并且没有一个等于“搜索”给我的那个。尝试了一段时间后,我发现“搜索”方法给了我数字 - 1。 这正好指向我所指出的方向 - 请参阅编辑后的回复。 这篇关于快速测试的文章也可能会派上用场https://forge.autodesk.com/blog/do-simple-viewer-api-tests-quickly 所以我得到了搜索在该组中找到的第一个元素。有没有办法获取所有元素而不是组中的第一个? 我想我不妨为此写一篇博文。我希望它包含您需要的一切:search returns different dbId than selection in UI

以上是关于Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk Forge 中自定义模型的动态位置

有啥方法可以将 Autodesk Forge 查看器从一个客户端同步到多个客户端

Autodesk-forge 查看器:访问令牌

从两个 HTML 文件访问 Forge 查看器

无法获取 Forge 清单 - Autodesk Forge 查看器

Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId