你能取消“重复标记”吗?提示符在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();
}