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);
}
}