事务是将一系列BIMBase模型的操作提交至文档的一种对象。BIMBase会在调用外部命令之前自动创建一个事务,并且该事务会在外部命令结束时提交。在一个事务中进行的所有修改都能被撤销。BIMBase API提供BPTransactionManager类用于管理事务。主要提供了事务和事务组两种机制。

  • 事务
    在任何时候,一个文档当前只能有一个打开的事务,不允许嵌套。如果要创建自己的事务或事务组,需提交或回退当前命令所在的事务。当事务被成功提供后,这个事务可在Undo功能中被回退。
  • 事务组
    事务组用来将几个独立的事务分组,这样一个组可以同时处理许多事务,当一个事务组提交,那么这个组里的所有事务将被合并成一个成功提交的事务,并可在Undo功能中被回退。

    表2-3 事务管理类接口

方法 描述
activate() 启用事务机制
deactivate() 关闭事务机制
bool isActive() 事务机制是否启用
int getCurrTransactionPos() 获取当前事务位置
cancelToPos(int ,bool) 撤销到指定事务位置
closeCurrentTxn(bool) 结束当前事务
startTxnGroup(bool startNewTxn) 开启一个事务组
endTxnGroup() 结束当前事务组
int getTxnGroupCount() 获取事务组个数
int getCurrGroupStartPos() 获取当前事务的起始位置