哇酷,另一个BRXer
我不怎么使用事务管理器,我喜欢使用智能指针,所以我提供了每个的例子。
- //++-- Transcation Example
- static void BRXDoit1(void)
- {
- Acad::ErrorStatus es;
- long ssLength = 0;
- ads_name sel;
- AcDbObject *pObj;
- AcDbObjectIdArray ids;
- if(acedSSGet(NULL, NULL, NULL, NULL, sel) != RTNORM)
- {
- return;
- }
- if(acedSSLength(sel, &ssLength) != RTNORM || ssLength == 0)
- {
- acedSSFree(sel);
- return;
- }
- if(acedGetCurrentSelectionSet(ids) != Acad::eOk)
- {
- acedSSFree(sel);
- return;
- }
- AcTransaction *pTransaction = actrTransactionManager->startTransaction();
- for(int i = 0 ; i getObject(pObj,ids[i],AcDb::kForRead) == Acad::eOk)
- {
- AcDbEntity *pEnt = (AcDbEntity*) pObj;
- if(pEnt)
- {
- pEnt->upgradeOpen();
- pEnt->setLayer(_T("0"));
- }
- }
- }
- actrTransactionManager->endTransaction();
- acedSSFree(sel);
- }
- //++-- Smart pointer Example
- static void BRXDoit2(void)
- {
- Acad::ErrorStatus es;
- long ssLength = 0;
- ads_name sel;
- AcDbObjectIdArray ids;
- if(acedSSGet(NULL, NULL, NULL, NULL, sel) != RTNORM)
- {
- return;
- }
- if(acedSSLength(sel, &ssLength) != RTNORM || ssLength == 0)
- {
- acedSSFree(sel);
- return;
- }
- if(acedGetCurrentSelectionSet(ids) != Acad::eOk)
- {
- acedSSFree(sel);
- return;
- }
- for(int i = 0 ; i upgradeOpen();
- smartPointer->setLayer(_T("0"));
- }
- }
- acedSSFree(sel);
- }
|