明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3038|回复: 4

怎样分解一个组!就象CAD的命令GROUP的E选项?

[复制链接]
发表于 2004-10-2 10:13:00 | 显示全部楼层 |阅读模式
如题?
发表于 2004-10-2 16:34:00 | 显示全部楼层

回复

回复 void EraseGroup(const char * pGroupName)
{
AcDbDictionary *pGrpDict;
AcDbObjectId pGrpId; acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pGrpDict, AcDb::kForWrite); if (pGrpDict->getAt(pGroupName,pGrpId) == Acad::eOk)
{
AcDbObjectPointer <AcDbGroup> pGrp(pGrpId, AcDb::kForWrite); pGrp->erase();
pGrpDict->remove(pGrpId);
pGrpDict->close();
pGrp->close();
}
pGrpDict->close(); return;
}
 楼主| 发表于 2004-10-2 19:41:00 | 显示全部楼层
谢谢王斑竹! 我选择一个组实体!这样得到组的名称! 就象void EraseGroup(const char * pGroupName)里的pGroupName?
发表于 2004-10-2 21:54:00 | 显示全部楼层

回复

选择一个实体,删除Group: ads_name ent;
AcDbObjectId objId;
int ret;
ads_point pt;
ret = acedEntSel("\n请选择一个组实体:", ent, pt);
acdbGetObjectId(objId, ent);
AcDbObjectPointer <AcDbEntity> pEnt (objId, AcDb::kForRead ); CString strGrpName;
//assert(pEnt!=NULL);
AcDbVoidPtrArray* pReactors = pEnt->reactors();
if (pReactors != NULL)
{
for (int i = 0; i < pReactors->length(); i++)
{
void* pV = pReactors->at(i);
if (pV != NULL & acdbIsPersistentReactor(pV))
{
AcDbObjectId rId = acdbPersistentReactorObjectId(pV);
pEnt->close();
AcDbObjectPointer<AcDbGroup> pGroup(rId, AcDb::kForWrite );
strGrpName = pGroup->name(); //得到组名(在这里没什么用)
pGroup->erase();
}
}
} acedAlert("ok"); assert(strGrpName != NULL);
 楼主| 发表于 2004-10-2 22:22:00 | 显示全部楼层
明白了!


再次感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 11:52 , Processed in 0.180994 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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