如何将Autodesk Model Derivative API元数据中的objectid与Forge Viewer模型dbid相匹配?

问题描述

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

此应用程序还允许您上传新模型。在上载和转换过程之后,使用此模型衍生API https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-guid-GET/从模型中提取元数据,该API基本返回对象树及其ID /名称

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

但是,最近我发现Model Derivative API元数据中的array(1) { [0]=> array(9) { ["id_product"]=> string(1) "1" ["id_attachment"]=> NULL ["file"]=> string(40) "725abb2b97837af5f29e589c56becb09b91e0c1a" ["file_name"]=> string(8) "test.pdf" ["file_size"]=> string(4) "9453" ["mime"]=> string(15) "application/pdf" ["id_lang"]=> NULL ["name"]=> NULL ["description"]=> NULL } } 与Viewer函数中所需的objectid不匹配。这两个字段之间是如何相互关联的?如果没有,是否有办法将其转换为另一种?

我找不到与此有关的任何官方/非官方文档,我们将为您提供任何帮助。

解决方法

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

为了安全起见,您可以使用“外部ID”将设计元素与元数据链接,该ID保证是一致的。在客户端,您可以使用viewer.model.getExternalIdMapping(onSuccessCallback,onErrorCallback)方法来获取从外部ID到dbid的字典映射。