实例元素中缺少 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
当使用伪造模型派生 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