Пример отсечения границ
В следующем примере, граница обрезки помещена на стек границы обрезки прежде, чем что - нибудь рисует и вытолкнуто от снова, как только рисунок в этот объект полон:
Adesk::Boolean
MyObject::worldDraw(AcGiWorldDraw* pDraw)
{
AcGiWorldGeometry * pGeom = &pDraw->geometry();
pGeom->pushModelTransform(myTransform());
AcGiClipBoundary cb;
cb.m_bDrawBoundary= true;
cb.m_vNormal = AcGeVector3d::kZAxis;
cb.m_ptPoint = AcGePoint3d::kOrigin;
// Two points treated as a rectangle, three creates a triangle
cb.m_aptPoints.append(AcGePoint2d(0,0));
cb.m_aptPoints.append(AcGePoint2d(5,5));
// We are clipping in our own space
cb.m_xToClipSpace.setToIdentity();
cb.m_xInverseBlockRefXForm = myTransform().inverse();
// No Z clipping
cb.m_bClippingBack = cb.m_bClippingFront = false;
cb.m_dFrontClipZ = cb.m_dBackClipZ = 0.;
Adesk::Boolean bPopClipBoundary = pGeom->pushClipBoundary(&cb);
// Draw something
pGeom->circle(...);
pGeom->popModelTransform();
if(bPopClipBoundary){ pGeom->popClipBoundary(); }
return true; // world-only
}
Так как это отсечение - комплексная операция, некоторые AcGi
выполнение не могли бы поддерживать это полностью. В этом случае, AcGi выполнение может возвращать ложь от pushClipBoundary (), и Вы не должны вызвать popClipBoundary ().