diff --git a/SurfBezier.cpp b/SurfBezier.cpp index 29a47b1..c9fea9a 100644 --- a/SurfBezier.cpp +++ b/SurfBezier.cpp @@ -5988,7 +5988,9 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c double dFloor0 = floor( dNewStart0) ; double dCeil1 = ceil( dNewStart1) ; double dFloor1 = floor( dNewStart1) ; + vPnt0.pop_back() ; rotate( vPnt0.begin(), vPnt0.begin() + int( dCeil0), vPnt0.end()) ; + vPnt1.pop_back() ; rotate( vPnt1.begin(), vPnt1.begin() + int( dCeil1), vPnt1.end()) ; if ( abs( dNewStart0 - round( dNewStart0)) > EPS_SMALL) { Point3d ptNewStart ; CrvU0.GetStartPoint( ptNewStart) ; @@ -6125,7 +6127,7 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c return false ; } // se ho una corrispondenza tra punti ( e non sono alla fine del tratto) allora non aggiungo split - if ( abs( vdParamPos0[c0] - vdParamPos1[c1]) < EPS_PARAM && vdParamPos0[c0] < 1) { + if ( abs( vdParamPos0[c0] - vdParamPos1[c1]) < EPS_SMALL && vdParamPos0[c0] < 1) { ++c0 ; ++c1 ; ++nLastParam0 ; @@ -6140,6 +6142,7 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c nSplit1 = vdSplit1.size() ; } else if ( dPar = round( dPar) ; dPar > nLastParam1){ + ++ c1 ; ++ nLastParam1 ; } ++nLastParam0 ; @@ -6154,6 +6157,7 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c nSplit0 = vdSplit0.size() ; } else if ( dPar = round( dPar) ; dPar > nLastParam0){ + ++ c0 ; ++ nLastParam0 ; } ++nLastParam1 ;