如何查找 Revit 模型的云项目 ID?
How to find cloud Item id of a Revit model?
在我们的解决方案中,我们需要 Revit 模型与其在云中的存在 (BIM 360/Autodesk Construction Cloud) 之间的引用。
在Revit中我们打开一个云模型或者将一个模型保存到云端(Save As cloud model)。 rvt 文件显然“知道”它在云中的位置,但我看不到从文件中提取该信息的方法。因此,挑战在于在云中找到文件 Item id。
目前我们做的是:
从Revit文档中我们得到
- CloudProjectName(从 Revit api Document.GetCloudModelPath() 中提取)
- ModelGuid (Revit api Document.GetModelGUID())
然后...
- 获取用户的帐户(Forge Datamanagement API
https://developer.api.autodesk.com/project/v1/hubs)
- 对于每个帐户:遍历项目以查找项目
指定名称。 (锻造数据管理 API
https://developer.api.autodesk.com/project/v1/hubs/:hub_id/projects)
- 如果找到项目:在项目中搜索根文件夹以查找文件
指定的 ModelGuid(Forge Datamanagement API
https://developer.api.autodesk.com/data/v1/projects/:project_id/folders/:folder_id/search?filter[attributes.extension.data.modelGuid]={ModelGuid})
- 如果找到 1 个或多个文件:选择 'original' 文件。
(relationships.item.data.id ==
attributes.extension.data.originalItemUrn)
(我们不关心云模型版本)。
这确实有效,除了第 3 步可能有点棘手。从模型上传到云端到可以进行搜索需要几分钟,也许几个小时,这非常烦人。
所以这里有两个问题:
- 是否有 better/easier 查找文件的云项目 ID 的方法?
- 是否有 'search' 调用(第 3 步)的替代方法,或者至少有某种文档说明预期结果何时可用?
你的方法有点复杂,我一眼就看不懂。我自己没有尝试达到同样的目标。不管怎样,The Building Coder 讨论了如何 Determine Cloud Model Local File Path and mentions some similar steps to yours. Maybe that can provide some further hints. Searching here for Revit model cloud 出现许多其他相关话题。
使用 ModelPath
方法 GetModelGUID
and GetProjectGUID
。
您可以从模型转到 'backward' 并沿着树向上移动,直到您点击项目文件或项目顶级文件夹。
如果用户没有完全可见性,则特定用户可能无法访问父文件夹。
在 GET projects/:project_id/items/:item_id/parent
.
下阅读更多内容
您使用的是哪个 Revit 版本?如果是Revit 2022,最新的SDK 2022中新的API Document.GetCloudModelUrn()应该就是你要找的,它还提供了以下API云信息:
获取模型的 Forge ID
这些方法允许您识别云模型的 Forge ID:
Document.GetHubId(): ForgeDM hub id where the model is located
Document.GetProjectId(): ForgeDM project id where the model is located
Document.GetCloudFolderId(bool forceRefresh): ForgeDM folder id where the model is located
Document.GetCloudModelUrn(): A ForgeDM Urn identifying the model They return strings which will be empty for a document which is not a cloud model.
在 https://help.autodesk.com/view/RVT/2022/ENU/?guid=Revit_API_Revit_API_Developers_Guide_Introduction_Application_and_Document_CloudFiles_html and https://www.revitapidocs.com/2022/7c2bced8-b309-b67f-2b82-13299c617a0b.htm
查看详细信息
在我们的解决方案中,我们需要 Revit 模型与其在云中的存在 (BIM 360/Autodesk Construction Cloud) 之间的引用。
在Revit中我们打开一个云模型或者将一个模型保存到云端(Save As cloud model)。 rvt 文件显然“知道”它在云中的位置,但我看不到从文件中提取该信息的方法。因此,挑战在于在云中找到文件 Item id。
目前我们做的是:
从Revit文档中我们得到
- CloudProjectName(从 Revit api Document.GetCloudModelPath() 中提取)
- ModelGuid (Revit api Document.GetModelGUID())
然后...
- 获取用户的帐户(Forge Datamanagement API https://developer.api.autodesk.com/project/v1/hubs)
- 对于每个帐户:遍历项目以查找项目 指定名称。 (锻造数据管理 API https://developer.api.autodesk.com/project/v1/hubs/:hub_id/projects)
- 如果找到项目:在项目中搜索根文件夹以查找文件 指定的 ModelGuid(Forge Datamanagement API https://developer.api.autodesk.com/data/v1/projects/:project_id/folders/:folder_id/search?filter[attributes.extension.data.modelGuid]={ModelGuid})
- 如果找到 1 个或多个文件:选择 'original' 文件。 (relationships.item.data.id == attributes.extension.data.originalItemUrn)
(我们不关心云模型版本)。
这确实有效,除了第 3 步可能有点棘手。从模型上传到云端到可以进行搜索需要几分钟,也许几个小时,这非常烦人。
所以这里有两个问题:
- 是否有 better/easier 查找文件的云项目 ID 的方法?
- 是否有 'search' 调用(第 3 步)的替代方法,或者至少有某种文档说明预期结果何时可用?
你的方法有点复杂,我一眼就看不懂。我自己没有尝试达到同样的目标。不管怎样,The Building Coder 讨论了如何 Determine Cloud Model Local File Path and mentions some similar steps to yours. Maybe that can provide some further hints. Searching here for Revit model cloud 出现许多其他相关话题。
使用 ModelPath
方法 GetModelGUID
and GetProjectGUID
。
您可以从模型转到 'backward' 并沿着树向上移动,直到您点击项目文件或项目顶级文件夹。
如果用户没有完全可见性,则特定用户可能无法访问父文件夹。
在 GET projects/:project_id/items/:item_id/parent
.
您使用的是哪个 Revit 版本?如果是Revit 2022,最新的SDK 2022中新的API Document.GetCloudModelUrn()应该就是你要找的,它还提供了以下API云信息:
获取模型的 Forge ID 这些方法允许您识别云模型的 Forge ID:
Document.GetHubId(): ForgeDM hub id where the model is located
Document.GetProjectId(): ForgeDM project id where the model is located
Document.GetCloudFolderId(bool forceRefresh): ForgeDM folder id where the model is located
Document.GetCloudModelUrn(): A ForgeDM Urn identifying the model They return strings which will be empty for a document which is not a cloud model.
在 https://help.autodesk.com/view/RVT/2022/ENU/?guid=Revit_API_Revit_API_Developers_Guide_Introduction_Application_and_Document_CloudFiles_html and https://www.revitapidocs.com/2022/7c2bced8-b309-b67f-2b82-13299c617a0b.htm
查看详细信息