diff --git a/LuaLibs/ProcessLongCut.lua b/LuaLibs/ProcessLongCut.lua index fde4b20..7bd06d1 100644 --- a/LuaLibs/ProcessLongCut.lua +++ b/LuaLibs/ProcessLongCut.lua @@ -1,4 +1,4 @@ --- ProcessLongCut.lua by Egaltech s.r.l. 2020/10/07 +-- ProcessLongCut.lua by Egaltech s.r.l. 2020/10/08 -- Gestione calcolo taglio longitudinale per Travi -- Tabella per definizione modulo @@ -164,19 +164,19 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId) bLimXmax = true end end - -- Verifico lato di lavorazione + -- Verifico lato di lavorazione (limite di lato a 45deg per pinze che schiacciano) local nSide = 1 if vtN:getZ() < - 0.5 then nSide = -1 - elseif vtN:getY() < -0.7071 then + elseif vtN:getY() < -0.7072 then nSide = -2 - elseif vtN:getY() > 0.7071 then + elseif vtN:getY() > 0.7072 then nSide = 2 end -- determino se lavorazione da davanti o da dietro local bFront = ( vtN:getY() < 0) -- ottengo la distanza tra la fine del pezzo e il pezzo successivo - local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5 + local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5.4 local bForcedLim local sWarn ---------------------------------------------------------------------------------------------------------------------------------------- @@ -187,7 +187,7 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId) -- fino al punto più vicino della faccia laterale (prima l'arretramento era sempre del rggio utensile). -- Questo viene fatto se Q07=1 o fresa da sotto ---------------------------------------------------------------------------------------------------------------------------------------- - local bUseBlade = EgtGetInfo( Proc.Id, 'Q05', 'i') == 1 + local bUseBlade = ( EgtGetInfo( Proc.Id, 'Q05', 'i') == 1) local nUseMillOnSide = EgtGetInfo( Proc.Id, 'Q07', 'i') or 0 -- se entrambe i Q sono attivi, disabilito lama if nUseMillOnSide > 0 then bUseBlade = false end @@ -222,9 +222,12 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId) local nC = ceil( ( dLen - dStartAccDist - dEndAccDist) / BD.LONGCUT_MAXLEN) local dC = 0 if nC > 0 then - dC = dLen / ( nC + 2) - dStartAccDist = dC - dEndAccDist = dC + dC = ( dLen - dStartAccDist - dEndAccDist) / nC + if dC < min( dStartAccDist, dEndAccDist) then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end nC = nC + 2 else if dLen > min( dStartAccDist, dEndAccDist) then @@ -341,12 +344,27 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId) if nC > 0 then if bStartFixed and bEndFixed then dC = ( dLen - dStartAccDist - dEndAccDist) / nC + if dC < min( dStartAccDist, dEndAccDist) then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end elseif bStartFixed then dC = ( dLen - dStartAccDist) / ( nC + 1) dEndAccDist = dC + if dC < dStartAccDist then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end elseif bEndFixed then dC = ( dLen - dEndAccDist) / ( nC + 1) dStartAccDist = dC + if dC < dEndAccDist then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end else dC = dLen / ( nC + 2) dStartAccDist = dC diff --git a/LuaLibs/ProcessLongDoubleCut.lua b/LuaLibs/ProcessLongDoubleCut.lua index 5838ba3..3d4a1b5 100644 --- a/LuaLibs/ProcessLongDoubleCut.lua +++ b/LuaLibs/ProcessLongDoubleCut.lua @@ -1,4 +1,4 @@ --- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2020/10/07 +-- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2020/10/08 -- Gestione calcolo doppio taglio longitudinale per Travi -- Tabella per definizione modulo @@ -253,7 +253,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId) _, _, vWidth[2] = BL.GetFaceHvRefDim( Proc.Id, tFaceLong[2]) -- ottengo la distanza tra la fine del pezzo e il pezzo successivo - local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5 + local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5.4 local bForcedLim local sWarn ---------------------------------------------------------------------------------------------------------------------------------------- @@ -290,7 +290,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId) dToolThick = EgtTdbGetCurrToolParam(MCH_TP.THICK) or dToolThick end end - -- se la distanza dal pezzo successivo è inferiore della metà lama, dò un warning + -- se la distanza dal pezzo successivo è inferiore della metà lama, do un warning if dDistToNextPiece < dToolDiam/2 then sWarn = 'Warning on saw cut : Cut machining can damage next piece' EgtOutLog( sWarn .. ' (process ' .. tostring( Proc.Id) .. ')') @@ -301,14 +301,17 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId) local nC = ceil( ( dLen - dStartAccDist - dEndAccDist) / BD.LONGCUT_MAXLEN) local dC = 0 if nC > 0 then - dC = dLen / ( nC + 2) - dStartAccDist = dC - dEndAccDist = dC + dC = ( dLen - dStartAccDist - dEndAccDist) / nC + if dC < min( dStartAccDist, dEndAccDist) then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end nC = nC + 2 else if dLen > min( dStartAccDist, dEndAccDist) then nC = 2 - dStartAccDist = dLen/2 + dStartAccDist = dLen / 2 dEndAccDist = dStartAccDist else nC = 1 @@ -499,12 +502,27 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId) if nC > 0 then if bStartFixed and bEndFixed then dC = ( dLen - dStartAccDist - dEndAccDist) / nC + if dC < min( dStartAccDist, dEndAccDist) then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end elseif bStartFixed then dC = ( dLen - dStartAccDist) / ( nC + 1) dEndAccDist = dC + if dC < dStartAccDist then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end elseif bEndFixed then dC = ( dLen - dEndAccDist) / ( nC + 1) dStartAccDist = dC + if dC < dEndAccDist then + dC = dLen / ( nC + 2) + dStartAccDist = dC + dEndAccDist = dC + end else dC = dLen / ( nC + 2) dStartAccDist = dC