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 中打开此类文件,您需要使用 OpenOptions
(DetachAndPreserveWorksets
或 DetachAndDiscardWorksets
)。如果您保留工作集并想保存文件,请记住使用正确的 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
DetachAndPreserveWorksets
或 DetachAndDiscardWorksets
.
打开文件输入文件 "input.rvt"
ModelPath path = ModelPathUtils.ConvertUserVisiblePathToModelPath("input.rvt");
var opts = new OpenOptions
{
DetachFromCentralOption = DetachFromCentralOption.DetachAndPreserveWorksets
};
var document = application.OpenDocumentFile(path, opts);
我的 AU class 中对此进行了介绍(请参阅第 37 分钟处的视频)。
我正在尝试使用设计自动化 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 中打开此类文件,您需要使用 OpenOptions
(DetachAndPreserveWorksets
或 DetachAndDiscardWorksets
)。如果您保留工作集并想保存文件,请记住使用正确的 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
DetachAndPreserveWorksets
或 DetachAndDiscardWorksets
.
ModelPath path = ModelPathUtils.ConvertUserVisiblePathToModelPath("input.rvt");
var opts = new OpenOptions
{
DetachFromCentralOption = DetachFromCentralOption.DetachAndPreserveWorksets
};
var document = application.OpenDocumentFile(path, opts);
我的 AU class 中对此进行了介绍(请参阅第 37 分钟处的视频)。