Тема: Explode блока и отрисовка его частей
Привет народ.
Есть такая проблемка, помогите решить.
Есть CustomEntity, который может отрисовываться блоком, т.к. есть проблемы с отрисовкой блока заданым цветом, то делаю explode блока и отрисовываю уже его составные части, все отрисовывается корректно, кроме объекта AcDbSolid, т.е. он не рисуется вообще, в чем может быть проблема?
Привожу код:
Adesk::Boolean Point::subWorldDraw (AcGiWorldDraw *mode) { assertReadEnabled () ; mode->subEntityTraits().setTrueColor(color().entityColor()); Acad::ErrorStatus es; AcDbBlockTableRecord *pBlockDef = NULL; AcDbBlockTable* pBlockTable = NULL; AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase(); es = pDb->getBlockTable(pBlockTable, AcDb::kForRead); if ( es != Acad::eOk ) { return es; } es = pBlockTable->getAt(m_strBlockName, pBlockDef, AcDb::kForRead); pBlockTable->close(); if ( es != Acad::eOk ) { return es; } //задаем параметрі блока AcDbBlockReference* blockref = new AcDbBlockReference(m_pointPosition, pBlockDef->id()); pBlockDef->close(); blockref->setLayer(layerId()); blockref->setScaleFactors(AcGeScale3d(m_xscale, m_yscale, 1)); blockref->setRotation(m_rotation); //explode блока и отрисовка его частей AcDbBlockReference* blockrefCopy = new AcDbBlockReference(); blockrefCopy->copyFrom(blockref); AcDbVoidPtrArray explodeObjects; blockrefCopy->explode(explodeObjects); for (int j = 0; j < explodeObjects.length(); j++) { //если здесь AcDbSolid, то не рисуется. AcDbEntity* ent = (AcDbEntity*)explodeObjects.at(j); ent->setLayer(layerId()); ent->setColor(color(), Adesk::kTrue); ent->worldDraw(mode); } delete blockref; delete blockrefCopy; return Acad::eOk ; }