using System; using System.Collections.Generic; using Autodesk.Revit.DB; namespace FWindSoft.Revit { /// /// 触发器就是过滤器 /// public class RevitTrigger { public RevitTrigger(ElementFilter filter, ChangeType change) { Filter = filter; ChangeType = change; } public RevitTrigger(Document document, ElementFilter filter, ChangeType change):this(filter,change) { Document = document; } public RevitTrigger(Document document, ICollection elements, ChangeType change):this(document, filter:null, change:change) { ElementIds = elements; } #region 触发器关联属性 public Document Document { get; set; } public ICollection ElementIds { get; set; } public ChangeType ChangeType { get; set; } public ElementFilter Filter { get; set; } #endregion #region 方法标记 /// /// 附加触发器 /// /// public void AttachUpdater(RevitUpdater updater) { AttachUpdaterId(updater.GetUpdaterId()); } public void AttachUpdaterId(UpdaterId updaterId) { if (Document == null) { UpdaterRegistry.AddTrigger(updaterId, Filter, ChangeType); } else if(ElementIds==null) { UpdaterRegistry.AddTrigger(updaterId, Document, Filter, ChangeType); } else if (Filter == null) { UpdaterRegistry.AddTrigger(updaterId, Document, ElementIds, ChangeType); } } #endregion } }