Тема: Группировка штриховки и круга

Здравствуйте. Не могу объединить в группу штриховку и окружность.
objIds.length(); равна двум, т.е. оба объекта входят в объект AcDbGroup
Помогите пожалуйста. Спасибо.
// функция создания группы
void createGroup(AcDbObjectIdArray& objIds, TCHAR* pGroupName)
{
    AcDbGroup *pGroup = new AcDbGroup(pGroupName);
   
    AcDbDictionary *pGroupDict;
    acdbHostApplicationServices()->workingDatabase()
        ->getGroupDictionary(pGroupDict, AcDb::kForWrite);
    AcDbObjectId pGroupId;
    pGroupDict->setAt(pGroupName, pGroup, pGroupId);
    pGroupDict->close();
    // Now that the group has been added, it has an ObjectID.
    // This is important since the group will become a persistent
    // reactor for the added entities...
    for (int i = 0; i < objIds.length(); i++)
    {
        pGroup->append(objIds[i]);
    }
    pGroup->close();
}
// функция рисования
void Draw()
{
    Acad::ErrorStatus es;
AcDbCircle *pCircle = new AcDbCircle();
        pCircle->setLayer(_T("УЗЛЫ"));
        pCircle->setDatabaseDefaults();
        pCircle->setNormal(AcGeVector3d::kZAxis);
        pCircle->setCenter(cenPt);
        pCircle->setRadius(5.0);
        AcDbObjectId cirId;
        postToDb(pCircle, cirId);
        // Создадим штриховку
        AcDbHatch* pHatch = new AcDbHatch();
        pHatch->setDatabaseDefaults();
        // Установим нормаль штриховки
        pHatch->setNormal(AcGeVector3d::kZAxis);
        // Установим уровень штриховки
        pHatch->setElevation(0.0);
        // Установим шаблон штриховки
        pHatch->setPattern(AcDbHatch::kPreDefined, _T("SOLID"));
        // Установим ассоциативность
        pHatch->setAssociative(Adesk::kTrue);
        if(masUzel[i].TIP==5) pHatch->setColorIndex(ColorAb);
        if(masUzel[i].TIP==6) pHatch->setColorIndex(ColorKol);
       
        AcDbObjectIdArray dbObjIds;
        //dbObjIds.setLogicalLength(0);
       
        dbObjIds.append(cirId);
       
        pHatch->appendLoop(AcDbHatch::kExternal, dbObjIds);
        dbObjIds.setLogicalLength(0);
        pHatch->appendLoop(AcDbHatch::kDefault, dbObjIds);
       
        // Обработка контуров штриховки
        pHatch->evaluateHatch();
        AcDbObjectId hatchId;
        dbObjIds.setLogicalLength(0);
       
        pHatch->getAssocObjIds(dbObjIds);
        postToDb(pHatch, hatchId);
       
        // Добавим ассоциативность к окружностям
        for (int j=0; j < dbObjIds.length(); j++)
        {
            AcDbObjectPointer<AcDbEntity> pEnt(dbObjIds[j],AcDb::kForWrite);
            if ((es = pEnt.openStatus()) != Acad::eOk)
            {
                acutPrintf(_T("\nError open circle for write: %s"),acadErrorStatusText(es));
                return;
            }// end if
            pEnt->addPersistentReactor(hatchId);
        }// end for
       
                // Добавляю штриховку
                dbObjIds.append(hatchId);
        // созаю группу
        createGroup(dbObjIds, _T("УЗЕЛ"));
       
        text->close();
        pHatch->close();
        pCircle->close();
}

Re: Группировка штриховки и круга

я понимаю что вопрос глупый, но все-таки может быть кто-нибудь из гуру поможет новичку. Форум обазил, ничего применить не смог из представленного. Спасибо.

Re: Группировка штриховки и круга

> Jeyson
Как минимум:

text->close();
pHatch->close();
pCircle->close();

нужно поставить до

createGroup(dbObjIds, _T("УЗЕЛ"));

Re: Группировка штриховки и круга

Спасибо, Александр, эту операцию произвел, однако к ожидаемому результату она не привела. Штриховка и окружность блок не образуют

Re: Группировка штриховки и круга

> Jeyson
Какой блок? Ты же объединяещь их в группу. А группа и блок - это совершенно разные понятия в AutoCAD.

Re: Группировка штриховки и круга

я спутал понятия. Нужно чтобы при выделении одного из объектов (круга или штриховки) выделялись оба объекта и круг и штриховка. По-моему группирование приводит к этому результату. Или я ошибаюсь?

Re: Группировка штриховки и круга

> Jeyson
Если переменная PICKSTYLE равна 1 или 3 то при выборе одного из объектов из группы будут выбираться оба. Правда это зависит от того как ты их выбираешь. Блок же всегда выбирается целиком.