using Autodesk.Revit.DB; namespace ShrlAlgoToolkit.Revit.Assists { /// /// 错误预处理 /// public class FailuresPreProcessor : IFailuresPreprocessor { ////警告、错误处理,放在发生警告的前面 public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor) { //获取所有的失败信息 var listFma = failuresAccessor.GetFailureMessages(); if (listFma.Count == 0) { return FailureProcessingResult.Continue; } foreach (var fma in listFma) { if (fma?.GetFailureDefinitionId() == BuiltInFailures.JoinElementsFailures.CannotJoinElementsError) { failuresAccessor.ResolveFailure(fma); } if (fma.GetFailureDefinitionId() == BuiltInFailures.OverlapFailures.WallsOverlap) { failuresAccessor.DeleteWarning(fma); } //如果是错误,则尝试解决 if (fma.GetSeverity() == FailureSeverity.Error) { //模拟手动单击"删除连接"按钮 if (fma.HasResolutions()) { failuresAccessor.ResolveFailure(fma); } return FailureProcessingResult.ProceedWithRollBack; } //如果是警告,则禁止弹框 if (fma.GetSeverity() == FailureSeverity.Warning) { failuresAccessor.DeleteWarning(fma); } } return FailureProcessingResult.ProceedWithCommit; } } }