在 Forge 查看器中保留对项目的引用的最佳方法是什么?
What is the best way to persist a reference to an item in forge viewer?
目前,我们正在将一些 revit 模型导入到 forge viewer 中。
在查看器中,我们希望能够将一些附加到我们在查看器中看到的模型元素(例如门)的信息存储到外部数据库中。
我们有 3 种方法来识别一个项目:
- dbid(例如 2214)
- guid/externalId(例如 a6aa132d-ccd7-408f-b2f9-ed67350c8c3a-0003b64a)
- 名称旁边括号中的 Revit ID(例如屋顶 [243274])
我需要能够在外部数据库中引用模型上的项目,即使 Revit 模型在中间得到更新和重新转换。
- 听起来如果我们转换一个新版本dbid会改变,所以不是很好的选择。 (https://forums.autodesk.com/t5/view-and-data-api-read-only/are-the-dbids-in-an-objecttree-of-a-revit-model-fixed/m-p/5517214#M757)
- Guid 似乎没问题,但我们无法在查看器中直接获取 dbid 映射的 guid,我们需要 1000 秒的昂贵 Web 服务调用 (https://forums.autodesk.com/t5/view-and-data-api-read-only/how-to-get-object-s-dbid-from-its-guid/m-p/5226891#M192)
- Revit ID 听起来只是提供信息
1-是 Guid,我们应该用来引用 revit 文件中的项目(甚至在更新之间)?
2-如果这是 Guid,我们如何直接拥有从 guid 到 dbid 的映射(因为查看器中的所有内容都由 dbid 处理)?
- 现在我看到上面的解决方案
- 也许玩模型导数 :urn/metadata/:guid/properties 来获取所有 guid
- 也许在查看器的某处已经有这个 guid->dbid 映射,我想念它(在 getBulkProperties 后面,我看到一个 getPropertyDb,可能有它)
谢谢
首先总结一下:
- Revit ID是Revit桌面上使用的顺序编号,可以重复使用,不是唯一的
- Revit GUID 是唯一的(与任何 GUID 一样)并在版本之间维护并在查看器(JavaScript 库)和模型衍生 GET 属性端点上公开为 外部 ID
- dbId 只是模型上用于访问几何的索引,不能保证模型的 versions/translations 之间是相同的。
现在,您可以用来在不同版本之间跟踪相同元素的唯一真实标识符是 外部 ID(来自 Revit GUID)。
如果您想要服务器端映射,请使用 Model Derivative GET Properties on all model views. On the client-side, I would suggest first enumerateLeafNodes,然后在这些节点上调用 getBulkProperties
以获取 外部 ID。
目前,我们正在将一些 revit 模型导入到 forge viewer 中。 在查看器中,我们希望能够将一些附加到我们在查看器中看到的模型元素(例如门)的信息存储到外部数据库中。
我们有 3 种方法来识别一个项目:
- dbid(例如 2214)
- guid/externalId(例如 a6aa132d-ccd7-408f-b2f9-ed67350c8c3a-0003b64a)
- 名称旁边括号中的 Revit ID(例如屋顶 [243274])
我需要能够在外部数据库中引用模型上的项目,即使 Revit 模型在中间得到更新和重新转换。
- 听起来如果我们转换一个新版本dbid会改变,所以不是很好的选择。 (https://forums.autodesk.com/t5/view-and-data-api-read-only/are-the-dbids-in-an-objecttree-of-a-revit-model-fixed/m-p/5517214#M757)
- Guid 似乎没问题,但我们无法在查看器中直接获取 dbid 映射的 guid,我们需要 1000 秒的昂贵 Web 服务调用 (https://forums.autodesk.com/t5/view-and-data-api-read-only/how-to-get-object-s-dbid-from-its-guid/m-p/5226891#M192)
- Revit ID 听起来只是提供信息
1-是 Guid,我们应该用来引用 revit 文件中的项目(甚至在更新之间)?
2-如果这是 Guid,我们如何直接拥有从 guid 到 dbid 的映射(因为查看器中的所有内容都由 dbid 处理)?
- 现在我看到上面的解决方案
- 也许玩模型导数 :urn/metadata/:guid/properties 来获取所有 guid
- 也许在查看器的某处已经有这个 guid->dbid 映射,我想念它(在 getBulkProperties 后面,我看到一个 getPropertyDb,可能有它)
谢谢
首先总结一下:
- Revit ID是Revit桌面上使用的顺序编号,可以重复使用,不是唯一的
- Revit GUID 是唯一的(与任何 GUID 一样)并在版本之间维护并在查看器(JavaScript 库)和模型衍生 GET 属性端点上公开为 外部 ID
- dbId 只是模型上用于访问几何的索引,不能保证模型的 versions/translations 之间是相同的。
现在,您可以用来在不同版本之间跟踪相同元素的唯一真实标识符是 外部 ID(来自 Revit GUID)。
如果您想要服务器端映射,请使用 Model Derivative GET Properties on all model views. On the client-side, I would suggest first enumerateLeafNodes,然后在这些节点上调用 getBulkProperties
以获取 外部 ID。