2014-05-23 27 views
1

我有一个程序设置“标记”参数值,对每个“相同”光束或列是唯一的。这通常会导致多个光束具有相同的“标记”参数,并且Revit会显示奇数的“警告 - 可以忽略.......元素具有重复的”标记“值”(因为它不能真正被忽略,因为它总是显示)。你可以在c#程序中抑制Revit中的“重复标记”提示吗?

有没有人知道如何在程序执行期间关闭此警告?我可能会收集其他元素类型(例如连接,加强元素,甚至基础)并分配“标记”参数,并且避免出现4或5次警告会很好。

回答

0

它实际上很简单。您可以使用一种叫做IFailurePreprocessor捕捉所有这些警告和代码解雇他们:

创建一个预处理类:

public class DuplicateMarkSwallower : IFailuresPreprocessor 
{ 
    public FailureProcessingResult PreprocessFailures(FailuresAccessor a) 
    { 
     var failures = a.GetFailureMessages(); 
     foreach (var f in failures) 
     { 
      var id = f.GetFailureDefinitionId(); 
      if (BuiltInFailures.GeneralFailures.DuplicateValue == id) 
      { 
       a.DeleteWarning(f); 
      } 
     } 
     return FailureProcessingResult.Continue; 
    } 
} 

然后你可以使用它像这样:

using (var trans = new Transaction(_doc, "Creating Numbers")) 
{ 
    trans.Start(); 

    // Set failure handler 
    var failureOptions = trans.GetFailureHandlingOptions(); 
    failureOptions.SetFailuresPreprocessor(new DuplicateMarkSwallower()); 
    trans.SetFailureHandlingOptions(failureOptions); 

    // do your thing here 

    trans.Commit(); 
} 
相关问题