Есть ли у нас доступ API к функциям C4R (Collaboration for Revit) в Forge API / Revit API? - PullRequest
0 голосов
/ 21 октября 2019

Недавно у нас появился запрос на автоматизацию процесса C4R (Collaboration for Revit). Есть ли у нас доступ API к функциям C4R в Forge API / Revit API? Мы искали доступ к API и не нашли никаких положительных результатов.

В качестве альтернативы, если мы загружаем файлы модели Revit через API BIM 360, тогда файл проекта Revit (.rvt) отключается / недоступен длярабочая среда. Есть ли возможный обходной путь для решения этой проблемы.

1 Ответ

0 голосов
/ 01 ноября 2019

Чтобы активировать модель C4R через Revit API, выполните, по крайней мере, следующие шаги:

  1. Инициируйте необобщенную облачную модель с помощью вызова API для Document.SaveAsCloudModel .
  2. Преобразование его в модель C4R через API Document.EnableCloudWorksharing


Вот фрагмент рабочего кода иего логика:

  1. Создание проекта архитектуры с использованием шаблона Revit
  2. Сохранение его на локальном диске, а затем сохранение в качестве модели облака
  3. Активация Revit Cloud Collaboration (C4R)) через Document.EnableCloudWorksharing
  4. Откройте модель C4R на рабочем столе Revit


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. Для этого подхода требуется облачная модель для получения прав Revit. Если вы не можете сохранить облачные модели, проверьте эту страницу: https://knowledge.autodesk.com/support/revit-products/learn-explore/caas/sfdcarticles/sfdcarticles/Using-Cloud-Worksharing-and-Cloud-Models-for-Revit.html

Note2. При таком подходе необходимо использовать Forge Data Management API для получения идентификатора папки во времявызывая Document.SaveAsCloudModel. Идентификатор папки также можно найти в URL-адресе документов BIM360 при просмотре папки «Документы». Например, URL-адрес вашей папки: https://docs.b360.autodesk.com/projects/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/folders/urn:adsk.wipprod:fs.folder:co.OOOOOXXXXX/detail, идентификатор папки urn:adsk.wipprod:fs.folder:co.OOOOOXXXXX

...