leeathorskey 发表于 2008-10-8 12:35:00

求选定空间中的实体记录?

我想制作一个这样的程序,提示用户选择多个实体(用鼠标选择一个范围),并用遍历器遍历实体?不知道具体代码如何写?
我获得过这样一段代码,是求整个模型空间的实体,现在如何将它改成求用户选定空间?请高手指点。
            // 获得当前数据库的块表
            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);
             AcDbEntity *pEnt; // 遍历的临时实体指针
            acutPrintf(L"\n遍历的临时实体指针已建立!");
            for (pItr->start(); !pItr->done(); pItr->step())
            {
                  // 利用遍历器获得每一个实体
                  pItr->getEntity(pEnt, AcDb::kForWrite);//以读的方式得到该实体
                  // 是否在“测试”图层上
                  if (pEnt->layerId() == layerId)
                  {
                     IndentifyEnts(pEnt);//对实体进行判断
                  }
               // 注意需要关闭实体
                pEnt->close();
            }
         delete pItr; // 遍历器使用完毕之后一定要删除!
      acutPrintf(L"\n遍历的临时实体指针已删除!");
         pBlkTblRcd->close();

leeathorskey 发表于 2008-10-8 21:31:00

谁来帮帮我啊?摆脱了

leeathorskey 发表于 2008-10-9 16:31:00

终于做出来了!

NEtiger 发表于 2008-10-23 13:27:00

做出来就发出来共同学习一下呀。。真是的。。你让用户提供几个点,构造选择集,然后遍历选择集,不就可以达到你的效果了吗 。。
页: [1]
查看完整版本: 求选定空间中的实体记录?