ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Пример отсечения границ


В следующем примере, граница обрезки помещена на стек границы обрезки прежде, чем что - нибудь рисует и вытолкнуто от снова, как только рисунок в этот объект полон:

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 ().



Содержание раздела