/*-------------------------------------------------------------------------
* 功能描述:WallExtension
* 作者:xulisong
* 创建时间: 2019/6/26 17:57:20
* 版本号:v1.0
* -------------------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.DB;
using SAGA.DotNetUtils.Extend;
using SAGA.RevitUtils;
using SAGA.RevitUtils.Extends;
namespace RevitToJBim.Extension
{
public static class WallExtension
{
///
/// 获取墙底面的轮廓,主要处理门窗分割墙问题
///
///
///
public static List GetBottomFaces(this Wall wall)
{
var solids = Extension.GeometryElementExtension.GetSolids(wall);
//var topZ = wall.GetTopStaticHeight();
double volume = double.MinValue;
List faces = new List();
foreach (var solid in solids)
{
var tempVolume = solid.Volume;
double topZ = double.MaxValue;
//取体积最大的Solid
if (tempVolume.IsThan(volume))
{
volume = tempVolume;
faces.Clear();
}
else
{
continue;
}
foreach (Face face in solid.Faces)
{
if (face is PlanarFace planarFace && planarFace.FaceNormal.IsEqual(-XYZ.BasisZ))
{
var tempZ = planarFace.Origin.Z;
//取底面FaceNormal为(0,0,-1),Z最小
if (tempZ.IsLess(topZ))
{
faces.Clear();
topZ = tempZ;
faces.Add(planarFace);
}
else if(tempZ.IsEqual(topZ))
{
faces.Add(planarFace);
}
}
}
}
return faces;
}
}
}