怎样分解一个组!就象CAD的命令GROUP的E选项?
如题? 回复void EraseGroup(const char * pGroupName)
{
AcDbDictionary *pGrpDict;
AcDbObjectId pGrpId;
acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pGrpDict, AcDb::kForWrite);
if (pGrpDict->getAt(pGroupName,pGrpId) == Acad::eOk)
{
AcDbObjectPointerpGrp(pGrpId, AcDb::kForWrite);
pGrp->erase();
pGrpDict->remove(pGrpId);
pGrpDict->close();
pGrp->close();
}
pGrpDict->close();
return;
} 谢谢王斑竹!
我选择一个组实体!这样得到组的名称!
就象void EraseGroup(const char * pGroupName)里的pGroupName?
选择一个实体,删除Group:
ads_name ent;
AcDbObjectId objId;
int ret;
ads_point pt;
ret = acedEntSel("\n请选择一个组实体:", ent, pt);
acdbGetObjectId(objId, ent);
AcDbObjectPointerpEnt (objId, AcDb::kForRead );
CString strGrpName;
//assert(pEnt!=NULL);
AcDbVoidPtrArray* pReactors = pEnt->reactors();
if (pReactors != NULL)
{
for (int i = 0; i length(); i++)
{
void* pV = pReactors->at(i);
if (pV != NULL & acdbIsPersistentReactor(pV))
{
AcDbObjectId rId = acdbPersistentReactorObjectId(pV);
pEnt->close();
AcDbObjectPointer pGroup(rId, AcDb::kForWrite );
strGrpName = pGroup->name(); //得到组名(在这里没什么用)
pGroup->erase();
}
}
}
acedAlert("ok");
assert(strGrpName != NULL); 明白了!
再次感谢!
页:
[1]