diff --git a/SurfFlatRegion.cpp b/SurfFlatRegion.cpp index 121b82f..6747bcb 100644 --- a/SurfFlatRegion.cpp +++ b/SurfFlatRegion.cpp @@ -1215,12 +1215,12 @@ SurfFlatRegion::CalcAuxSurf( double dLinTol, double dAngTolDeg) const ICurve* pLoop = GetMyLoop( i, j) ; while ( pLoop != nullptr) { // approssimo con linee a destra per non avere problemi in punti di contatto tra esterni e interni - PolyLine PL ; - if ( ! pLoop->ApproxWithLines( dLinTol, dAngTolDeg, ICurve::APL_RIGHT, PL)) + vPL.emplace_back( PolyLine()) ; + if ( ! pLoop->ApproxWithLines( dLinTol, dAngTolDeg, ICurve::APL_RIGHT, vPL.back())) return nullptr ; double dLoopArea ; - if ( PL.GetAreaXY( dLoopArea) && abs( dLoopArea) > 25 * SQ_EPS_SMALL) - vPL.emplace_back( PL) ; + if ( ! vPL.back().GetAreaXY( dLoopArea) || abs( dLoopArea) <= 25 * SQ_EPS_SMALL) + vPL.pop_back() ; pLoop = GetMyLoop( i, ++j) ; } // se chunk abbastanza grande, creo la superficie trimesh relativa