在Forge Viewer中保留对项目的引用的最佳方法是什么?

时间:2018-08-10 08:20:02

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

当前,我们正在将一些revit模型导入到Forge Viewer中。 在查看器中,我们希望能够将一些信息附加到我们在查看器中看到的模型元素(例如门)上存储到外部数据库中。

我们有3种方法来识别物品:

  • dbid(例如2214)
  • guid / externalId(例如a6aa132d-ccd7-408f-b2f9-ed67350c8c3a-0003b64a)
  • 名称旁边的括号中的Revit ID(例如,屋顶[243274])

即使revit模型在中间进行了更新和转换,我也需要能够在外部数据库中引用该模型上的项目。

1-是否为Guid,我们应该用来引用revit文件中的内容(即使在两次更新之间)?

2-如果这是Guid,我们如何直接从guid映射到dbid(因为查看器中的所有内容均由dbid处理)?

  • 现在我看到上面的解决方案
  • 也许使用模型衍生的:urn / metadata /:guid / properties来获取所有guid
  • 也许查看器中已经有这个guid-> dbid映射,但我很想念它(在getBulkProperties后面,我看到了一个getPropertyDb,可能有它)

谢谢

1 个答案:

答案 0 :(得分:1)

首先,总结一下:

  • Revit ID 是Revit桌面上使用的顺序编号,可以重复使用并且不是唯一的
  • Revit GUID 是唯一的(与任何GUID一样),并且在版本之间进行维护,并且在Viewer(JavaScript库)和Model Derivative GET Properties端点上均作为外部ID 公开li>
  • dbId 只是在模型上用于访问几何的索引,不能保证模型的版本/转换之间是相同的。

现在,您可以用来在版本之间跟踪相同元素的唯一真实标识符是外部ID (来自Revit GUID)。

如果要服务器端映射,请在所有模型视图上使用Model Derivative GET Properties。在客户端,我建议先enumerateLeafNodes,然后在这些节点上调用getBulkProperties,以获取外部ID