Autodesk.Revit.DB.BuiltInFailures.LevelAssociationFailures 是Revit API中的一个枚举类型,用于描述在Revit中涉及到楼层高度的错误或警告信息。在Revit中,如何正确的处理与楼层高度相关的问题是十分重要的,因为这关系到建筑物的造型、结构和实际使用。
Autodesk.Revit.DB.BuiltInFailures.LevelAssociationFailures 包含以下枚举成员:
CannotAddLevel:无法添加楼层。CannotDeleteLastLevel:无法删除最后一个楼层。CannotEditLevel:无法编辑楼层。CannotMoveLevel:无法移动楼层。ElevationOutOfRange:高程超出范围。HeightAboveTopLevel:高度超出顶层高度。HeightBelowBottomLevel:高度低于底层高度。IncompatibleLevelType:不兼容的楼层类型。InvalidLevelElevation:无效的楼层高程。InvalidLevelHeight:无效的楼层高度。InvalidProjectedElevation:无效的投影高程。LastLevelIsTemporary:最后一个楼层是临时的。LevelAssociatedWithLevel:楼层已与楼层关联。LevelHasElements:楼层上有元素不能进行操作。LevelInUse:楼层正在使用中,无法删除或移动。NoTopLevelDefined:未定义顶层。RevitCannotMoveLevels:Revit无法移动楼层。SelectedLevelsHaveRelationship:选择的楼层之间存在关联关系。下面是一个使用 Autodesk.Revit.DB.BuiltInFailures.LevelAssociationFailures 枚举类型的示例,通过判断楼层高度和类型是否合法,进行相应的错误处理。
public void CheckLevels(Document doc)
{
List<Level> allLevels = new FilteredElementCollector(doc).OfClass(typeof(Level)).Cast<Level>().ToList();
foreach (Level level in allLevels)
{
// 判断楼层高度是否合法
if (level.Elevation < -100 || level.Elevation > 1000)
{
TaskDialog.Show("Error", "楼层高度不合法!");
throw new Autodesk.Revit.Exceptions.OperationCanceledException("楼层高度不合法!");
}
// 判断楼层类型是否合法
if (level.LevelType != LevelType.FirstFloor && level.LevelType != LevelType.SecondFloor && level.LevelType != LevelType.Roof)
{
FailureMessage fm = new FailureMessage(FailureSeverity.Warning, "楼层类型不合法!");
fm.SetFailureCategory(FailureCategory.BuiltInFailures);
fm.SetElementIds(new List<ElementId>() { level.Id });
fm.SetFailureDefinitionId(Autodesk.Revit.DB.BuiltInFailures.LevelAssociationFailures.IncompatibleLevelType);
doc.PostFailure(fm);
}
}
}