如何将来自 Autodesk Model Derivative API 元数据的 objectids 与 Forge Viewer 模型 dbids 匹配?

How to match objectids from Autodesk Model Derivative API metadata with Forge Viewer model dbids?

我正在围绕 Autodesk Forge Viewer 构建一个应用程序,我在其中根据客户端数据使用来自 Viewer 的基本功能(着色、隔离等)添加额外功能。

此应用程序还允许您上传新模型。在上传和转换过程之后,使用此模型导数 API https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-guid-GET/ 从模型中提取元数据,这基本上是 returns 对象树及其 ids/names.

在查看器端,所有基本的交互功能,如 setThemingColor、show、hide、isolate 等都需要 dbIds 作为参数。为了避免多次搜索请求找出一个项目的 dbId,这会导致巨大的性能问题,因为模型大小高于平均水平,dbId 从 BE 端的元数据中检索并提供给 FE 以进行着色或类似操作仅需要 dbid 即可执行的操作。

然而,最近我发现模型导数 API 元数据中的 objectid 和查看器函数中所需的 dbId 不匹配。这两个领域如何相互关联,它们应该相同还是不同?如果没有,有没有办法将一个转换成另一个?

我找不到任何关于此的 official/unofficial 文档,感谢任何帮助。

模型衍生 API 中的 objectid 和查看器中的 dbid(来自 SVF 文件格式)应该 始终匹配。唯一的例外是新的 SVF2 格式(只有 entered public beta),其中 dbid 以不同的方式计算,以便“稳定”,如“在不同版本的相同的设计。

为了安全起见,您可以 link 设计元素与您的元数据使用保证一致的“外部 ID”。在客户端,您可以使用 viewer.model.getExternalIdMapping(onSuccessCallback, onErrorCallback) 方法获取从外部 ID 到 dbids.

的字典映射