diff --git a/LuaLibs/WProcessFreeContour.lua b/LuaLibs/WProcessFreeContour.lua index aed5e28..f336a9f 100644 --- a/LuaLibs/WProcessFreeContour.lua +++ b/LuaLibs/WProcessFreeContour.lua @@ -1183,7 +1183,7 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd local i = 1 -- se faccia finale con fine non lavorato, forzo partenza da prima faccia non tutta saltata (tipo 4) if bClosed and ( vFace[#vFace].Type == 4 or ( vFace[#vFace].Type & 2) ~= 0) then - while i <= #vFace and vFace[i].Type == 4 do + while i <= #vFace and vFace[i].Type == 4 and abs( vFace[i].SideAng) < 0.1 do i = i + 1 end end @@ -1228,14 +1228,21 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd EgtSetMachiningGeometry( {{ Proc.Id, vFace[i].Fac}}) local dSal = 0 if #vFace == 1 then dSal = -dMillDiam / 2 end + -- se angolo interno prima if vFace[i].PrevAng < -30 then local dSinA = -sin( vFace[OrigI].PlPrevAng + 90) local dTanA = -tan( vFace[OrigI].PlPrevAng + 90) dSal = -dMillDiam / 2 * ( 1 + ( 1 + dSinA) * dTanA) + min( 0, vFace[OrigI].Width * vFace[OrigI].Norm:getZ() * dTanA) -- se faccia precedente inclinata verso il basso - if vFace[i].PrevAng < -30 and j and vFace[j].Norm:getZ() < -0.017 then + if j and vFace[j].Norm:getZ() < -0.017 then dSal = dSal + vFace[j].Width * vFace[j].Norm:getZ() end + -- se angolo esterno prima + elseif vFace[i].PrevAng > 30 then + -- se faccia precedente inclinata verso il basso + if j and vFace[j].Norm:getZ() < -0.017 then + dSal = dSal - vFace[j].Width * vFace[j].Norm:getZ() + end end local dEal = vFace[i].Whisk - vFace[i].Len EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal) @@ -1330,11 +1337,18 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd if OrigH and vFace[OrigH].Norm:getZ() < -0.017 then dSal = dSal + vFace[OrigH].Width * vFace[OrigH].Norm:getZ() end + -- se angolo esterno prima + elseif vFace[OrigI].PrevAng > 30 then + -- se faccia precedente inclinata verso il basso + local OrigH = EgtIf( OrigI > 1, OrigI - 1, EgtIf( bClosed, #vFace, nil)) + if OrigH and vFace[OrigH].Norm:getZ() < -0.017 then + dSal = dSal - vFace[OrigH].Width * vFace[OrigH].Norm:getZ() + end end end - -- se lavorazione completa su faccia finale + -- se lavorazione completa o finale su faccia finale local LastFace = ( LastJ or OrigI) - if vFace[LastFace].Type == 4 then + if vFace[LastFace].Type == 4 or vFace[LastFace].Type == 2 then local OrigK = EgtIf( LastFace < #vFace, LastFace + 1, EgtIf( bClosed, 1, nil)) -- se angolo interno dopo if OrigK and vFace[OrigK].PrevAng < -30 then @@ -1345,6 +1359,12 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd if vFace[OrigK].Norm:getZ() < -0.017 then dEal = dEal + vFace[OrigK].Width * vFace[OrigK].Norm:getZ() end + -- se angolo esterno dopo + elseif OrigK and vFace[OrigK].PrevAng > 30 then + -- se faccia successiva inclinata verso il basso + if vFace[OrigK].Norm:getZ() < -0.017 then + dEal = dEal - vFace[OrigK].Width * vFace[OrigK].Norm:getZ() + end end end -- se percorso chiuso e completo con fresa diff --git a/LuaLibs/WProcessLapJoint.lua b/LuaLibs/WProcessLapJoint.lua index 0238caf..425c5b4 100644 --- a/LuaLibs/WProcessLapJoint.lua +++ b/LuaLibs/WProcessLapJoint.lua @@ -2000,7 +2000,7 @@ local function MakeOneFace( Proc, nRawId, b3Raw) -- recupero la lavorazione di taglio con lama e i suoi parametri local sCutting, dSawDiam, dSawThick, dSawMaxDepth = WM.FindCutting( 'Standard') -- se non inclinata o capacità di taglio non sufficiente, provo con svuotatura - if not sCutting or vtN:getZ() > 0.95 or dSawMaxDepth < dDimV + WD.CUT_SIC then + if not sCutting or vtN:getZ() > 0.866 or dSawMaxDepth < dDimV + WD.CUT_SIC then -- faccio con svuotatura local nFacet = 0 return MakeByPocketing( Proc, nFacet, nRawId, b3Raw)