AcDbHatch* pHatch = new AcDbHatch();
pHatch->setNormal(AcGeVector3d::kZAxis);
pHatch->setElevation(0.0);
pHatch->setAssociative(Adesk::kFalse);
pHatch->setPattern(AcDbHatch::kPreDefined, L"SOLID");
pHatch->setHatchStyle(AcDbHatch::kNormal);
AcGePoint2dArray vertexPts;
vertexPts.setPhysicalLength(0).setLogicalLength(5);
vertexPts[0].set(2.0, 2.0);
vertexPts[1].set(8.0, 2.0);
vertexPts[2].set(8.0, 8.0);
vertexPts[3].set(2.0, 8.0);
vertexPts[4].set(2.0, 2.0);
AcGeDoubleArray vertexBulges;
vertexBulges.setPhysicalLength(0).setLogicalLength(5);
for (int i = 0; i < 5; i++) vertexBulges[i] = 0.0;
pHatch->appendLoop(AcDbHatch::kExternal, vertexPts, vertexBulges);
pHatch->evaluateHatch();
AcArray<int> ViewportNumbers;
struct resbuf res2;
acedGetVar(L"CVPORT", &res2);
ViewportNumbers.append(res2.resval.rint);
AcGiTransientManager* pTransientManager = acgiGetTransientManager();
if (!pTransientManager->addTransient(pHatch, kAcGiDirectTopmost, 0, ViewportNumbers))
{
acutPrintf(L"\nError");
}