如何从 PathName 获取 Project Guid 和 Model Guid?

Posted

技术标签:

【中文标题】如何从 PathName 获取 Project Guid 和 Model Guid?【英文标题】:How to get Project Guid and Model Guid from PathName? 【发布时间】:2018-12-24 12:14:37 【问题描述】:

我的 Revit 模型有一个 RVT 链接,其中 PathName = "BIM 360://Testing Link Edit in BIM360/ArchitectureBIM360.rvt"

我想构造一个ModelPath并使用它来打开云托管文件,如下所示:

ModelPath mp = ModelPathUtils.ConvertCloudGUIDsToCloudPath(projectId, modelId);
linkDoc = uiapp.OpenAndActivateDocument(mp, new OpenOptions(), false, new cloudCallback()).Document;

如何从 PathName 中获取 projectId 和 modelId GUID?

【问题讨论】:

我相信是这样,请在我回答之前仔细检查该信息。你试过了吗? @AugustoGoncalves 2019 What's New 说“项目 Guid 和模型 Guid(可以从各种 Forge API 获得)。”但是,当我只有 RVT 链接的路径名时,应该使用哪些 Forge API 来获取 GUID? 【参考方案1】:

使用 Forge Data Management API 您可以列出 Hubs > Projects > Folders > Items > Versions。一个项目本质上是一个文件,但它可以有 1+ 个版本,所以这就是您需要特定版本的原因。 This tutorial 指导您完成步骤。

一旦你list version of an item,它应该是.data下的一个数组,数组上的每个条目应该有类似(简化的):

  
   "type":"versions",
   "id":"urn:adsk.wipprod:fs.file:vf.abcd1234?version=1",
   "attributes":  
      "name":"fileName.rvt",
      "displayName":"fileName.rvt",
      ...
      "mimeType":"application/vnd.autodesk.r360",
      "storageSize":123456,
      "fileType":"rvt",
      "extension":  
         "type":"versions:autodesk.bim360:C4RModel",
         ....
         "data":  
            ...
            "projectGuid":"48da72af-3aa6-4b76-866b-c11bb3d53883",
            ....
            "modelGuid":"e666fa30-9808-42f4-a05b-8cb8da576fe9",
            ....
         
      
   ,
   ....

更新

从评论中,您可以在 Revit 桌面上使用:

ModelPath path = doc.GetCloudModelPath();
Guid guid1 = path.GetModelGUID();
Guid guid2 = path.GetProjectGUID();

【讨论】:

您建议的教程需要的信息在我描述的情况下似乎不可用。我所拥有的只是来自 BIM360 上的 RVT 的 RevitLinkInstance。考虑到RevitLinkType.PathType会抛出InvalidOperationException(无法确定(或设置)Revit链接的PathType,因为它不是从本地磁盘驱动器或Revit Server加载的),我想知道Revit 2019是否支持获取这个modelGuid和projectGuid来自 RevitLinkInstance。您能否确认这是否可以完成?【参考方案2】:

我还没有使用 Forge API(我真的需要自己阅读教程)。我不知道这是否会有所帮助,或者您是否找到了您正在寻找的答案,但缓存文件夹确实包含所有文件和项目 GUID,包括链接:“C:\Users\username\AppData\Local\Autodesk\Revit \Autodesk Revit 2019\CollaborationCache\2008062704538XX\4680d561-ed69-4a61-b9b2-587582b1627a\LinkedModels\1f96b01e-640e-4e16-93af-edcc11769570.rvt"

【讨论】:

我可以确认您的示例“4680d561-ed69-4a61-b9b2-587582b1627a”中的第一个 GUID 是项目 GUID。对于模型 GUID,我使用 .rvt 文件名中的 GUID 和 RevitBatchProcessor v1.6 直接在项目文件夹中测试打开模型,它可以工作。虽然不确定 LinkedModels 文件夹中文件的行为..【参考方案3】:

在以下路径中:

C:\Users\username\AppData\Local\Autodesk\Revit\Autodesk Revit 2019\CollaborationCache\2008062704538XX\4680d561-ed69-4a61-b9b2-587582b1627a\LinkedModels\1f96b01e-640e-4e16-93af-edcc11769570.rvt"

2008062704538XX 是氧气 ID,它是一个唯一 ID,它与您的 Autodesk 帐户相关联。

4680d561-ed69-4a61-b9b2-587582b1627a 是项目的 GUID。1f96b01e-640e-4e16-93af-edcc11769570 是链接模型的 GUID。

【讨论】:

以上是关于如何从 PathName 获取 Project Guid 和 Model Guid?的主要内容,如果未能解决你的问题,请参考以下文章

NextJS:动态 router.pathname 不显示路径,而是显示文件名 - 如何获取路径中的单词?

如何从文件路径中删除%20?

如何获取GET请求的数据 通过 query拿到,url相关pathname

JavaScript获取contextPath

JS 获取上一层目录

从 react-router-redux 获取当前位置