Тема: Как программно определить штриховку с островами ?
Если я правильно все понял, то для создания штриховки можно передавать массив ID объектов, которые участвуют в штриховке (либо контур, либо островки). Элементы естественно замкнутые (все полилинии).
Но получается весьма забавно. В БД акада штриховка есть, а вот на чертеже ее не наблюдается.
Помоему все дело в evaluateHatch. Уж очень странный возврат из нее идет.
Кстати. вот моя функция.
Может кто знает в чем тут дело.
AcDbObjectId makeFill(AcDbObjectIdArray objIds, const char* Layer, Adesk::UInt16 Color) { Acad::ErrorStatus es; AcDbObjectId hatchId; if(objIds == NULL) return NULL; AcDbHatch* pHatch = new AcDbHatch(); AcGeVector3d normal(0.0, 0.0, 1.0); es = pHatch->setNormal(normal); es = pHatch->setElevation(0.0); es = pHatch->setAssociative(Adesk::kFalse); es = pHatch->setPattern(AcDbHatch::kPreDefined, "SOLID"); es = pHatch->setHatchStyle(AcDbHatch::kNormal); es = pHatch->appendLoop(AcDbHatch::kExternal, objIds); es = pHatch->setColorIndex(Color); if ( Layer != NULL )es = pHatch->setLayer(Layer); es = pHatch->evaluateHatch(); postToDatabase(pHatch, hatchId); // здесь идет запись в BD es = pHatch->upgradeOpen(); es = pHatch->draw(); es = pHatch->close(); return hatchId; }