实例元素中缺少 revit ID

Missing revit ID in instance elements

当使用伪造模型派生 API 中的 get properties 请求处理翻译模型的数据时,我正在测试的模型没有 return revit ID 作为任何实例元素。我以前看到的格式类似于栏杆实例元素的“栏杆 [5707296]”,但属性 JSON 响应不会在结果中显示 [5707296]。这是最近对 API 的更改吗?是否需要启用此设置? revit ID 对我们来说是一个有用的值,我们想要检索它。奇怪的是,查看器按预期显示了 ID,但获取属性请求中的同一实体没有显示 ID。这是来自 Revit 2022 模型。

JSON 回复:

...
{
    "objectid": 410,
    "name": "Railing", // <-- I would expect this to be "Railing [5707296]"
    "externalId": "1c277e31-8d23-4dc2-96e6-b1ac60f1c07a-0053ce49",
    "properties": {
      ...
    }
},
...

在查看器中选择的相同元素显示我期望的名称:

我认为这是因为 SVF2/OTG。使用 https://forge.autodesk.com/en/docs/model-derivative/v2/developers_guide/notes/

强制使用新格式时,查看器中也缺少 Revit ID

目前似乎没有简单的方法来获取 Revit ID。也许可以使用 https://forge.autodesk.com/blog/temporary-workaround-mapping-between-svf1-and-svf2-ids 之类的解决方法(请参阅 Alex 接受的答案以获得良好的解决方法)

编辑: 我刚刚意识到我的查看器中缺少 Revit Id 是自定义 属性 面板实施不当的结果。使用默认 属性 面板一切正常。

请注意,Forge externalId 可能对应于 Revit UniqueId。如果可能的话,我建议始终使用唯一 ID 来标识元素,因为它比元素 ID 更可靠。

感谢 Eason 和 Jeremy,我了解到 externalId 的最后一个子字符串是 Revit 元素 ID 的十六进制编码表示。这意味着我可以从 externalId 派生 Revit 元素 ID,而无需从元素名称中解析它。

const externalId = '110717dd-74ae-4656-b586-fb1c03e9905a-00030954';
const splitArr = externalId.split('-');

console.log(parseInt(splitArr[splitArr.length - 1], 16)); // 198996 ✅

来源:https://thebuildingcoder.typepad.com/blog/2009/02/uniqueid-dwf-and-ifc-guid.html