Тема: Проблемы с hatch

Приветствую!
      Вопрос в следующем: имеется набор точек, образующих замкнутый контур. По ним строится AcDbPolyline, затем по линии контура создается AcDbHatch, связанный с ней. Проблема в том, что если затем уже вручную изменяешь контур, hatch на это никак не реагирует. Если же hatch создается вручную по построенной полилинии, он багополучно изменяется вслед за изменением формы.
VS 2005 C++, Autocad 2006-2008

Образец кода:
....
        AcDbBlockTableRecord *pBlkTblRcd;
....
        AcGePoint2dArray vertexPts;// набор точек контура

    AcDbObjectIdArray loopIds;
    AcDbObjectId pId;
    AcDbPolyline* loopPoly = new AcDbPolyline();

    for (i = 0; i < vertexPts.length(); i++) {
        loopPoly->addVertexAt(i,vertexPts[i]);
        //loopPoly->setBulgeAt(i,vertexBulges[i]);
    }
    loopPoly->setElevation(pPoly->elevation());
    loopPoly->setColor(fillCol);
    loopPoly->setLayer(layId);
    loopPoly->setClosed(true);
    loopPoly->setPlinegen(true);
    es = pBlkTblRcd->appendAcDbEntity(loopPoly);

    pId = loopPoly->objectId();
    loopIds.append(loopPoly->objectId());
    loopPoly->close();

    AcDbHatch* vHatch = new AcDbHatch();
    vHatch->setColor(fillCol); //заданный цвет
    vHatch->setLayer(layId); //заданный слой
    vHatch->setHatchStyle(AcDbHatch::kNormal);
        vHatch->setAssociative(Adesk::kTrue);

        vHatch->appendLoop(AcDbHatch::kExternal, loopIds);

    vHatch->setPattern(AcDbHatch::kPreDefined, _T("SOLID"));
    vHatch->setNormal(AcGeVector3d::kZAxis);
    vHatch->evaluateHatch();

    pBlkTblRcd->appendAcDbEntity(vHatch);
    vHatch->close();

   Заранее признателен.

Re: Проблемы с hatch

кажись где-то так должно выглядеть

AcDbHatch* vHatch = new AcDbHatch(); 
vHatch->setColor(fillCol); //заданный цвет 
vHatch->setLayer(layId); //заданный слой 
vHatch->setHatchStyle(AcDbHatch::kNormal); 
vHatch->setPattern(AcDbHatch::kPreDefined, _T("SOLID")); 
vHatch->setNormal(AcGeVector3d::kZAxis); 
vHatch->appendLoop(AcDbHatch::kExternal, loopIds); 
vHatch->evaluateHatch(); 

vHatch->setAssociative(Adesk::kTrue); 

AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDat abase()->getBlockTable(pBlockTable,AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);
pBlockTable->close();   
pBlockTableRecord->appendAcDbEntity(hatchId, vHatch);
pBlockTableRecord->close();

bool Associative = true; // флаг асоциативности    
if(Associative == Adesk::kTrue && loopIds != NULL)
{
  AcDbEntity *pEnt;
  Acad::ErrorStatus es;
  for (i = 0; i < loopIds->length(); i++) 
  {
    es = acdbOpenAcDbEntity(pEnt, loopIds->at(i), AcDb::kForWrite);
    if (es == Acad::eOk)
    {
      pEnt->addPersistentReactor(hatchId);
      pEnt->close();
    }
  }
}
pHatch->downgradeOpen();
pHatch->draw();
pHatch->close();

Re: Проблемы с hatch

Большое спасибо, все заработало.