diff --git a/LuaLibs/ProcessLongCut.lua b/LuaLibs/ProcessLongCut.lua index ac5f5b0..203c83d 100644 --- a/LuaLibs/ProcessLongCut.lua +++ b/LuaLibs/ProcessLongCut.lua @@ -23,6 +23,7 @@ -- 2023/02/21 Verso di avanzamento della lama migliorato anche con lama LC. -- 2023/02/22 Nuova gestione del verso di avanzamento ottimale che contempla tutti i casi. -- 2023/03/06 Correzione per i casi con lavorazione limitata. +-- 2023/03/15 Modifica alla lavorazione ulteriore con sega a catena per togliere il codolo e lasciare solo dei punti di supporto. -- Tabella per definizione modulo local ProcessLongCut = {} @@ -351,12 +352,13 @@ end --------------------------------------------------------------------- -- lavorazione faccia laterale con sega a catena -local function MakeSideFaceByChainSaw( nSurfId, dDepth, dOffs, dSal, dEal) +local function MakeSideFaceByChainSaw( nSurfId, dDepth, dOffs, dSal, dEal, bShortenStart, bShortenEnd) -- Recupero i dati dell'utensile local sSawing = ML.FindSawing( 'Sawing') local dMaxMat = 0 local dSawCornerRad = 0 local dSawThick = 0 + local dSawDiameter = 0 -- se non trova una lavorazione di sawing esco if not sSawing then local sErr = 'Error : Sawing not found in library' @@ -369,6 +371,7 @@ local function MakeSideFaceByChainSaw( nSurfId, dDepth, dOffs, dSal, dEal) dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat dSawThick = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dSawThick dSawCornerRad = EgtTdbGetCurrToolParam( MCH_TP.CORNRAD) or dSawCornerRad + dSawDiameter = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dSawDiameter end end end @@ -392,9 +395,19 @@ local function MakeSideFaceByChainSaw( nSurfId, dDepth, dOffs, dSal, dEal) EgtSetMachiningParam( MCH_MP.INITANGS, BL.GetChainSawInitAngs( vtN, vtOrtho, 1)) -- imposto eventuale sovramateriale EgtSetMachiningParam( MCH_MP.OFFSR, dOffs) + -- imposto tratti in cui la sega a catena non lavora per lasciare del materiale di supporto + local dSupportingWoodLength = 30 -- imposto allungamento percorso iniziale e finale - EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal) - EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal) + if bShortenStart then + EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal - dSupportingWoodLength - dSawDiameter) + else + EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal) + end + if bShortenEnd then + EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal - dSupportingWoodLength - dSawDiameter) + else + EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal) + end -- imposto il lato di lavorazione local nWorkSide = MCH_MILL_WS.RIGHT EgtSetMachiningParam( MCH_MP.WORKSIDE, nWorkSide) @@ -765,6 +778,10 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus -- calcolo quanto è l'affondamento del taglio local dOffsetTopBlade = ( dWidth + dDimStrip) / 2 local dOffsetDownBlade = ( dWidth + dDimStrip) / 2 + if bFinishWithChainSaw then + dOffsetTopBlade = dWidth / 2 + dOffsetDownBlade = dWidth / 2 + end local nStepDownBlade = 1 local dStepDownBlade = dWidth - dOffsetDownBlade -- se lama da sotto verifico se la componente Y della profondità di taglio supera la capacità della lama @@ -1029,15 +1046,18 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus -- se richiesto aggiungo la lavorazione con sega a catena if bFinishWithChainSaw then local dChainSawOverMaterial = 0 - local dChainSawDepth = dOffsetDownBlade - dDimStrip + local dChainSawDepth = dOffsetDownBlade + BD.CUT_EXTRA dEndDist = dEndDistUp dEndAccDist = dEndAccDistUp dStartDist = dStartDistUp dStartAccDist = dStartAccDistUp for i = nC, 1, -1 do - local dSal = EgtIf( i == nC, -dEndDist, - dEndAccDist - ( nC - i - 1) * dC) - local dEal = EgtIf( i == 1, -dStartDist, - dStartAccDist - ( i - 2) * dC) - local bChainSawOk, sErr = MakeSideFaceByChainSaw( Proc.Id, dChainSawDepth, dChainSawOverMaterial, dSal, dEal) + local bFirstCut = ( i == nC) + local bLastCut = ( i == 1) + local dSal = EgtIf( bFirstCut, -dEndDist, - dEndAccDist - ( nC - i - 1) * dC) + local dEal = EgtIf( bLastCut, -dStartDist, - dStartAccDist - ( i - 2) * dC) + local bShortenStartOrEnd = EgtIf( bFront, not bFirstCut, bFirstCut) + local bChainSawOk, sErr = MakeSideFaceByChainSaw( Proc.Id, dChainSawDepth, dChainSawOverMaterial, dSal, dEal, bShortenStartOrEnd, bShortenStartOrEnd) if not bChainSawOk then return false, sErr end end end diff --git a/Version.lua b/Version.lua index eb28bd6..8b30290 100644 --- a/Version.lua +++ b/Version.lua @@ -1,4 +1,4 @@ -- Version.lua by Egaltech s.r.l. 2023/03/13 -- Gestione della versione di Beam -VERSION = '2.5c4' +VERSION = '2.5c5'