Autodesk.Revit.DB.Events.PostEventArgs 是一个类,用于提供在revit对象上进行的事件完成后的相关信息。
public PostEventArgs()
public Document DbDocument { get; }
public ICollection<ElementId> AddedElementIds { get; }
public ICollection<ElementId> DeletedElementIds { get; }
public ICollection<ElementId> ImplicitlyModifiedElementIds { get; }
public ICollection<ElementId> UpdatedElementIds { get; }
public IDictionary<ElementId, string> UploadedElements { get; }
public void OnDocumentChanged(object sender, DocumentChangedEventArgs args)
{
if (args.GetTransactionNames().Contains("MyTransaction")) // 只在指定的事务完成后执行
{
PostEventArgs postArgs = args.GetPostTransactionEventArgs();
ICollection<ElementId> updatedElementIds = postArgs.UpdatedElementIds;
foreach (ElementId id in updatedElementIds)
{
Element elem = postArgs.DbDocument.GetElement(id);
// ...
}
}
}
上面的代码中,我们在 DocumentChanged 事件中获取了当前事务的 PostEventArgs,然后从中提取了更新元素的 ElementId 集合,再使用这些 Id 来获取对应的元素并进行后续处理。