Autodesk.Revit.DB.BuiltInFailures.RoofFailures是Revit中建筑元素的一个枚举类型,用于表示屋顶的各种错误和失败。
RoofFailures枚举类型包含以下成员:
CannotModifySlopedSlabRoofProfile: 无法修改屋顶坡度的平面屋面剖面。可能原因包括该屋顶已被锁定或被其他元素引用。CannotModifyRoofByExternalBoundedCurves: 无法通过边界曲线修改屋顶。这可能是因为该屋顶已被锁定或被其他元素引用。CurveMustBeOnRoofSurface: 曲线必须在屋面表面上。如果曲线没有在屋面表面上,则无法对其进行修改。InvalidRoofType: 屋顶类型无效。这可能是因为屋顶类型已被删除或已被修改。InvalidRoofBoundary: 屋顶边界无效。这可能是由于边界曲线与其他元素重叠或不连续导致的。RoofCannotContainSelfIntersectingLoops: 屋顶不能包含自相交的循环。如果屋顶中的一个循环与其他循环相交,则该屋顶失败。RoofCannotContainNestedLoops: 屋顶不能包含嵌套循环。如果屋顶中的一个循环完全位于另一个循环内,则该屋顶失败。RoofCannotContainBoundaryLoops: 屋顶不能包含边界循环。如果屋顶中的一个循环与边界重叠,则该屋顶失败。以下示例演示如何使用Autodesk.Revit.DB.BuiltInFailures.RoofFailures:
try
{
// 尝试修改屋顶使用的类型
roof.Document.Invoke(m =>
{
// ...
});
}
catch (Autodesk.Revit.Exceptions.InvalidOperationException ex)
{
// 如果存在屋顶类型无效失败,则忽略并继续执行
if (ex.InnerException is Autodesk.Revit.Exceptions.InvalidOperationException &&
(Autodesk.Revit.DB.BuiltInFailures.RoofFailures)Enum.Parse(typeof(Autodesk.Revit.DB.BuiltInFailures.RoofFailures), ex.InnerException.Message) == Autodesk.Revit.DB.BuiltInFailures.RoofFailures.InvalidRoofType)
{
// ...
}
else
{
// 如果存在其他失败,则记录并抛出异常
Autodesk.Revit.Exceptions.FailureHandlingOptions options = m.GetFailureHandlingOptions();
options.SetFailuresPreprocessor(new Autodesk.Revit.DB.FailuresPreprocessor());
options.SetClearAfterRollback(true);
Autodesk.Revit.DB.FailureMessageInfo[] messages = options.GetPreprocessedFailures();
throw new Autodesk.Revit.Exceptions.FailureException("Failed to modify roof.", messages);
}
}