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 中选择某些内容时,然后是叶子(层次结构树中的最低元素,通常是 body 或 solid ) 被选中。
您可以在 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 查看器从一个客户端同步到多个客户端
无法获取 Forge 清单 - Autodesk Forge 查看器
Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId