- 积分
- 1771
- 明经币
- 个
- 注册时间
- 2003-7-22
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2003-11-6 08:51:00
|
显示全部楼层
// 创建长事务管理器实例, 并调出外部数据库的实体
AcDbIdMapping errorMap;
acapLongTransactionManagerPtr()->checkOut(transId,objIdArray,id,errorMap);
// ***************************************
AcApLongTransactionManager::Checkout函数
virtual Acad::ErrorStatus
checkOut(
AcDbObjectId& transId,
AcDbObjectIdArray& objList,
AcDbObjectId toBlock,
AcDbIdMapping& errorMap,
AcDbObjectId lockBlkRef = AcDbObjectId::kNull) = 0;
transId
返回刚建立的AcDbLongTransaction对象的ID
objList
输入要登出的对象数组;它们必须驻留在同一个BlockTableRecord中
toBlock
对象要克隆至的块表记录的对象ID,必须是模型空间或布局空间块;不能是用户自定义的块
errorMap
未公布
lockBlkRef
输入最外层块参考的对象ID,它将在登出时被临时被放置在一个锁定的层上。它是可选的,且必须驻留在目标块中
这个函数建立一个新的长事务并登出已给列表中的对象。它将自动决定建立长事务的类型(kSameDb, kXrefDb或 kUnrelatedDb)。
第二个参数AcDbObjectIdArray& objList包含一个被用作标记的,值为AcDbObjectId::kNull的AcDbObjectId。在标记后的所有对象的ID不能被克隆,但将被添加到workSet。如果第一个对象ID是null,则列表中的对象都不会被克隆。如果对象ID不为null,则列表中的所有对象都将被克隆。
注意:拥有未被克隆的对象是非常高级的特征。只能用于非常复杂对象,克隆这些对象可能损害checkOut()的执行。同样,应用程序必须负责在块中编辑这些对象。否则应用程序就不需要这个特征。
可能返回的值:
Adesk::eInvalidInput
如果objList(对象列表)是空的,或pToDb是NULL。
Adesk::eWrongDatabase
如果pToDb是Xref数据库. 只能登出当前或临时的数据库.如果原数据库是Xref则同样会返回,但不是pToDb的活动Xref。
Adesk::eNotAnEntity
只能登出AcDbEntities。
Adesk::eWrongDatabase
如果在对象列表中的所有对象不是来自同一个数据库。
Adesk::eInvalidOwnerObject
如果在对象列表中的所有对象不是属于同一个BlockTableRecord。
Various Open errors
在对象列表中的对象必须能被kForRead打开。
Various Cloning errors
从任何使用的深度克隆方法返回, 取决于事务类型。
// ****************
AcApLongTransactionManager::checkIn函数
virtual Acad::ErrorStatus
checkIn(
AcDbObjectId transId,
AcDbIdMapping& errorMap,
bool keepObjs = false) = 0;
transId
为长事务登入对象的ID
errorMap
未公布
keepObjs
输入布尔值,表示是否在目标块中保留workset对象
这个函数将登入之前登出的长事务。如果keepObjs是true,workset对象将保留在目标块中;如果keepObjs是false,workset对象将被清除,除非它们在事务数据库中正被其它对象引用。
如果AcDbLongTransaction不能以AcDb::kForWrite方式打开则返回多种开启错误信息,包括它是否不再为激活或已被删除。
// ****************
知道了吗? |
|