你能取消“重复标记”吗?提示符在Revit c#程序

本文关键字:提示符 Revit 程序 重复标记 取消 | 更新日期: 2023-09-27 18:04:44

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

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

其实很简单。您可以使用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();
}

你能取消“重复标记”吗?提示符在Revit c#程序