• 2021年1月1日 AutoCAD.Net/C#.Net QQ群:193522571长事务


    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(" 输入要改变的颜色值:"),&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(" 观察实体的改变,按回车结束!"),str);
    pLongTrans->close();
    }

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

    }

  • 相关阅读:
    GeoHash核心原理解析
    线程安全与可重入函数
    malloc和free的实现
    数字金字塔最大路径和——递归
    TCP连接建立与断开
    Gray Code
    C压缩字符串中的空格
    C++链接与装载
    epoll测试实例
    C++之手写strlen函数
  • 原文地址:https://www.cnblogs.com/NewAutoMan/p/6420694.html
Copyright © 2020-2023  润新知