码迷,mamicode.com
首页 > 其他好文 > 详细

长事务

时间:2017-02-20 18:24:27      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:symbol   model   esb   table   delete   ble   ima   services   comm   

技术分享

 

static void zffObjectARX_MyCommand14(void)
{
// Add your code for command zffObjectARX._MyCommand14 here
ACHAR* fileName;
AcDbDatabase* pDb;
AcDbObjectId transId;
struct resbuf* filename;
filename=acutNewRb(RTSTR);
acedGetFileD(_T("请选择要检出的图"),NULL,_T("dwg"),0,filename);
pDb=new AcDbDatabase(Adesk::kFalse);
fileName=filename->resval.rstring;
pDb->readDwgFile(fileName);

AcDbBlockTable *pBlk=NULL;
AcDbBlockTableRecord *pBlkRcd=NULL;
pDb->getSymbolTable(pBlk,AcDb::kForRead);
pBlk->getAt(ACDB_MODEL_SPACE,pBlkRcd,AcDb::kForRead);
pBlk->close();
AcDbObjectIdArray objIds;
AcDbBlockTableRecordIterator* it=NULL;
pBlkRcd->newIterator(it);
pBlkRcd->close();
AcDbEntity* pEnt=NULL;
for (it->start();!it->done();it->step())
{
it->getEntity(pEnt,AcDb::kForRead);
if (pEnt->isKindOf(AcDbCircle::desc()))
{
objIds.append(pEnt->objectId());
}
}
pEnt->close();
delete it;

AcDbBlockTable* pBlkCur=NULL;
AcDbBlockTableRecord* pBlkRcdCur=NULL;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlkCur,AcDb::kForRead);
pBlkCur->getAt(ACDB_MODEL_SPACE,pBlkRcdCur,AcDb::kForWrite);
pBlkCur->close();
AcDbObjectId objIdCur=pBlkRcdCur->objectId();
pBlkRcdCur->close();

AcDbIdMapping p;
acapLongTransactionManagerPtr()->checkOut(transId,objIds,objIdCur,p);
//AcDbObject* pObj=NULL;
AcDbLongTransaction* pLongTrans;
if (acdbOpenObject(pLongTrans,transId,AcDb::kForWrite)==Acad::eOk)
{
//AcDbLongTransaction* pLongTrans=AcDbLongTransaction::cast(pObj);

AcDbLongTransWorkSetIterator* pItor=NULL;
pLongTrans->newWorkSetIterator(pItor);
int index;
acedGetInt(_T("\n输入要改变的颜色值:"),&index);
for (pItor->start();!pItor->done();pItor->step())
{
AcDbEntity* pEnt1=NULL;
acdbOpenObject(pEnt1,pItor->objectId(),AcDb::kForWrite);
pEnt1->setColorIndex(index);
pEnt1->close();
}

delete pItor;
ACHAR str[20]={0};
acedGetString(0,_T("\n观察实体的改变,按回车结束!"),str);
pLongTrans->close();
}

acapLongTransactionManagerPtr()->checkIn(transId,p);
pDb->saveAs(fileName);
acutRelRb(filename);
delete pDb;
pDb=NULL;

}

长事务

标签:symbol   model   esb   table   delete   ble   ima   services   comm   

原文地址:http://www.cnblogs.com/NewAutoMan/p/6420694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!