=========【更多高级应用请关注公众号】========
===================================
由于Revit API对于Revit事务没有默认值,用户必须显式地指定标签值。用户在实现IExternalCommand接口时必须指定执行命令所使用的TransactionMode属性。
[Autodesk.Revit. Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]
public class Classl: IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
return Result.Succeeded;
}
}
TransactionMode分为Automatic、Manual和ReadOnly。
①TransactionMode.Automatic:
Revit会在调用外部命令之前自动创建一个Transaction,并且该Transaction会在外面命令结朿时提交或者回滚。如果外部命令执行成功,则提交Transaction;如果有异常,则回滚。在该模式下,外部命令不能再创建自己的Transaction,但是可以创建 SubTransactions。
②TransactionMode.Manual:
此模式表示Revit不会自动创建一个Transaction。如果用户需要修改Revit摸型,则需要自行创建Transaction,并且自行管理这个Transaction提交还是回滚。
③TransactionMode.ReadOnly:
在该模式下,外部命令不能有任何的Transaction,否则在创建Transaction或者修改 Revit文档都会抛出异常。
需要注意的是, 上述三种TransactionMode都只在活动文档范围内有效。