Autodesk Forge Design Automation - Ошибка при открытии модели - Как обойти диалоговое окно «Модель была передана из удаленного местоположения» - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь использовать API автоматизации проектирования, чтобы открыть модель Revit из нашей учетной записи BIM360, например. обновить его с предыдущей версии Revit

При локальном тестировании некоторые файлы rvt отображают диалоговое окно при открытии: Переданный файл - этот файл был передан из удаленного местоположения - см. прикрепленное изображение (это побочный эффект от загрузки с BIM360)

диалоговое окно при открытии файла Переданный файл

мой вопрос - как я могу обойти это диалоговое окно, чтобы надстройка могла работать с Design Aurtomation (в котором не поддерживается пользовательский интерфейс, диалоги или предупреждения)

Я провел некоторое исследование на Джереми Сообщения T по этой проблеме, а также некоторые сведения о том, как использовать событие DialogBoxShowing для отлова и ответа на диалоговые окна до их появления. https://thebuildingcoder.typepad.com/blog/2009/06/autoconfirm-save-using-dialogboxshowing-event.html

Однако проблема заключается в том, что что это событие является частью пространства имен UIApplication, поэтому, вероятно, недоступно в облаке Revit Engine Design Automation https://www.revitapidocs.com/2017/cb46ea4c-2b80-0ec2-063f-dda6f662948a.htm

Также в любом случае кажется, что это конкретное событие не было запущено когда модель открыта https://forums.autodesk.com/t5/revit-api-forum/dialogboxshowing-event-not-firing-when-model-is-opened/td-p/5578594

Есть идеи, как открыть переданные модели для обработки с помощью Design Automation?

Спасибо!
Ed G

1 Ответ

0 голосов
/ 08 апреля 2020

Файл из BIM 360 представляет собой файлы eTransmitted. Чтобы открыть такой файл в DesignAutomation for Revit, вам необходимо использовать OpenOptions (DetachAndPreserveWorksets или DetachAndDiscardWorksets). Если вы сохраняете рабочие наборы и хотите сохранить файл, не забудьте использовать правильный SaveAsOptions.

. В своей деятельности явно укажите локальное имя для входного файла:

{
  "alias": "prod",
  "activity": {
    "id": "YourActivity",
    "commandLine": [ "$(engine.path)\\\\revitcoreconsole.exe /al $(appbundles[YourBundle].path)" ],
    "parameters": {
      "rvtFile": {
        "zip": false,
        "ondemand": false,
        "verb": "get",
        "description": "Input Revit model",
        "required": true,
        "localName": "input.rvt",
      }
    },
    "engine": "Autodesk.Revit+2020",
    "appbundles": [ "YourName.YourBundle+label" ],
    "description": "Bundle description."
  }
}

В вашем приложении откройте файл ввода "input.rvt", используя OpenOptions DetachAndPreserveWorksets или DetachAndDiscardWorksets.

   ModelPath path = ModelPathUtils.ConvertUserVisiblePathToModelPath("input.rvt");
   var opts = new OpenOptions
   {
      DetachFromCentralOption = DetachFromCentralOption.DetachAndPreserveWorksets
   };
   var document = application.OpenDocumentFile(path, opts);

Это было описано в моем классе AU (см. Видео с отметкой 37 минут).

...