组词典将多个图形对象编组存储,存储后的效果:可以通过组来找到所需要的实体,在界面上选中一个就可以找到其他实体,(即选中的为一个组)。
但是与块对比,不同的是将实体分组并不形成新的实体对象。
在CAD中的的命令为group
创建组词典:
AcDbGroup *pGroup = new AcDbGroup;
for (int i = 0; i < entIds.length(); i++)
{
pGroup->append(entIds[i]);
}
AcDbDictionary *pGroupDict = NULL;
acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pGroupDict, AcDb::kForWrite);
CString groupName = TEXT("*");
AcDbObjectId groupId;
pGroupDict->setAt(groupName, pGroup, groupId);
pGroupDict->close();
取出组词典中的数据:
AcDbDictionary *pGroupDict = NULL;
acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pGroupDict,AcDb::kForWrite);
//acdbHostApplicationServices()->workingDatabase()->getNamedObjectsDictionary(pNameDict,AcDb::kForWrite);
AcDbDictionaryIterator * it = pGroupDict->newIterator();
for(;!it->done();it->next())
{
AcDbGroup *pGroup = NULL;
if(it->getObject((AcDbObject*&)pGroup,AcDb::kForWrite) == Acad::eOk)
{
AcDbObjectIdArray groupEntIds;
pGroup->allEntityIds(groupEntIds);
}
}