diff --git a/VolZmapVolume.cpp b/VolZmapVolume.cpp index afd7c95..51867ce 100644 --- a/VolZmapVolume.cpp +++ b/VolZmapVolume.cpp @@ -4545,7 +4545,8 @@ VolZmap::CompCyl_Milling( int nGrid, const Point3d& ptS, const Point3d& ptE, double dOrtLen = vtMoveOrt.Len() ; // Parametri di contenimento - Vector3d vtPerp = vtToolDir ^ Z_AX ; vtPerp.Normalize() ; + Vector3d vtPerp = vtToolDir ^ Z_AX ; + bool bPerpOk = vtPerp.Normalize() ; if ( vtPerp * vtMove < 0) vtPerp.Invert() ; int nSkip = 0 ; @@ -4568,12 +4569,14 @@ VolZmap::CompCyl_Milling( int nGrid, const Point3d& ptS, const Point3d& ptE, } // salto il controllo degli spilloni prima del piano di fianco verticale di inizio o dopo il piano di fianco verticale di fine - if ( ( ptC + Z_AX * m_dMinZ[nGrid] - ptI + vtPerp * dRad) * vtPerp < -EPS_SMALL && + if ( bPerpOk && + ( ptC + Z_AX * m_dMinZ[nGrid] - ptI + vtPerp * dRad) * vtPerp < -EPS_SMALL && ( ptC + Z_AX * m_dMaxZ[nGrid] - ptI + vtPerp * dRad) * vtPerp < -EPS_SMALL) { ++ nSkip ; continue ; } - if ( ( ptC + Z_AX * m_dMinZ[nGrid] - ptF - vtPerp * dRad) * vtPerp > EPS_SMALL && + if ( bPerpOk && + ( ptC + Z_AX * m_dMinZ[nGrid] - ptF - vtPerp * dRad) * vtPerp > EPS_SMALL && ( ptC + Z_AX * m_dMaxZ[nGrid] - ptF - vtPerp * dRad) * vtPerp > EPS_SMALL) { ++ nSkip ; continue ;