检查所有实体的编号是否重复
2015-09-06 16:18
423 查看
//在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有实体编号相同,已用圆标记!"));
}
}
这样就需要程序有自动检测编号是否重复的问题,此代码是根据自己所做的项目进行编写的,所以不能使用与所有的
代码中,但思路可以借鉴。
//检查所有实体的编号是否有重复部分
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有实体编号相同,已用圆标记!"));
}
}
相关文章推荐
- WPF学习开发历程(三)——文本控件
- IOS9 SDK下载、设备安装IOS9系统
- 工作周报058
- 这是mybatis最简单的入门
- [LeedCode OJ]#83 Remove Duplicates from Sorted List
- JS模板引擎的实现原理
- linux关机
- XCode实现注释所选行/**/功能
- Yii布局
- spring注解总结
- POJ 1019:Number Sequence 二分查找
- log4j中Spring控制台输出Debug级信息过多解决方法
- POJ 1019:Number Sequence 二分查找
- wget
- Javascript封装DOMContentLoaded事件
- 通过telnet特殊字符进行ftp攻击逃逸
- 逻辑回归的向量化实现样例
- 工作周报057
- C++ 牛人博客(不断更新中...)
- c#文件的读写