【问题标题】:How to match objectids from Autodesk Model Derivative API metadata with Forge Viewer model dbids?如何将 Autodesk 模型衍生 API 元数据中的 objectids 与 Forge Viewer 模型 dbids 匹配?
【发布时间】:2021-02-05 17:50:24
【问题描述】:

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

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

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

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

我找不到任何关于此的官方/非官方文档,感谢任何帮助。

【问题讨论】:

    标签: autodesk-forge autodesk-viewer autodesk autodesk-model-derivative


    【解决方案1】:

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

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

    【讨论】:

    • 嗨 Petr,感谢您的快速响应,我想我们将继续使用第二种方法,因为我们使用的是 svf2。有没有办法只从模型派生 API 中检索 externalIds?我试过 GET :urn/metadata/:guid/properties 请求,但它也添加了属性信息,这增加了文件大小,我找不到任何查询参数或类似的东西来避免这种情况,谢谢。
    • 恐怕 MD API 不支持任何类型的过滤。但是请注意,有不同的方法可以在没有查看器的情况下获取元数据,而不仅仅是使用 MD 端点。请参阅我的博文:forge.autodesk.com/blog/…
    猜你喜欢
    • 2021-12-31
    • 2021-03-09
    • 2020-05-27
    • 2020-11-10
    • 2020-01-06
    • 2016-12-15
    • 2017-10-02
    • 2020-10-07
    • 2021-10-02
    相关资源
    最近更新 更多