面分割

面分割

面は[面を分割]コマンドによって領域に分割できます。Face.HasRegions プロパティは、[面を分割]コマンドによって作成された領域が面に含まれるかどうかを報告し、Face.GetRegions()メソッドは面のリストを返します。面のリストには、[面を分割]をホストするオブジェクトの主要な面(床の壁など)と各[面を分割]領域の面が含まれます。

FaceSplitter クラスは、面を分割する要素を表します。FaceSplitter.SplitElementId プロパティは、この要素によって分割される面を持つ要素の ID を提供します。FaceSplitter クラスを使用すると、次に示すように、これらの面をタイプでフィルタして検索することができます。

コード領域: 要素を分割している面を検索

Autodesk.Revit.DB.Options opt = app.Create.NewGeometryOptions();
opt.ComputeReferences = true;
opt.IncludeNonVisibleObjects = true;
FilteredElementCollector collector = new FilteredElementCollector(doc);
ICollection<FaceSplitter> splitElements = collector.OfClass(typeof(FaceSplitter)).Cast<FaceSplitter>().ToList();
foreach(FaceSplitter faceSplitter in splitElements)
{
    Element splitElement = doc.GetElement(faceSplitter.SplitElementId);
    Autodesk.Revit.DB.GeometryElement geomElem = faceSplitter.get_Geometry(opt);
    foreach (GeometryObject geomObj in geomElem)
    {
        Line line = geomObj as Line;
        if (line != null)
        {
            XYZ end1 = line.GetEndPoint(0);
            XYZ end2 = line.GetEndPoint(1);
            double length = line.ApproximateLength;
        }
    }
}