Autodesk.Revit.DB.BuiltInFailures.InaccurateFailures是Revit API中的一种BuiltInFailures类型,表示交互式模式下可能发生的精度错误。
在Revit中,当用户尝试执行某些操作时,可能会出现精度错误的情况。这种错误通常是由于模型中的几何图形非常复杂而导致的。例如,在用户创建某些具有复杂几何形状的元素(如基于曲面的墙壁)时可能会出现InaccurateFailures。
常量成员 | 描述 |
---|---|
WallInaccurateCurve | 基于曲面的墙壁出现精度错误 |
ColumnInaccurateCurve | 基于曲面的柱出现精度错误 |
BeamInaccurateCurve | 基于曲面的梁出现精度错误 |
下面的代码示例演示了如何检查InaccurateFailures:
IList<FailureMessageAccessor> failures = new List<FailureMessageAccessor>();
FailureHandlingOptions handlingOptions = app.Application.CreateNewFailureHandlingOptions();
// 激活InaccurateFailures规则
handlingOptions.SetFailuresPreprocessor(new BuiltInFailuresPreprocessor());
using(Transaction t = new Transaction(doc))
{
t.Start("Create wall");
if(!doc.Create.NewWall(LocationLine, true))
{
// 检查InaccurateFailures
failures = BuiltInFailuresAccessor.GetFailureMessages();
t.RollBack();
return Result.Cancelled;
}
t.Commit();
// 检查是否有未处理的失败消息
if(failures.Count > 0)
{
using(Transaction t2 = new Transaction(doc))
{
t2.Start("Handle failures");
FailureProcessingResult result = BuiltInFailuresAccessor.ProcessFailures(doc, handlingOptions, failures);
if(result == FailureProcessingResult.ProceedWithRollBack
|| result == FailureProcessingResult.Rollback)
{
t2.RollBack();
return Result.Cancelled;
}
t2.Commit();
}
}
}
在上面的代码示例中,通过设置InaccurateFailuresPreprocessor将InaccurateFailures规则激活(行21)。如果在创建墙壁时发生InaccurateFailures(行28),则使用BuiltInFailuresAccessor.GetFailureMessages方法(行35)获取失败消息,并使用BuiltInFailuresAccessor.ProcessFailures方法(行49)处理这些消息。处理结果可能是ProceedWithCommit(继续执行操作)、ProceedWithRollBack(回滚事务并取消操作)或Rollback(只回滚事务)(请参阅BuiltInFailuresProcessingResult枚举类型)。