Autodesk.Revit.DB.BuiltInFailures.DimensionFailures是Revit API中的一个枚举类,用于表示尺寸创建和编辑时可能出现的失败类型。
尺寸文字太小。
尺寸文字太大。
无效的尺寸类型。
无效的值。
无效的引线位置。
尺寸引线不能与元素对齐。
元素之间缺少见证线。
缺少开放标识。
缺少结尾标识。
尺寸内无文本。
元素之间缺少边框线。
引线重叠。
无效的弯头位置。
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
[Transaction(TransactionMode.Manual)]
public class DimensionFailuresExample : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
// 获取选中的尺寸元素
Reference reference = uidoc.Selection.PickObject(ObjectType.Element, new DimensionSelectionFilter(), "Select a dimension");
Dimension dimension = doc.GetElement(reference) as Dimension;
FailureMessage fm = new FailureMessage(dimension);
fm.HasResolutions = false;
fm.SetSeverity(FailureSeverity.Warning);
switch (dimension.GetFailureSeverity())
{
case DimensionToleranceAboveHead.BuiltInFailures.DimensionFailures.DimensionTextTooSmall:
fm.SetFailureId(FailureDefinitionId.LookupFailureDefinitionId(FailureDefinitionIds.DimensionTextTooSmall));
fm.SetDescription("The dimension text is too small.");
break;
case DimensionToleranceAboveHead.BuiltInFailures.DimensionFailures.DimensionTextTooLarge:
fm.SetFailureId(FailureDefinitionId.LookupFailureDefinitionId(FailureDefinitionIds.DimensionTextTooLarge));
fm.SetDescription("The dimension text is too large.");
break;
default:
fm.SetFailureId(FailureDefinitionId.LookupFailureDefinitionId(FailureDefinitionIds.GenericModelCreation));
fm.SetDescription("An unknown error occurred.");
break;
}
// 触发失败
FailureHandlingResult result = doc.PostFailure(fm);
if (result == FailureHandlingResult.Continue)
{
// 解决失败
}
return Result.Succeeded;
}
}
public class DimensionSelectionFilter : ISelectionFilter
{
public bool AllowElement(Element elem)
{
return elem is Dimension;
}
public bool AllowReference(Reference reference, XYZ position)
{
return true;
}
}
以上示例展示了如何检查选中的尺寸元素的失败类型,并在必要时触发相应的失败信息。其中,根据尺寸的失败类型不同,将使用不同的FailureDefinitionId和Description来创建FailureMessage。如果失败可以被解决,则在执行解决操作后返回Result.Succeeded。