[英]Initiate BIM360 Docs collaboration programmatically
为了升级到当前版本的 Revit,我们必须将我们的文件从 BIM360 Teams 迁移到 BIM360 Docs。 由于我们有数百份文件,我希望尽可能自动化这个过程。
Forge API 允许我从 BIM360 Teams 下载所有 Revit 文件。 我还可以使用 Revit API 或第三方应用程序(例如此 Bulk File Upgrader `)将它们全部升级到 Revit 2019。
使用 Forge BIM360 API,我能够以编程方式创建新项目,并从 Team Drive 上传文件和文件夹。 我难以以自动化方式完成的步骤是启动升级后的 Revit 2019 文件的协作。 有没有一种方法可以通过 Revit API 或 Forge API 来实现? 还是有另一种方法可以让我自动完成这两个 Autodesk Cloud Collaboration 解决方案之间的迁移?
我遇到了这个关于发布模型的教程,它表明需要通过 Revit UI 手动启动每个 Revit 文件的协作。 我希望找到这个建议的替代解决方案。
谢谢!
我的同事 Eason Kang 康益升确认您可以使用我之前的回答中提供的步骤来实现这一点,如下所示:
Revit 2019.2 和未来版本包括对“单用户工作流”(非工作共享云模型)的支持。 同时,他们公开了用于启动非工作共享云模型并将非工作共享云模型转换为工作共享云模型(C4R)的 API。
您可以使用单用户 API 来解决您提到的情况,如下所示:
Document.SaveAsCloudModel
的 API 调用启动非工作共享云模型。Document.EnableCloudWorksharing
将其转换为 C4R 模型。这是他的报告,包括解决过程中的凭据问题:
问题:我想使用 Revit 2020 API 将本地 RVT 保存到我的 BIM360 帐户(激活了 Design Collaboration 服务),但 Revit 总是抛出异常,提示我没有访问权限。 我拥有有效的 C4R 许可证,并且能够从我通过 Revit UI 传递给 API 的文件夹 ID 打开 C4R 模型。 什么东西少了?
代码:
doc.SaveAsCloudModel(
"urn:adsk.wipprod:fs.folder:co.8rtX03jDQXKnssA1FfrEXw",
doc.Title);
例外:
回答:您需要在manage.autodesk.com
中设置“Cloud Models for Revit”授权。
回应:谢谢你的澄清。 我将“Cloud Models for Revit”与 C4R 混淆了,而且我没有在我的 manage.autodesk.com 中设置“Cloud Models for Revit”授权。
答: “Cloud Models for Revit”是自 Revit 2019.2 以来提供的一项新服务。 它是 Revit 和 Revit LT 订阅的一部分。
顺便说一句,与 C4R 模型的主要区别在于,一次只有一个用户可以使用这种方法创建的模型。
回应:太好了!
我根据需要设置我的 Revit 订阅,按照 Jeremy 上面分享的步骤进行操作并确认它有效!
您可以使用以下步骤通过 Revit API 实现目标:
Document.SaveAsCloudModel
的 API 调用启动非工作共享云模型。Document.EnableCloudWorksharing
将其转换为 C4R 模型。这是我实现这个的测试代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
namespace adsk.c4r
{
[Transaction(TransactionMode.Manual)]
public class Command : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Application app = uiapp.Application;
string template = app.DefaultProjectTemplate;
string filename = @"D:\DevZone\ADN\t5021\revit_api_c4r_test_6.rvt";
string name = System.IO.Path.GetFileName(filename);
Document doc = app.NewProjectDocument(template);
doc.SaveAs(filename);
try
{
doc.SaveAsCloudModel(
"urn:adsk.wipprod:fs.folder:co.aCd1tMmrTxucmJcmtYTLBQ",
name);
var cloudPath = doc.GetCloudModelPath();
if(doc.CanEnableCloudWorksharing())
{
doc.EnableCloudWorksharing();
}
TaskDialog.Show("Revit",
string.Format("{0} is a C4R model now", name));
doc.Close();
uiapp.OpenAndActivateDocument(cloudPath, new OpenOptions(), false);
}
catch(Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
return Result.Cancelled;
}
return Result.Succeeded;
}
}
}
很抱歉延迟回答这个问题。
此问题听起来与 Revit API 讨论论坛中提出并升级为 ADN 案例 14906646 的问题相似旧主题将链接路径更改回云路径。
我们已经向 Revit、C4R、Forge 和 Desktop Connector 开发团队提出了这个问题,引发了热烈的讨论,目前还没有明确的答案。
我们正在尽可能努力和快速地进行研究,并将尽快提供更确凿的答案。
开发团队仍在讨论这个问题。 与此同时,他们还表示:
此请求记录在开发问题 REVIT-140793 中。
可能有一种解决方法可以实现您的需要。
Revit 2019.2 和未来版本包括对“单用户工作流”的支持——即非工作共享云模型。 同时,他们公开了用于启动非工作共享云模型并将非工作共享云模型转换为工作共享云模型(C4R)的 API。
因此,我认为您可以使用单用户 API 来解决您提到的以下情况:
Document.SaveAsCloudModel
的 API 调用启动非工作共享云模型。Document.EnableCloudWorksharing
将其转换为 C4R 模型。 Autodesk 最近还发布了一个GitHub 存储库,其中包含针对这种情况的解决方案。 你可以在这里找到谈论这个的视频。 这基本上使用 Revit 2022 API 中增强的 API 调用- RevitLinkType.Create
和RevitLinkType.LoadFrom
支持云模型创建和链接。
有一个关于如何使用 Revit API创建新云模型的相关问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.