From 8decc393e6dd54c147bff41dd7dce14ab74dc4f1 Mon Sep 17 00:00:00 2001 From: DarioS Date: Wed, 29 Jun 2022 16:13:00 +0200 Subject: [PATCH] DataBeam : - in LongDoubleCut corretto calcolo lunghezza attacco/uscita perpendicolare per lavorazioni di fianco - in Cut modificata determinazione taglio bFromBottom in MakeFromTop - in FacesBySaw.MakeTwo modificato controllo facce dirette verso il basso. --- LuaLibs/FacesBySaw.lua | 22 ++++++++++++---------- LuaLibs/ProcessCut.lua | 7 ++++--- LuaLibs/ProcessLongDoubleCut.lua | 29 ++++++++--------------------- 3 files changed, 24 insertions(+), 34 deletions(-) diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index 3853154..37ca39f 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -1,4 +1,4 @@ --- FacesBySaw.lua by Egaltech s.r.l. 2022/06/07 +-- FacesBySaw.lua by Egaltech s.r.l. 2022/06/29 -- Gestione taglio con lama di feature con una o due facce -- 2021/01/06 Cambiato limite per attacco Tg con lama e CalcLeadInOutGeom rinominata in CalcLeadInOutPerpGeom. -- 2021/02/03 In taglio lama si accettano anche due lati con deviazione minore di 20deg. @@ -11,6 +11,7 @@ -- 2021/08/31 DS Aggiunta gestione nessun limite direzione da sotto per testa da sotto. -- 2021/11/26 DS Spostate qui MakeOneFaceBySaw (ora MakeOne), CalcLeadInOutPerpGeom e CalcLeadInOutTangGeom. -- 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. -- Tabella per definizione modulo local FacesBySaw = {} @@ -229,15 +230,6 @@ function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, sCutType, local vtN = {} ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) ptC[2], vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT) - -- verifico non siano orientate verso il basso - local bFaceOk = {} - bFaceOk[1] = ( vtN[1]:getZ() >= BD.NZ_MINB) - bFaceOk[2] = ( vtN[2]:getZ() >= BD.NZ_MINB) - if not bDownHead and not bFaceOk[1] and not bFaceOk[2] then - local sErr = 'Error : TwoFacesBySaw from bottom impossible' - EgtOutLog( sErr) - return false, sErr - end -- recupero dati su giunzione tra facce local bTouch, ptT1, ptT2, dAngT = EgtSurfTmFacetsContact( Proc.Id, 0, 1, GDB_ID.ROOT) if not bTouch then @@ -247,6 +239,16 @@ function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, sCutType, end local ptM = ( ptT1 + ptT2) / 2 local vtTg = ptT2 - ptT1 ; + local bConvex = ( dAngT > 0) + -- verifico non siano orientate troppo verso il basso e molto sbandate (oltre 10 deg) + local bFaceOk = {} + bFaceOk[1] = ( vtN[1]:getZ() >= BD.NZ_MINB or ( not bConvex and abs( vtN[1]:getY()) < 0.174)) + bFaceOk[2] = ( vtN[2]:getZ() >= BD.NZ_MINB or ( not bConvex and abs( vtN[2]:getY()) < 0.174)) + if not bDownHead and not bFaceOk[1] and not bFaceOk[2] then + local sErr = 'Error : TwoFacesBySaw from bottom impossible' + EgtOutLog( sErr) + return false, sErr + end -- calcolo direzione di lavoro local vtRef = {} vtRef[1] = vtN[1] ^ vtTg diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index e1b29d3..460eb98 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -1,4 +1,4 @@ --- ProcessCut.lua by Egaltech s.r.l. 2022/02/11 +-- ProcessCut.lua by Egaltech s.r.l. 2022/06/28 -- Gestione calcolo singoli tagli di lama per Travi -- 2021/05/18 I due tagli con testa da sotto di un cubetto sono fatti di seguito. -- 2021/06/06 Correzioni per tagli con testa da sotto. @@ -9,7 +9,8 @@ -- 2022/02/02 Modifiche per tagli di coda spostati prima come lavorazione su pezzi a caduta. -- 2022/02/06 Correzioni per tagli di coda spostati prima. -- 2022/05/31 Alcune modifiche per utilizzare la ProcessCut.Make in ProcessSplit e ProcessHeadCut, per le sezioni alte e larghe. --- 2022/06/10 Aggiunto il parametro dOvmTail per gestire sovramateriali in coda diversi da OVM_MID (sezioni alte e larghe) +-- 2022/06/10 Aggiunto il parametro dOvmTail per gestire sovramateriali in coda diversi da OVM_MID (sezioni alte e larghe). +-- 2022/06/28 Modificata determinazione taglio bFromBottom in MakeFromTop. -- Tabella per definizione modulo local ProcessCut = {} @@ -234,7 +235,7 @@ local function MakeFromTop( sCutting, Proc, nPhase, nRawId, nPartId, dOvmHead, b local dNzLimDwnUp = BL.GetNzLimDownUp( b3Raw, vtN) local bDownCut = ( vtN:getZ() <= dNzLimDwnUp) if bFromBottom == nil then - bFromBottom = ( vtN:getZ() > 0.25 and b3Solid:getDimX() < BD.LEN_SHORT_PART and not Proc.AdvTail and vtN:getX() < 0) + bFromBottom = ( vtN:getZ() > 0.25 and b3Solid:getDimX() < BD.LEN_SHORT_PART and not Proc.AdvTail and vtN:getX() < 0 and abs( vtN:getY()) < 0.259) end -- verifico se da considerare taglio lungo ( non da sotto, inclinato non più di 30deg, largo come la trave e abbastanza lungo) local bLongCut = ( not bDownCut and vtN:getZ() > 0.865 and diff --git a/LuaLibs/ProcessLongDoubleCut.lua b/LuaLibs/ProcessLongDoubleCut.lua index da5aebc..2a0fa37 100644 --- a/LuaLibs/ProcessLongDoubleCut.lua +++ b/LuaLibs/ProcessLongDoubleCut.lua @@ -1,4 +1,4 @@ --- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2022/05/27 +-- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2022/06/29 -- Gestione calcolo doppio taglio longitudinale per Travi -- 2021/05/18 Possibile taglio con lama anche di fianco su macchina con testa da sotto. -- 2021/06/29 Corretta gestione caso equivalente a due smussi. @@ -8,6 +8,7 @@ -- 2022/02/15 Sistemati commenti. -- 2022/03/20 Tolta da scelta milling tipo Long2CutDown controllo max diametro fresa. -- 2022/05/27 Corretto ordine per casi sui lati. +-- 2022/06/29 Corretto calcolo lunghezza attacco/uscita perpendicolare per lavorazioni di fianco. -- Tabella per definizione modulo local ProcessLong2Cut = {} @@ -1525,14 +1526,11 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster -- local dNz = EgtIf( abs(vtN[vOrd[i]]:getY()) >= abs(vtN[vOrd[i]]:getZ()), vtN[vOrd[i]]:getY(), vtN[vOrd[i]]:getZ()) local dNz = EgtIf( abs(nSide) == 1, vtN[vOrd[i]]:getY(), vtN[vOrd[i]]:getZ()) local dNzMin = EgtIf( abs(vtN[vOrd[i]]:getY()) >= abs(vtN[vOrd[i]]:getZ()), vtN[vOrd[i]]:getY(), vtN[vOrd[i]]:getZ()) - local dLioPerp1, dLioPerp2 -- nel caso concavo, devo impostare la lunghezza di attacco ortogonale if not bConvex then - dLioPerp1 = EgtIf( i == 1, dFacElev1, dFacElev2) --- dLioPerp1 = vWidth[vOrd[i]] * EgtIf( abs(dNz) < GEO.EPS_SMALL, 1, sqrt( 1 - dNz * dNz) / abs( dNz)) + BD.COLL_SIC - dLioPerp2 = vWidth[ EgtIf( vOrd[i] == 1, 2,1)] + BD.COLL_SIC - EgtSetMachiningParam( MCH_MP.LIPERP, max( dLioPerp1, dLioPerp2)) - EgtSetMachiningParam( MCH_MP.LOPERP, max( dLioPerp1, dLioPerp2)) + local dLioPerp = EgtIf( i == 1, dFacElev1, dFacElev2) + BD.COLL_SIC + EgtSetMachiningParam( MCH_MP.LIPERP, dLioPerp) + EgtSetMachiningParam( MCH_MP.LOPERP, dLioPerp) end -- verifico massimo affondamento (tengo conto dell'inclinazione utensile e della pinza con estremità conica) -- 08/09/2020 tolti i 3mm ( per la ghiera smussata) perchè nella verifica collisione vine creato un cilindro non smussato che rileva la collisione @@ -1562,20 +1560,9 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster end -- eseguo if not ML.ApplyMachining( true, false) then - -- se feature orientata su faccia da sotto e concave provo a cambiare l'attacco - if nSide == -1 and not bConvex then - EgtSetMachiningParam( MCH_MP.LIPERP, dLioPerp1) - EgtSetMachiningParam( MCH_MP.LOPERP, dLioPerp1) - if not ML.ApplyMachining( true, false) then - local _, sErr = EgtGetLastMachMgrError() - EgtSetOperationMode( nMchFId, false) - return false, sErr - end - else - local _, sErr = EgtGetLastMachMgrError() - EgtSetOperationMode( nMchFId, false) - return false, sErr - end + local _, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nMchFId, false) + return false, sErr end -- se facce principali convesse, eventuale lavorazione della faccia limitante l'inizio (a destra) if bConvex and j == 1 and not bStartFixed and bRemoveToolRadius then