找回密码
 立即注册

QQ登录

只需一步,快速开始

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

从组里面删除

[复制链接]

1

主题

0

回帖

35

积分

管理员

积分
35
发表于 2024-3-29 22:53:12 | 显示全部楼层 |阅读模式
  1. static void RemoveFromGroup()
  2. {
  3.   ads采用name ss;
  4.   resbuf rbPickStyle;
  5.   acedGetVar(采用T("PICKSTYLE"), &rbPickStyle);
  6.   resbuf rbPickStyleNew = rbPickStyle;
  7.   rbPickStyleNew.resval.rint &= 0x02;
  8.   acedSetVar(采用T("PICKSTYLE"), &rbPickStyleNew);
  9.   if (acedSSGet(NULL, NULL, NULL, NULL, ss) == RTNORM)
  10.   {
  11.     Adesk::Int32 n = 0;  acedSSLength(ss, &n);
  12.     if (n == 0) { acedSSFree(ss); return; }
  13.     AcDbObjectIdArray ids;
  14.     for (int i = 0; i < (int)n; i++)
  15.     {
  16.       ads采用name en; acedSSName(ss, i, en);
  17.       AcDbObjectId id; acdbGetObjectId(id, en);
  18.       if (id.isValid()) ids.append(id);
  19.     }
  20.     acedSSFree(ss);
  21.     for (int i = 0; i < ids.length(); i++)
  22.     {
  23.       AcDbObjectId idEnt = ids[i];
  24.       const AcDbVoidPtrArray* reacts = NULL;
  25.       {
  26.         AcDbEntityPointer pEnt(idEnt, AcDb::kForRead);
  27.         if (pEnt.openStatus() == Acad::eOk)
  28.         {
  29.           reacts = pEnt->reactors();
  30.         }
  31.       }
  32.       if (reacts && reacts->length() > 0)
  33.       {
  34.         for (int j = 0; j < reacts->length(); j++)
  35.         {
  36.           if (acdbIsPersistentReactor(reacts->at(j)))
  37.           {
  38.             AcDbObjectId idReact = acdbPersistentReactorObjectId(reacts->at(j));
  39.             if (idReact.objectClass() == AcDbGroup::desc())
  40.             {
  41.               AcDbObjectPointer<AcDbGroup> pGroup(idReact, AcDb::kForWrite);
  42.               if (pGroup.openStatus() == Acad::eOk)
  43.               {
  44.                 // acutPrintf(采用T("\nGroup name: '%s'"), pGroup->name());
  45.                 pGroup->remove(idEnt);
  46.                 if (pGroup->numEntities() == 0)
  47.                   pGroup->erase();
  48.               }
  49.             }
  50.           }
  51.         }
  52.       }
  53.     }
  54.   }
  55.   acedSetVar(采用T("PICKSTYLE"), &rbPickStyle);
  56. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-1 18:17 , Processed in 0.123846 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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