Autodesk Forge Design Automation - 打开模型时出错 - 如何绕过对话框 "Model has been transmitted from remote location"

Autodesk Forge Design Automation - Error Opening a model - How to bypass Dialog Box "Model has been transmitted from remote location"

我正在尝试使用设计自动化 api 从我们的 BIM360 帐户打开 Revit 模型,例如。从以前版本的 Revit 升级它

我在本地测试的时候,有些rvt文件在打开的时候会弹出一个对话框: 已传输文件 - 此文件已从远程位置传输 - 请参阅附件图片(这是从 BIM360 下载的副作用)

dialog box on file open Transmitted file

我的问题是 - 如何绕过此对话框,以便插件可以与 Design Aurtomation 一起工作(其中不支持 UI、对话框或警告)

我对 Jeremy T 关于这个问题的帖子做了一些研究,并找到了一些关于如何使用 DialogBoxShowing 事件在对话框出现之前捕获和响应的信息。 https://thebuildingcoder.typepad.com/blog/2009/06/autoconfirm-save-using-dialogboxshowing-event.html

但是,问题在于此事件是 UIApplication 命名空间的一部分,因此在 Design Automation 云 Revit 引擎中可能不可用 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

关于如何打开传输的模型以使用设计自动化进行处理有什么想法吗?

谢谢!
艾德 G

来自 BIM 360 的文件是 eTransmitted 工作共享文件。要在 DesignAutomation for Revit 中打开此类文件,您需要使用 OpenOptionsDetachAndPreserveWorksetsDetachAndDiscardWorksets)。如果您保留工作集并想保存文件,请记住使用正确的 SaveAsOptions.

在 activity 中明确指定输入文件的本地名称:

{
  "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."
  }
}

在您的应用程序包中,使用 OpenOptions DetachAndPreserveWorksetsDetachAndDiscardWorksets.

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

我的 AU class 中对此进行了介绍(请参阅第 37 分钟处的视频)。