diff --git a/EXE_GdbGetSurf.cpp b/EXE_GdbGetSurf.cpp index ece79a4..967b48a 100644 --- a/EXE_GdbGetSurf.cpp +++ b/EXE_GdbGetSurf.cpp @@ -690,10 +690,14 @@ ExeSurfTmFacetElevationInBBox( int nId, int nFacet, const BBox3d& b3Box, int nRe // l'elevazione va aggiornata con la massima Z delle eventuali intersezioni dell'edge con il loop IntersCurveCurve intLL( *pLine, *pLoop) ; IntCrvCrvInfo aInfo ; - for ( int i = 0 ; intLL.GetIntCrvCrvInfo( i, aInfo) ; ++ i) { + for ( int j = 0 ; intLL.GetIntCrvCrvInfo( j, aInfo) ; ++ j) { dElev = max( dElev, aInfo.IciA[0].ptI.z) ; if ( aInfo.bOverlap) dElev = max( dElev, aInfo.IciA[1].ptI.z) ; + // se prima intersezione va da interno ad esterno allora devo considerare il punto iniziale del segmento (vertice) + if ( j == 0 && aInfo.IciA[0].nPrevTy == ICCT_IN) + dElev = max( dElev, vEdges[i].first.z) ; + // c'è anche il caso di ultima intersezione da esterno a interno, ma vertice già considerato nel caso precedente } }