diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index 60b35c6..6d04a30 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -13,6 +13,7 @@ -- 2022/04/12 DS Aggiunta gestione speciale cubetti con fresa da sotto. -- 2022/06/29 DS In MakeTwo modificato controllo facce dirette verso il basso. -- 2022/09/08 In MakeOne aggiunto argomento bForceInvert per poter forzare l'inversione del percorso. +-- 2023/02/13 Migliorata la direzione di lavoro della lama in modo da essere tendenzialmente opposta all'avanzamento. -- Tabella per definizione modulo local FacesBySaw = {} @@ -52,8 +53,23 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw return true, '' end vtV1 = - vtV1 + -- verifico se lavorazione con lama sotto e testa sopra + if not dVzLimDwnUp then dVzLimDwnUp = BL.GetNzLimDownUp( b3Raw, vtN, vtOrthO) end + local bDownUp = ( vtN:getZ() < dVzLimDwnUp) + -- verifico se la lama ruota in senso orario + if not EgtMdbSetCurrMachining( sCutting) then + return false + end + local bIsSawCW = EgtMdbGetCurrMachiningParam( MCH_MP.SPEED) < 0 local bInvert = bForceInvert - if bInvert == nil then + -- se la lama ruota in senso orario inverto la direzione di lavorazione, per avere rotazione lama opposta a avanzamento + if bInvert == nil and bIsSawCW and not bDownUp then + if ( ptP2:getZ() > ptP1:getZ() + 100 * GEO.EPS_SMALL) then + bInvert = false + else + bInvert = true + end + elseif bInvert == nil then bInvert = ( ptP2:getZ() < ptP1:getZ() - 100 * GEO.EPS_SMALL) end if bInvert then @@ -90,9 +106,6 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw vtTg = ptP2 - ptP1 ; vtTg:normalize() end end - -- verifico se lavorazione con lama sotto e testa sopra - if not dVzLimDwnUp then dVzLimDwnUp = BL.GetNzLimDownUp( b3Raw, vtN, vtOrthO) end - local bDownUp = ( vtN:getZ() < dVzLimDwnUp) local nFaceUse = nOrthoOpposite if bDownUp then nFaceUse = BL.GetOrtupOpposite( nOrthoOpposite) end local bWsRight = ( bInvert ~= bDownUp)