找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 124|回复: 0

[每日一码] ObjextARX 删除图层实体(使用ADSRx全局函数)

[复制链接]

0

主题

0

回帖

28

积分

管理员

积分
28
发表于 2024-3-14 20:20:04 | 显示全部楼层 |阅读模式
  1. /*  
  2. 函数名称:    DrawMcLine  
  3. 功能描述: 删除实体
  4. 返回类型: 无
  5. 参数意义: 无
  6. 修改记录:       */  
  7. bool McAcad::eraseEntity(int soft)  
  8. {  
  9.     try  
  10.     {  
  11.         struct resbuf * pRb = NULL;  
  12.         long nLen = 0;  
  13.         ads采用name Names;  
  14.         ads采用name entName;  
  15.         ads采用name strNames;//图元名称  
  16.         AcDbObjectId RetId = AcDbObjectId::kNull;  
  17.         CStringArray LayerArray;  
  18.         LayerArray.Add(采用T("McRect"));  
  19.         int LayerArraySize = LayerArray.GetSize();  
  20.         CString layerName;  
  21.         AcDbEntity *pEnt = NULL;  
  22.         for (int j=0;j<LayerArraySize;j++)  
  23.         {  
  24.             int count = LayerArray.GetSize();  
  25.             layerName = LayerArray.GetAt(j);  
  26.             pRb = acutBuildList(8, layerName,RTNONE);  
  27.             if (pRb != NULL)  
  28.             {  
  29.                 acedSSGet(采用T("A"), NULL, NULL, pRb, Names);  
  30.                 acedSSLength(Names,&nLen);  
  31.                 for(int i=0;i<nLen;i++)  
  32.                 {  
  33.                     acedSSName(Names,i,entName);  
  34.                   
  35.                     if(Acad::eOk==acdbGetObjectId(RetId,entName))  
  36.                     {  
  37.                         acdbGetAdsName(strNames,RetId);  
  38.                         if(Acad::eOk==acdbOpenObject(pEnt,RetId, AcDb::kForWrite))  
  39.                         {  
  40.                             //删除实体  
  41.                             if(Acad::eOk != pEnt->erase(true))  
  42.                             {  
  43.                                 acutPrintf(采用T("\n删除失败!\n"));  
  44.                             }  
  45.                         }  
  46.                         pEnt->close();  
  47.                     }  
  48.                     acedSSFree(entName);  
  49.                     acdbNameClear(entName);  
  50.                 }  
  51.                 acedSSFree(Names);  
  52.                 acdbNameClear(Names);  
  53.                 acutRelRb(pRb);  
  54.             }  
  55.         }  
  56.         LayerArray.RemoveAll();  
  57.         return true;  
  58.   
  59.     }  
  60.     catch(...)  
  61.     {  
  62.         edwrite("McAcad::eraseEntity() error");  
  63.         return false;  
  64.     }  
  65.     return true;  
  66. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 05:45 , Processed in 0.117589 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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