你可以压制"重复标记"在c#程序期间在Revit中提示?

时间:2014-05-23 15:56:20

标签: c# revit-api

我有一个程序设置“标记”参数值,每个“相同”光束或列都是唯一的。这通常导致多个梁具有相同的“Mark”参数,Revit显示奇怪的“警告 - 可以忽略.......元素具有重复的'Mark'值”(奇怪,因为它不能真正被忽略,因为它总是显示。)

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

1 个答案:

答案 0 :(得分: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();
}