获得指定数据库中指定块表中所有实体的id
2015-09-11 14:48
211 查看
该函数也使用外部指定图纸中的数据库中的块
Int getIdsByDwgBlkName(AcDbDatabase *pDwg, CString strBlkName, AcDbObjectIdArray &objIds)
{
//打开指定块定义的块表记录
AcDbBlockTable *pBlkTbl = NULL;
pDwg->getBlockTable(pBlkTbl, AcDb::kForRead);
AcDbBlockTableRecord* pBlkTblRcd;
Acad::ErrorStatus es = pBlkTbl->getAt(strBlkName,pBlkTblRcd,AcDb::kForRead);
pBlkTbl->close();
if (es!=Acad::eOk)
{
return RTNONE;
}
//遍历块表记录中的实体
AcDbBlockTableRecordIterator* pItr;
pBlkTblRcd->newIterator(pItr);
AcDbEntity* pEnt = NULL;
for(pItr->start();!pItr->done();pItr->step())
{
Acad::ErrorStatus es = pItr->getEntity(pEnt,AcDb::kForWrite);
if(Acad::eOk == es)
{
//将实体Id加入到Id数组中
objIds.append(pEnt->objectId());
}
pEnt->close();
}
delete pItr;
pBlkTblRcd->close();
return RTNORM;
}
Int getIdsByDwgBlkName(AcDbDatabase *pDwg, CString strBlkName, AcDbObjectIdArray &objIds)
{
//打开指定块定义的块表记录
AcDbBlockTable *pBlkTbl = NULL;
pDwg->getBlockTable(pBlkTbl, AcDb::kForRead);
AcDbBlockTableRecord* pBlkTblRcd;
Acad::ErrorStatus es = pBlkTbl->getAt(strBlkName,pBlkTblRcd,AcDb::kForRead);
pBlkTbl->close();
if (es!=Acad::eOk)
{
return RTNONE;
}
//遍历块表记录中的实体
AcDbBlockTableRecordIterator* pItr;
pBlkTblRcd->newIterator(pItr);
AcDbEntity* pEnt = NULL;
for(pItr->start();!pItr->done();pItr->step())
{
Acad::ErrorStatus es = pItr->getEntity(pEnt,AcDb::kForWrite);
if(Acad::eOk == es)
{
//将实体Id加入到Id数组中
objIds.append(pEnt->objectId());
}
pEnt->close();
}
delete pItr;
pBlkTblRcd->close();
return RTNORM;
}
相关文章推荐
- 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法
- oracle转mysql注意的问题
- mysql主从搭建
- oracle 的 BLOCK CHANGE TRACKING
- MySql取得日期(前一天、某一天)
- 拆分Codeigniter 数据库,独立提取
- mysql查询今天、昨天、7天、近30天、本月、上一月 数据
- mysql备份
- SQL的常用语句
- 优化sql
- Nginx+Tomcat+Memcached集群Session共享
- 非root模式下安装mysql
- Mysql存储过程
- window mysql修改最大连接数max_connections
- [mysql] 超过最大链接数
- 如何存图片到数据库中
- mysql的collation
- MySQL manager or server PID file could not be found!
- 分析函数lead()over(),lag()over()
- Mysql慢查询日志