zoukankan      html  css  js  c++  java
  • 检查所有实体的编号是否重复

    //在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(" 打开实体失败!"));
    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(" 打开实体失败!"));
    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(" 编号错误,有实体编号相同!"));
    SignEnt(entIds[i]);
    SignEnt(entIds[j]);
    ++count;
    }
    pEnt2->close();
    acutRelRb(pBuf2);
    }
    pEnt1->close();
    acutRelRb(pBuf1);
    }
    if ( count== 0 )
    {
    acutPrintf(_T(" 没有重复的编号!"));
    }
    else
    {
    acutPrintf(_T(" 有实体编号相同,已用圆标记!"));
    }
    }

  • 相关阅读:
    udhcpd配置及使用
    射频全网通笔记(附全球频段划分及主要运营商对应表)
    Source Insight教程
    关于学习
    一次OGG ERROR OGG-01091 Unable to open file "./dirdat/th079817" 的问题解决
    mysql建立的一个自动更新组织树案案例
    1055
    了解一个A*数据库的数据
    mysql安装
    通过CONTRAB 执行脚本进行监控
  • 原文地址:https://www.cnblogs.com/pengjun-shanghai/p/4786363.html
Copyright © 2011-2022 走看看