问题描述
我正在围绕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
的字典映射。