Files
ShrlAlgoToolkit/ShrlAlgoToolkit.Revit/Assists/FailuresPreProcessor.cs

54 lines
1.3 KiB
C#
Raw Normal View History

2024-09-22 11:05:41 +08:00
using Autodesk.Revit.DB;
2025-04-24 20:56:44 +08:00
namespace ShrlAlgoToolkit.Revit.Assists
2024-09-22 11:05:41 +08:00
{
/// <summary>
/// 错误预处理
/// </summary>
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;
}
}
}