1. 程式人生 > >Revit二次開發 事務標簽值

Revit二次開發 事務標簽值

sub nsa ESS 需要 ret 使用 用戶 ado 命令執行

Revit開發中,事務應用非常頻繁,所有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都只在活動文檔範圍內有效

①TransactionMode.Automatic:
Revit會在調用外部命令之前自動創建一個Transaction,並且該Transaction會在外面命令結朿時提交或者回滾。如果外部命令執行成功,則提交Transaction;如果有異常,則回滾。在該模式下,外部命令不能再創建自己的Transaction,但是可以創建 SubTransactions。
②TransactionMode.Manual:
此模式表示Revit不會自動創建一個Transaction。如果用戶需要修改Revit摸型,則需要自行創建Transaction,並且自行管理這個Transaction提交還是回滾。
③TransactionMode.ReadOnly:
在該模式下,外部命令不能有任何的Transaction,否則在創建Transaction或者修改 Revit文檔都會拋出異常。

Revit二次開發 事務標簽值