0

我们最近有一项关于自动化 C4R(Revit 协作)流程的调查。我们是否可以通过 API 访问 Forge API/Revit API 中的 C4R 功能?我们搜索了 API 访问权限,但没有找到任何积极的结果。

或者,如果我们通过 BIM 360 API 上传 Revit 模型文件,则 Revit 项目文件 (.rvt) 将断开连接/无法用于工作共享环境。是否有任何可能的解决方法来解决此问题。

4

1 回答 1

0

要通过 Revit API 激活 C4R 模型,请至少执行以下步骤:

  1. 通过对Document.SaveAsCloudModel的 API 调用启动非工作共享云模型 。
  2. 通过 API Document.EnableCloudWorksharing将其转换为 C4R 模型


这是一个有效的代码片段及其逻辑:

  1. 使用 Revit 模板创建建筑项目
  2. 将其保存到本地磁盘,然后将其保存为云模型
  3. 通过Document.EnableCloudWorksharing激活 Revit Cloud Collaboration (C4R)
  4. 在 Revit 桌面中打开 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 = @"C:\tmp\revit_api_c4r_test.rvt";
                string name = System.IO.Path.GetFileName(filename);

                Document newdoc = app.NewProjectDocument(template);
                newdoc.SaveAs(filename);


                try
                {
                    newdoc.SaveAsCloudModel("urn:adsk.wipprod:fs.folder:co.OOOOOXXXXX", name);
                    var cloudPath = newdoc.GetCloudModelPath();
                    var newdocCanC4R = newdoc.CanEnableCloudWorksharing();

                    if(newdocCanC4R)
                    {
                        newdoc.EnableCloudWorksharing();
                    }

                    TaskDialog.Show("Revit", string.Format("{0} is a C4R model now", name));
                    newdoc.Close();

                    uiapp.OpenAndActivateDocument(cloudPath, new OpenOptions(), false);
                }
                catch(Exception ex)
                {
                    System.Diagnostics.Trace.WriteLine(ex.Message);
                    return Result.Cancelled;
                }

                return Result.Succeeded;
            }
        }
    }

希望能帮助到你!


注1。此方法需要 Cloud Model for Revit 权利。如果您无法保存云模型,请查看此页面:https ://knowledge.autodesk.com/support/revit-products/learn-explore/caas/sfdcarticles/sfdcarticles/Using-Cloud-Worksharing-and-Cloud-Models -for-Revit.html

笔记2。这种方法在调用 Document.SaveAsCloudModel 时必须使用Forge 数据管理 API来获取文件夹 ID。在查看 Docs 文件夹时,也可以在 BIM360 Docs URL 中找到文件夹 ID。例如,您的文件夹 URL 为:https ://docs.b360.autodesk.com/projects/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/folders /urn:adsk.wipprod:fs.folder:co.OOOOOXXXXX/detail,文件夹 id 是urn:adsk.wipprod:fs.folder:co.OOOOOXXXXX

于 2019-11-01T10:02:55.610 回答