剪辑边界示例
在以下示例中,在绘制任何内容之前,剪辑边界被推送到剪辑边界堆栈上,并在此对象的绘制完成后再次弹出: Adesk::Boolean MyObject::subWorldDraw(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 实现可能会从 返回 false,并且不应调用 。pushClipBoundary()popClipBoundary() 父主题: |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-14 05:52
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.