Autodesk.Revit.DB.SubTransaction
类表示在主事务中创建和管理的子事务,可用于执行只需要部分撤消的操作。
IsDisposed
: 只读属性,指示此实例是否已被释放并且无法再使用。SubTransaction(Transaction parentTransaction)
: 创建SubTransaction
类的一个新实例,这个实例的父事务是指定的事务。Commit()
: 提交该子事务,如果父事务也已提交,那么客户端必须配合使用此方法。Dispose()
: 释放由该实例占用的资源。Start()
: 在此实例的父事务中启动子事务。RollBack()
: 回滚此实例所代表的子事务,并撤消事务中的所有操作。// 创建主事务
using (Transaction t = new Transaction(doc, "Main Transaction"))
{
t.Start();
// 在主事务中创建子事务
using (SubTransaction subT = new SubTransaction(doc))
{
subT.Start();
// 在子事务中执行操作
Element elem1 = doc.GetElement(new ElementId(123));
elem1.Name = "new name";
// 提交子事务
subT.Commit();
}
// 继续在主事务中执行操作
Element elem2 = doc.GetElement(new ElementId(456));
elem2.Name = "new name";
// 提交主事务
t.Commit();
}
在上面的示例中,SubTransaction
类用于将一系列操作组合在一起。如果使用RollBack()
方法,子事务中的所有操作都可以撤消,但是父事务中的其他操作不会受到影响,因为在主事务中创建子事务时,SubTransaction
类会推迟父事务的提交。