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