namespace HStation.Service
|
{
|
/// <summary>
|
/// 连接列表拓展
|
/// </summary>
|
public static class RevitConnectListExtensions
|
{
|
/// <summary>
|
/// 获取中心位置
|
/// </summary>
|
public static Model.RevitPosition GetCenterPosition(this List<Model.RevitConnect> list)
|
{
|
if (list == null || list.Count < 1)
|
{
|
return default;
|
}
|
var pts = list.Select(x => x.Position).ToList();
|
return pts.GetCenter();
|
}
|
|
/// <summary>
|
/// 获取开始连接
|
/// </summary>
|
public static Model.RevitConnect GetStartConnect(this List<Model.RevitConnect> list)
|
{
|
if (list == null || list.Count < 1)
|
{
|
return default;
|
}
|
var start = list.FirstOrDefault(x => !string.IsNullOrEmpty(x.Id) && x.Direction == Direction.Inlet);
|
if (start == null)
|
{
|
start = list.FirstOrDefault(x => !string.IsNullOrEmpty(x.Id) && x.Direction == Direction.None);
|
}
|
return start;
|
}
|
|
/// <summary>
|
/// 获取结束连接
|
/// </summary>
|
public static Model.RevitConnect GetEndConnect(this List<Model.RevitConnect> list)
|
{
|
if (list == null || list.Count < 1)
|
{
|
return default;
|
}
|
var end = list.FirstOrDefault(x => !string.IsNullOrEmpty(x.Id) && x.Direction == Direction.Outlet);
|
if (end == null)
|
{
|
end = list.LastOrDefault(x => !string.IsNullOrEmpty(x.Id) && x.Direction == Direction.None);
|
}
|
return end;
|
}
|
|
/// <summary>
|
/// 获取开始连接列表
|
/// </summary>
|
public static List<Model.RevitConnect> GetStartConnects(this List<Model.RevitConnect> list)
|
{
|
if (list == null || list.Count < 1)
|
{
|
return new List<Model.RevitConnect>();
|
}
|
var starts = list.Where(x => x.Direction == Direction.Inlet).ToList();
|
return starts;
|
}
|
|
/// <summary>
|
/// 获取结束连接列表
|
/// </summary>
|
public static List<Model.RevitConnect> GetEndConnects(this List<Model.RevitConnect> list)
|
{
|
if (list == null || list.Count < 1)
|
{
|
return new List<Model.RevitConnect>();
|
}
|
var ends = list.Where(x => x.Direction == Direction.Outlet).ToList();
|
return ends;
|
}
|
|
/// <summary>
|
/// 获取无方向连接列表
|
/// </summary>
|
public static List<Model.RevitConnect> GetNoneConnects(this List<Model.RevitConnect> list)
|
{
|
if (list == null || list.Count < 1)
|
{
|
return new List<Model.RevitConnect>();
|
}
|
var nones = list.Where(x => x.Direction == Direction.None).ToList();
|
return nones;
|
}
|
|
|
}
|
}
|