diff --git a/SurfFlatRegion.cpp b/SurfFlatRegion.cpp index cbf02af..6b7ddf1 100644 --- a/SurfFlatRegion.cpp +++ b/SurfFlatRegion.cpp @@ -968,6 +968,22 @@ SurfFlatRegion::GetLoop( int nChunk, int nLoop) const return pCrv ; } +//---------------------------------------------------------------------------- +bool +SurfFlatRegion::ApproxLoopWithLines( int nChunk, int nLoop, double dLinTol, double dAngTolDeg, int nType, PolyLine& PL) const +{ + // recupero il loop nel riferimento intrinseco + const ICurve* pMyCrv = GetMyLoop( nChunk, nLoop) ; + if ( pMyCrv == nullptr) + return false ; + // ne creo una approssimazione + if ( ! pMyCrv->ApproxWithLines( dLinTol, dAngTolDeg, nType, PL)) + return false ; + // la porto nel riferimento in cui č inserito l'oggetto + PL.ToGlob( m_frF) ; + return true ; +} + //---------------------------------------------------------------------------- const ISurfTriMesh* SurfFlatRegion::GetAuxSurf( void) const diff --git a/SurfFlatRegion.h b/SurfFlatRegion.h index 5947257..892ab75 100644 --- a/SurfFlatRegion.h +++ b/SurfFlatRegion.h @@ -84,6 +84,7 @@ class SurfFlatRegion : public ISurfFlatRegion, public IGeoObjRW int GetChunkCount( void) const override ; int GetLoopCount( int nChunk) const override ; ICurve* GetLoop( int nChunk, int nLoop) const override ; // nChunk 0-based, nLoop 0-based (1°esterno, successivi interni) + bool ApproxLoopWithLines( int nChunk, int nLoop, double dLinTol, double dAngTolDeg, int nType, PolyLine& PL) const override ; const ISurfTriMesh* GetAuxSurf( void) const override ; SurfFlatRegion* CloneChunk( int nChunk) const override ; bool GetChunkCentroid( int nChunk, Point3d& ptCen) const override ;