天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 4|回复: 0

查找删除的实体

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    查找删除的实体



    问题:



    如何强制AcDbBlockTableRecordIterator不跳过已擦除的实体?



    解答:



    为避免跳过已擦除的实体,必须为最后一个参数指定false

    在AcDbBlockTableRecord类的newIterator()方法中

    可选,并设置为true(即跳过已擦除的实体)。



    下面的示例代码将列出在模型空间中删除的所有实体。

    注释包含在需要指定正确参数的位置

    遍历删除的实体。



    void fTest()
    {
    AcDbBlockTable *pBT;
    AcDbBlockTableRecord *pBTR;
    AcDbBlockTableRecordIterator *pIter;
    acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBT,AcDb::kForRead);
    pBT->getAt(ACDB_MODEL_SPACE,pBTR,AcDb::kForWrite);
    pBT->close();
    //the last parameter should be false to get the erased entities
    pBTR->newIterator(pIter,true,false);
    pBTR->close();
    int mCtr = 0;
    AcDbEntity *pEnt;
    Acad::ErrorStatus es;
    while(!pIter->done())
    {
    //if you specify true for last parameter then you will not get eWasErased notification.
    //but this also means you will not be able to open the erased object
    es = pIter->getEntity(pEnt,AcDb::kForWrite,false);
    if (es == Acad::eWasErased)
    {
    mCtr++;
    acutPrintf("\neWasErased, Entity number : %d",mCtr);
    }
    else
    {
    pEnt->close();
    }
    //the last parameter should be false to get the erased entities
    pIter->step(true,false);
    }
    acutPrintf("\nTotal number of erased entities: %i",mCtr);
    delete pIter;
    }

     

     

     

     

    查找删除的实体
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:37 , Processed in 0.056345 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表