先获取到楼板最上层的面
方法一:
List<Reference> faceRefs = HostObjectUtils.GetTopFaces(floor).ToList();
List<Face> flrFaces = new List<Face>();
faceRefs.ForEach(p => flrFaces.Add(document.GetElement(p).GetGeometryObjectFromReference(p) as Face));
floor是你的楼板,这里的flrFaces得到了楼板的面(flrFaces应该只有一个face)。
方法二:
Options options = new Options();
options.ComputeReferences = true;
GeometryElement geometryElement = floor.get_Geometry(options);
foreach (GeometryObject item in geometryElement)
{
if (item is Solid solid)
{
List<Face> list = new List<Face>();
foreach (Face face in solid.Faces)
{
list.Add(face);
}
double AreaMax = list.Max(t => t.Area);
normalFace = list.FirstOrDefault(p => p.Area == AreaMax);
}
}
这里是通过get_Geometry获取几何数据,取得面积最大的一个面