zoukankan      html  css  js  c++  java
  • objectarx之遍历当前模型空间中的所有实体,并对每个实体进行炸开

    //炸开
    void BomEntity()
    {
    AcDbBlockTable *pBlkTbl;
    acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForRead);

    //获得模型空间的块表记录
    AcDbBlockTableRecord *pBlkTblRcd;
    pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,AcDb::kForRead);
    pBlkTbl->close();

    //创建块表记录遍历器
    AcDbBlockTableRecordIterator *pItr; //块表记录遍历器
    pBlkTblRcd -> newIterator(pItr);
    pBlkTblRcd->close();
    AcDbEntity *pEnt = NULL; //遍历的临时实体指针
    for(pItr->start();!pItr->done();pItr->step()){
    //利用遍历器获得每一个实体
    pItr->getEntity(pEnt,AcDb::kForWrite);

    //块参照
    if (pEnt->isKindOf(AcDbBlockReference::desc()))
    {
    //炸开
    AcDbVoidPtrArray ents =Explode(pEnt);
    //循环遍历炸开的实体
    for(int i = 0; i < ents.length(); ++i)
    {
    AcDbEntity* pSubEnt = (AcDbEntity*)ents[i];
    AcDbEntity* entity = AcDbEntity::cast(pSubEnt);
    AppendToDatabase(entity);
    entity->close();
    }
    pEnt->erase();
    }

    pEnt->close();
    }
    delete pItr;
    }

  • 相关阅读:
    最短路问题之Dijkstra算法
    最短路问题之Bellman-ford算法
    最小生成树之Kruskal(克鲁斯卡尔)算法
    二分图问题
    七桥问题与欧拉道路
    拓扑排序
    八连通块
    四连通检测
    USACO19DEC题解
    1206 雅礼集训D2题解
  • 原文地址:https://www.cnblogs.com/Pond-ZZC/p/11578028.html
Copyright © 2011-2022 走看看