Revit API ConvertCloudGUIDsToCloudPath 返回连接错误

问题描述 投票:0回答:1

这有可能是一次中断,但在撰写本文时 Autodesk 运行状况页面上未报告任何内容。

我多年来一直在多个版本的 Revit 上使用 Revit API 方法

ConvertCloudGUIDsToCloudPath
。今天我遇到了无法克服的问题。我正在本地 Windows 环境、几个 Windows 虚拟机和设计自动化应用程序包中进行测试。已在 Revit 版本 2020、2022 和 2023 中对 ACC 和 BIM 360 项目进行测试。

在今天的所有测试中,返回两个异常之一,

CentralModelMissingException
RevitServerCommunicationException

  1. 在本地 Windows 计算机上运行的 Revit 2020 的示例

Autodesk.Revit.Exceptions.CentralModelMissingException:缺少中心模型。在 Autodesk.Revit.DB.ModelPathUtils.ConvertCloudGUIDsToCloudPath(Guid 项目 ID,Guid 模型 ID)

  1. 设计自动化报告中的示例;运行 Revit 2023

Autodesk.Revit.Exceptions.RevitServerCommunicationException:无法访问中央服务器。在 Autodesk.Revit.DB.ModelPathUtils.ConvertCloudGUIDsToCloudPath(字符串区域,Guid projectGuid,Guid modelGuid) 在 LinkCloudModels.LoadCloudLinks.OpenCloudWorksharedDocument() 在 LinkCloudModels.LoadCloudLinks.Execute() 在 LinkCloudModels.App.LinkRevitCloudModels(DesignAutomationData 数据) 在 LinkCloudModels.App .HandleDesignAutomationReadyEvent(对象发送者,DesignAutomationReadyEventArgs e)在DesignAutomationFramework.DesignAutomationBridge.RaiseDesignAutomationReadyEvent(DesignAutomationReadyEventArgs e)在RevitCoreEngineTest.RceConsoleApplication.Program.UserMain(CommandLineArgs cl)

模型 GUID 来自数据管理 API 对 GET items/:project_id/folders/:folder_id/contents 的响应,位于项目的

included.attributes.extension.data.modelGuid
中。

项目 GUID 来自请求(删除“b.”前缀)或

included.attributes.extension.data.projectGuid
,具体取决于我正在测试的 Revit 插件。

在 Revit 2021+ 中,这些测试中的区域始终为“CloudRegionUS”。

相应本地或虚拟 Windows 计算机上的用户可以访问该项目,并且可以在引发 API 失败消息后不久通过给定计算机上的 Revit UI 打开模型。设计自动化工作项被赋予有效的三足令牌。

编辑以添加宏。 我已使用一对宏在 Revit 2023 和 2024 中复制了该问题。在文档宏上,我从开放云模型获取 GUID(Autodesk 示例模型在 ACC 项目中保存了云模型,然后启用了协作)。关闭示例模型后,我运行应用程序宏以尝试通过 API 重新打开它。始终出现以下异常。

文档宏代码

public void GetCloudGuids()
{
    var modelPath = this.Document.GetCloudModelPath();
    var projectGuid = modelPath.GetProjectGUID();
    var modelGuid = modelPath.GetModelGUID();
    string message = "Project GUID: " + projectGuid + "; Model GUID: " + modelGuid + ".";
            
    using (TextWriter tw = new StreamWriter("C:\\macro-tests\\cloud-guids.txt"))
    {
        tw.WriteLine(message);
        tw.Close();
    }
                   
    TaskDialog.Show("Model Cloud GUIDs", message);
}

应用宏代码

public void OpenCloudModel()
{       
    string region = "CloudRegionUS";
    var projectGuid = new Guid("<GUID copied from cloud-guids.txt>");
    var modelGuid = new Guid("<GUID copied from cloud-guids.txt>");
    
    try 
    {
        var modelPath = ModelPathUtils.ConvertCloudGUIDsToCloudPath(region, projectGuid, modelGuid);
        TaskDialog.Show("Model Path", "Got model path.");
        
        if (modelPath.CloudPath)
        {
            using (var openOptions = new OpenOptions())
            using (var worksetConfig = new WorksetConfiguration(WorksetConfigurationOption.OpenAllWorksets))
            using (var defaultCallback = new DefaultOpenFromCloudCallback())
            {
                openOptions.SetOpenWorksetsConfiguration(worksetConfig);
                var CurrentDocument = this.Application.OpenDocumentFile(modelPath, openOptions, defaultCallback);
            }
        }
    }
    catch (Exception ex)
    {
        using (TextWriter tw = new StreamWriter("C:\\macro-tests\\open-exception.txt"))
        {
            tw.WriteLine(ex.ToString());
            tw.Close();
        }
        
        TaskDialog.Show("Could not open cloud document", ex.Message);
    }
}

异常文本

Autodesk.Revit.Exceptions.RevitServerCommunicationException: The central server could not be reached.
   at Autodesk.Revit.DB.ModelPathUtils.ConvertCloudGUIDsToCloudPath(String region, Guid projectGuid, Guid modelGuid)
   at CloudModels.ThisApplication.OpenCloudModel() in c:\ProgramData\Autodesk\Revit\Macros\2024\Revit\AppHookup\CloudModels\Source\CloudModels\ThisApplication.cs:line 48

API 有变化吗?有停电吗?

autodesk-forge revit-api autodesk-designautomation autodesk-data-management
1个回答
0
投票
Project GUIDs are coming from either the request (removing the "b." prefix) or included.attributes.extension.data.projectGuid, depending on which of my Revit Addins I am testing.

如上所述,projectGuid 应始终来自数据管理 API 的included.attributes.extension.data.projectGuid,如下图所示,与 modelGuid 相同。不能是

request (removing the "b." prefix)
,请确保您使用正确的projectGuid 和 modelGuid。

© www.soinside.com 2019 - 2024. All rights reserved.