如何禁止“链接的.rvt文件的实例需要协调审核”对话框?

时间:2013-11-13 15:28:15

标签: c# revit revit-api

当我运行一个打开多个模型的加载项时,我需要禁止链接.rvt文件的实例需要Coordination Review 对话框,因为我不希望用户需要单击通过一堆对话框。我已经为UIApplication.DialogBoxShowing添加了一个事件处理程序,它会检查对话框是否有HelpId == 1011(找到here),这是我正在寻找的对话框。但是,当我尝试e.OverrideResult方法时,似乎总是取消操作。我已尝试TaskDialogResult.OkDialogResult.Ok,但他们都取消了操作。

这是我的事件处理程序:

private void application_DialogBoxShowing(object sender, 
  DialogBoxShowingEventArgs e)
{
  if (e.HelpId == 1011)
    e.OverrideResult((int)TaskDialogResult.Ok);
}

我可以传递哪些对话框结果以继续操作?

1 个答案:

答案 0 :(得分:1)

而不是在对话框显示时使用事件处理程序,而是决定创建一个与UIApplication.Application.FailuresProcessing事件关联的事件处理程序。我从Building Coder找到了有关失败API的信息。

以下代码将禁止所有警告。

private void Application_FailuresProcessing(object sender, 
  FailuresProcessingEventArgs e)
{
  FailuresAccessor failuresAccessor = e.GetFailuresAccessor();
  IEnumerable<FailureMessageAccessor> failureMessages =
    failuresAccessor.GetFailureMessages();

  foreach (FailureMessageAccessor failureMessage in failureMessages)
  {
    if (failureMessage.GetSeverity() == FailureSeverity.Warning)
      failuresAccessor.DeleteWarning(failureMessage)
  }

  e.SetProcessingResult(FailureProcessingResult.Continue)
}

如果您只想取消特定的协调审核消息,则可以为failureMessage.GetFailureDefinitionId().Guid == new Guid("3d983f31-9ee3-4c3a-bed8-663b32cecec5")添加if语句检查。