我想制作一个这样的程序,提示用户选择多个实体(用鼠标选择一个范围),并用遍历器遍历实体?不知道具体代码如何写? 我获得过这样一段代码,是求整个模型空间的实体,现在如何将它改成求用户选定空间?请高手指点。 // 获得当前数据库的块表 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(); |