diff --git a/LuaLibs/ProcessHeadCut.lua b/LuaLibs/ProcessHeadCut.lua index b20e046..dcfd8ff 100644 --- a/LuaLibs/ProcessHeadCut.lua +++ b/LuaLibs/ProcessHeadCut.lua @@ -8,6 +8,7 @@ -- 2022/11/10 Corrette finiture lama per BigSection con trave alta -- 2023/04/20 Per travi alte aggiunti tagli orizzontali per ridurre le dimensioni degli scarti -- 2023/08/02 Corretto calcolo allungamenti/accorciamenti pezzi alti per contemplare anche taglio singolo +-- 2023/10/17 Corretto calcolo allungamenti/accorciamenti per evitare lunghezze del percorso negative -- Tabella per definizione modulo local ProcessHeadCut = {} @@ -267,10 +268,20 @@ function ProcessHeadCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bNeedHCut -- distanza in Y tra il centro della lama e l'intersezione tra la lama stessa e la massima Z della trave, + extra -- se taglio doppio l'intersezione sarà in mezzeria, se taglio singolo sarà all'estremo opposto della trave local dKL = dSawRad - dMaxDepth + EgtIf( bDoubleCut, b3Raw:getDimY() / 2 + BD.CUT_EXTRA_MIN, b3Raw:getDimY() + BD.CUT_EXTRA) + -- lunghezza minima del percorso di lavorazione, in caso accorciamento porti a lunghezza negativa + local dMinSawingLength = 5 if BD.C_SIMM then - dAccEnd = sqrt( dSawRad * dSawRad - dKL * dKL) + dAccEnd = sqrt( max( dSawRad * dSawRad - dKL * dKL, 0)) + -- non posso comunque accorciare più della dimensione della geometria, quindi in caso allungo entrata + if dAccEnd > b3Raw:getDimZ() - 100 * GEO.EPS_SMALL then + dAccStart = b3Raw:getDimZ() - dAccEnd - dMinSawingLength + end else - dAccStart = sqrt( dSawRad * dSawRad - dKL * dKL) + dAccStart = sqrt( max( dSawRad * dSawRad - dKL * dKL, 0)) + -- non posso comunque accorciare più della dimensione della geometria, quindi in caso allungo uscita + if dAccStart > b3Raw:getDimZ() - 100 * GEO.EPS_SMALL then + dAccEnd = b3Raw:getDimZ() - dAccStart - dMinSawingLength + end end end diff --git a/LuaLibs/ProcessSplit.lua b/LuaLibs/ProcessSplit.lua index 5a8fa5f..9a2cbaa 100644 --- a/LuaLibs/ProcessSplit.lua +++ b/LuaLibs/ProcessSplit.lua @@ -13,6 +13,7 @@ -- 2023/05/09 Aggiunta richiesta risalita preliminare a Zmax per tagli da sopra su macchine PF e ONE. -- 2023/06/13 Corrette note Precut e Cut per tagli aggiuntivi orizzontali. -- 2023/08/02 Corretto calcolo allungamenti/accorciamenti pezzi alti per contemplare anche taglio singolo. +-- 2023/10/17 Corretto calcolo allungamenti/accorciamenti per evitare lunghezze del percorso negative -- Tabella per definizione modulo local ProcessSplit = {} @@ -471,10 +472,20 @@ function ProcessSplit.Make( Proc, nPhase, nRawId, nPartId, nOrd, sDownOrSideOrSt -- distanza in Y tra il centro della lama e l'intersezione tra la lama stessa e la massima Z della trave, + extra -- se taglio doppio l'intersezione sarà in mezzeria, se taglio singolo sarà all'estremo opposto della trave local dKL = dSawRad - dMaxDepth + EgtIf( bDoubleCut, b3Raw:getDimY() / 2 + BD.CUT_EXTRA_MIN, b3Raw:getDimY() + BD.CUT_EXTRA) + -- lunghezza minima del percorso di lavorazione, in caso accorciamento porti a lunghezza negativa + local dMinSawingLength = 5 if BD.C_SIMM then dAccEnd = sqrt( max( dSawRad * dSawRad - dKL * dKL, 0)) + -- non posso comunque accorciare più della dimensione della geometria, quindi in caso allungo entrata + if dAccEnd > b3Raw:getDimZ() - 100 * GEO.EPS_SMALL then + dAccStart = b3Raw:getDimZ() - dAccEnd - dMinSawingLength + end else dAccStart = sqrt( max( dSawRad * dSawRad - dKL * dKL, 0)) + -- non posso comunque accorciare più della dimensione della geometria, quindi in caso allungo uscita + if dAccStart > b3Raw:getDimZ() - 100 * GEO.EPS_SMALL then + dAccEnd = b3Raw:getDimZ() - dAccStart - dMinSawingLength + end end end