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 } }