using Autodesk.Revit.DB;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FWindSoft.Revit
{
///
/// 元素集合相关
///
public class ElementPath:List
{
public bool FirstIsType()
{
return FirstIsMath(e => e is T);
}
public bool FirstIsMath(Predicate predicate)
{
var useElement = this.FirstOrDefault();
if (useElement == null)
return false;
return predicate(useElement);
}
public bool LastIsType()
{
return LastIsMatch(e => e is T);
}
public bool LastIsMatch(Predicate predicate)
{
var useElement = this.LastOrDefault();
if (useElement == null)
return false;
return predicate(useElement);
}
public bool IsMatch(ElementPath path)
{
return this.Select(e => e.Id.IntegerValue)
.Intersect(path.Select(e => e.Id.IntegerValue))
.Count() == path.Count();
}
#region 重写方法
public override string ToString()
{
return string.Join(",", this.Select(e => e.Id.ToString()));
}
#endregion
}
}