AcDbLongTransaction类
这是包含追踪一个长事务需要的信息的类。AcLongTransactionManager类负责创建和将AcDbLongTransaction对象增加至数据库的类。然后返回对象的AcDbObjectId。此对象的析构由数据库处理(与其他的数据库驻留对象)。
注意:AcDbLongTransactions在它们激活时增加至一个数据库,但在事务被删除后被删除,而且不储存在DWG或ObjectDXF文件中。它们不是持久的。
继承自
AcDbObject
包含文件
dbltrans.h
参见
AcDbLongTransWorkSetIterator, AcApLongTransactionReactor, AcApLongTransactionManager
成员
|
AcDbLongTransaction::~AcDbLongTransaction 函数 ~AcDbLongTransaction(); 默认建构器。 |
|
AcDbLongTransaction::AcDbLongTransaction 函数 AcDbLongTransaction(); 默认建构器。建构由AcLongTransactionManager类处理,而且析构由用于增加对象的AcDbDatabase处理。 |
|
AcDbLongTransaction::addToWorkSet 函数 Acad::ErrorStatus addToWorkSet( AcDbObjectId id);
此函数将objectID为id的对象增加至当前的工作集中。对象必须从来自与空间/BTR相同的工作集对象,用于登出(checkout)事务驻留的数据库。 此函数将从目标块或原始块接受对象。来自原始块的对象将不能被克隆,但将作为AcApLongTransactionManager::checkOut()列表中一个空对象ID后的对象。 注意:具有未被克隆的对象是一个很先进的特征,它只能用于很复杂的且克隆将导致对checkOut()的行为有损的对象。同时,应用程序必须假设完全负责编辑块中的对象。否则,应用程序将不需要这个特征。 可能的返回值为:
|
||||||||||||||||||
|
AcDbLongTransaction::newWorkSetIterator 函数 Acad::ErrorStatus newWorkSetIterator( AcDbLongTransWorkSetIterator*& pNewIter, bool incRemovedObjs = false, bool incSecondaryObjs = false) const;
此函数为工作集创建一个遍历器。默认的工作集只包括从传递至checkOut()的objList中的原始对象被登出(checkout)的对象,和任何来自于已在后面增加的登出(checkout)数据库的对象。 如果incRemovedObjs参数为true,则遍历器还将包括已从工作集清除或删除的对象。 如果incSecondaryObjs为true,则遍历器将包括已被克隆至登出(checkout)数据库中的所有对象。这表示主对象依赖的以及具有硬参考的对象将被包括。 |
||||||||||||||||||
|
AcDbLongTransaction::removeFromWorkSet 函数 Acad::ErrorStatus removeFromWorkSet( AcDbObjectId id);
此函数将对象从工作集中清除。这个调用的结果是对象成为登出(checkout)数据库的一个永久部分,而且如果它来自于原始数据库,则它的原始对象将在登入(checkIn)时将被更新。 可能的返回值为:
|
||||||||||||||||||
|
AcDbLongTransaction::syncWorkSet 函数 Acad::ErrorStatus syncWorkSet(); 当一个对象被放置在一个工作集中,对象拥有的所有对象也被增加。如果这是一个lUnrelatedDb或kXrefDb类型的长事务,所有被参考的对象也被增加。为了性能的目的,这些被参考的对象不总是从removeFromWorkSet()中被删除。因此,此函数将任何对象从一个不再参考的工作集中完全删除。这可以在许多removeFromWorkSet()调用后被调用,且总是在登入(checkin)时由长事务调用。 |
|
AcDbLongTransaction::activeIdMap 函数 AcDbIdMapping * activeIdMap(); 此函数提供在AcLongTransactionReactor回调期间对克隆IdMap的访问。登出(CheckOut)的IdMap与登入(CheckIn)的IdMap不同。 对于每个事务类型,不同的克隆技术将被用于每个事务类型的登出/登入的每种类型。在所有情况下,activeIdMap将为用于克隆的IdMap。正如在任何深度克隆操作中,这个IdMap也用于标识另一深度克隆通知的回调。 如果没有任何激活的克隆,则返回当前用于登出/登入的AcDbIdMapping*指针或NULL。 |
||||||
|
AcDbLongTransaction::destinationBlock 函数 AcDbObjectId destinationBlock() const; 此函数返回块表记录的objectID,这个块表记录中对象被克隆。 |
||||||
|
AcDbLongTransaction::getLongTransactionName 函数 Acad::ErrorStatus getLongTransactionName( char*& unnamed)
const;
返回长事务的名称。为了标识的目的,这通常是原始块的名称。然而,如果原始块是一个Xref,则它返回宿主图形中的Xref块的名称。如果块是一个布局,则它返回布局的名称。 |
||||||
|
AcDbLongTransaction::originBlock 函数 AcDbObjectId originBlock() const; 返回一个块,实体从这个块中被登出。 |
||||||
|
AcDbLongTransaction::originObject 函数 AcDbObjectId originObject( AcDbObjectId id) const;
这个函数将确定id标识的对象的原始对象ID。 如果对象在工作集中,则它返回原始对象,工作集对象从这个原始对象被克隆。如果对象没有在工作集中找到,则这个函数将返回AcDbObjectId::kNull。如果使用addToWorkSet()将对象增加至工作集中,则它返回与传递的AcDbObjectId相同的对象ID。 |
||||||
|
AcDbLongTransaction::type 函数 int type() const; 此函数将返回在进行中的事务类型。 可能的返回值为:
|
||||||
|
AcDbLongTransaction::workSetHas 函数 bool workSetHas( AcDbObjectId id, bool bIncErased = false) const;
如果对象在工作集中则返回true。如果对象不在工作集中,或bIncErased为false且对象在工作集中,但已被删除,则返回false。 |
|
AcDbLongTransaction::(unnamed) 枚举
|
|||||||||||||||