Autodesk.Revit.DB.ValidateCurveLoopsOptions
是 Revit API 中用于验证曲线环路的选项类。
曲线环路是一组形状相同、位置相邻的多段曲线。在 Revit 中,曲线环路通常用于描述墙体、屋顶、地面等建筑构件的形状。
曲线环路可能存在一些不合法的情况,例如线段之间存在间隙、相交或者重叠等,这些情况会导致建筑构件无法正确的被绘制或者无法被正确的处理。对于开发 Revit 插件的开发者而言,可以使用 Autodesk.Revit.DB.ValidateCurveLoopsOptions
类来验证曲线环路是否合法。
Autodesk.Revit.DB.ValidateCurveLoopsOptions
类包含以下属性:
bool
true
bool
true
double
0.001
通常情况下,开发 Revit 插件时需要使用 Autodesk.Revit.DB.CurveLoop
类来表示曲线环路对象。在验证曲线环路之前,需要使用 Autodesk.Revit.DB.CurveLoop.Create(ICollection<Curve> curves)
方法来创建曲线环路对象。
ICollection<Curve> curves = new List<Curve>();
curves.Add(Line.CreateBound(new XYZ(0, 0, 0), new XYZ(10, 0, 0)));
curves.Add(Line.CreateBound(new XYZ(10, 0, 0), new XYZ(10, 5, 0)));
curves.Add(Line.CreateBound(new XYZ(10, 5, 0), new XYZ(0, 5, 0)));
curves.Add(Line.CreateBound(new XYZ(0, 5, 0), new XYZ(0, 0, 0)));
CurveLoop curveLoop = CurveLoop.Create(curves);
在创建好曲线环路对象之后,可以使用 Autodesk.Revit.DB.GeometryValidator.ValidateCurveLoops(CurveLoopArray loops, ValidateCurveLoopsOptions options, IList<IntBolleanPair> results)
方法来验证曲线环路。
CurveLoopArray curveLoops = new CurveLoopArray();
curveLoops.Append(curveLoop);
ValidateCurveLoopsOptions options = new ValidateCurveLoopsOptions()
{
IncludeCrossingCurves = true,
IncludeOverlappingCurves = false,
Tolerance = 0.001
};
IList<IntBolleanPair> results = new List<IntBolleanPair>();
GeometryValidator.ValidateCurveLoops(curveLoops, options, results);
foreach (IntBolleanPair result in results)
{
if (result.Value)
{
Console.WriteLine("The curve loop at {0} is valid.", result.Index);
}
else
{
Console.WriteLine("The curve loop at {0} is invalid.", result.Index);
}
}
如果曲线环路是合法的,则验证结果的 Value
属性会为 true
;如果曲线环路是不合法的,则验证结果的 Value
属性会为 false
。可以根据需要进行进一步的处理。