码迷,mamicode.com
首页 > 其他好文 > 详细

检查所有实体的编号是否重复

时间:2015-09-06 18:01:55      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

//在cad画图中经常为遇到需要对实体进行编号的操作,这样就会存在可能因为认为操作而导致的编号重复的问题,

   这样就需要程序有自动检测编号是否重复的问题,此代码是根据自己所做的项目进行编写的,所以不能使用与所有的

   代码中,但思路可以借鉴。

//检查所有实体的编号是否有重复部分
void SignRepetition()
{
AcDbObjectIdArray entIds = ObtainEntId();
int count = 0;
//遍历每个Id对应实体的扩展数据看是否存在相同的
for (int i = 0; i < (entIds.length()-1); i++)
{
AcDbEntity *pEnt1;
resbuf *pBuf1;
Acad::ErrorStatus es = acdbOpenObject(pEnt1, entIds[i], ZcDb::kForRead);
if ( Acad::eOk != es )
{
acutPrintf(_T("\n打开实体失败!"));
return;
}
pBuf1 = pEnt1->xData(_T("BMC_NO_APP"));
resbuf *buf1;
buf1 = pBuf1;
buf1 = buf1->rbnext;
for (int j = i+1; j < entIds.length(); j++)
{
AcDbEntity *pEnt2;
resbuf *pBuf2;
Acad::ErrorStatus es = acdbOpenObject(pEnt2, entIds[j], ZcDb::kForRead);
if ( Acad::eOk != es )
{
acutPrintf(_T("\n打开实体失败!"));
return;
}
pBuf2 = pEnt2->xData(_T("BMC_NO_APP"));
resbuf *buf2;
buf2 = pBuf2;
buf2 = buf2->rbnext;
CString str1 = buf1->resval.rstring;
CString str2 = buf2->resval.rstring;
if ( str1 == str2 )
{
acutPrintf(_T("\n编号错误,有实体编号相同!"));
SignEnt(entIds[i]);
SignEnt(entIds[j]);
++count;
}
pEnt2->close();
acutRelRb(pBuf2);
}
pEnt1->close();
acutRelRb(pBuf1);
}
if ( count== 0 )
{
acutPrintf(_T("\n没有重复的编号!"));
}
else
{
acutPrintf(_T("\n有实体编号相同,已用圆标记!"));
}
}

检查所有实体的编号是否重复

标签:

原文地址:http://www.cnblogs.com/pengjun-shanghai/p/4786363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!