From dc798aaabac74b25b0fa7966f4ab9c0df60d3890 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 29 Oct 2024 18:39:52 +0100 Subject: [PATCH] EgtGeomKernel : - in Vmill ulteriore velocizzazione nel taglio dexel con cilindri. --- VolZmapVolume.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/VolZmapVolume.cpp b/VolZmapVolume.cpp index df6681a..afd7c95 100644 --- a/VolZmapVolume.cpp +++ b/VolZmapVolume.cpp @@ -4544,6 +4544,10 @@ VolZmap::CompCyl_Milling( int nGrid, const Point3d& ptS, const Point3d& ptE, double dLongLen = vtMoveLong.Len() ; double dOrtLen = vtMoveOrt.Len() ; + // Parametri di contenimento + Vector3d vtPerp = vtToolDir ^ Z_AX ; vtPerp.Normalize() ; + if ( vtPerp * vtMove < 0) + vtPerp.Invert() ; int nSkip = 0 ; for ( int i = nStartI ; i <= nEndI ; ++ i) { @@ -4552,17 +4556,29 @@ VolZmap::CompCyl_Milling( int nGrid, const Point3d& ptS, const Point3d& ptE, Point3d ptC( ( i + 0.5) * m_dStep, ( j + 0.5) * m_dStep, 0) ; // salto il controllo degli spilloni sotto il piano limite in basso o sopra il piano limite in alto - if ( ( ptC - ptITip) * vtToolDir < -EPS_SMALL && + if ( ( ptC + Z_AX * m_dMinZ[nGrid] - ptITip) * vtToolDir < -EPS_SMALL && ( ptC + Z_AX * m_dMaxZ[nGrid] - ptITip) * vtToolDir < -EPS_SMALL) { ++ nSkip ; continue ; } - if ( ( ptC - ptI - vtMoveLong) * vtToolDir > EPS_SMALL && + if ( ( ptC + Z_AX * m_dMinZ[nGrid] - ptI - vtMoveLong) * vtToolDir > EPS_SMALL && ( ptC + Z_AX * m_dMaxZ[nGrid] - ptI - vtMoveLong) * vtToolDir > EPS_SMALL) { ++ nSkip ; continue ; } + // 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 && + ( 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 && + ( ptC + Z_AX * m_dMaxZ[nGrid] - ptF - vtPerp * dRad) * vtPerp > EPS_SMALL) { + ++ nSkip ; + continue ; + } + Point3d ptInt1, ptInt2 ; Vector3d vtN1, vtN2 ;