我们正在尝试创建一个可以使用Model Derivative和Viewer API显示BIM模型的系统,并提供使用更新的BIM模型的功能,同时保留元素(目前我们使用dbId)与某些元数据之间的映射。
问题在于,当我们使用更新的BIM模型发布模型衍生翻译流程时(更新意味着我们使用Autodesk Revit或等效工具包修改了Revit文件),原始dbId将丢失。
在查看查看器API时,我们发现通过带有dbId的model.getProperty,我们可以获得一个名为' external-id'的值,即使在更新后也似乎保留了这个值。但是,这似乎只能在客户端访问;没有提供外部id属性的MD api(如果我错了请纠正我)。
作为最后的手段,我们尝试通过使用name作为常用功能创建dbId => dbId映射,将dbId =>元数据映射从原始BIM模型映射到更新的BIM模型中的dbId =>元数据映射,但是我们担心在更新时添加/删除BIM模型的元素会导致名称映射无效。
TL DR; 问题是: 有没有办法在模型衍生翻译过程中使用更新的BIM为每个ObjectId / dbId获取唯一且保留的id?
答案 0 :(得分:0)
是的,确切地说。
在Revit中,UniqueId
是持久识别元素的最安全的方法。
此UniqueId
在查看器中可用,但遗憾的是,目前不在模型衍生API中。
对于立即解决方案,我建议您在Revit中为您感兴趣的所有元素创建自己的共享参数,并使用UniqueId
值填充它。然后,您也可以在模型衍生API中使用该信息。