diff --git a/LuaLibs/DiceCut.lua b/LuaLibs/DiceCut.lua index f1f9312..58946cc 100644 --- a/LuaLibs/DiceCut.lua +++ b/LuaLibs/DiceCut.lua @@ -1,4 +1,4 @@ --- DiceCut.lua by Egaltech s.r.l. 2021/09/10 +-- DiceCut.lua by Egaltech s.r.l. 2022/02/18 -- Gestione dei piano paralleli nei tagli lunghi: equidistanziamento dei piani paralleli -- Tabella per definizione modulo @@ -474,7 +474,7 @@ function DiceCut.GetDice( nParent, BBoxRawPart, ptCPlanes, vtNPlanes, bGetOrtoPl if vtNInner:getZ() > -0.0175 or vtNInner:getZ() < dNzLimDwnUp or abs( vtNInner:getY()) > 0.8 then vtO:rotate( vtNInner, 90) -- se diretto troppo ortogonalmente all'asse trave e taglio non da sotto, lo ruoto ulteriormente - if abs( vtO:getY()) > 3 * abs( vtO:getX()) and vtNInner:getZ() > dNzLimDwnUp then + if ( abs( vtO:getY()) > 3 * abs( vtO:getX()) or BBoxRawPart:getDimZ() > 620) and vtNInner:getZ() > dNzLimDwnUp then vtO:rotate( vtNInner, 90) -- se faccia principale verso il basso (almeno -3deg), lo inverto per iniziare da sopra if vtNInner:getZ() < -0.05 then diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 67225b6..aa01042 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -3249,7 +3249,6 @@ local function MakePocket( Proc, nPartId, ptPs, tvtN, nFaceRef, sMchFind, nUseRo end local dCollSic = 2 * BD.COLL_SIC -- calcolo il diametro utensile - local dDiamTool local dFaceDiamTool if tDimAndRef then -- prendo il valore dalle dimensioni minime delle facce @@ -3272,14 +3271,16 @@ local function MakePocket( Proc, nPartId, ptPs, tvtN, nFaceRef, sMchFind, nUseRo EgtOutLog( sErr) return false, sErr end - dDiamTool = 20 - local dMaxDepth = 0 local sTuuidPk + local dDiamTool = 20 + local dMaxDepth = 0 + local bTipMill = false if EgtMdbSetCurrMachining( sPocketing) then sTuuidPk = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuidPk) or '') then - dMaxDepth = ( EgtTdbGetCurrToolMaxDepth() or dMaxDepth) - dDiamTool = EgtTdbGetCurrToolParam( MCH_TP.DIAM) + dDiamTool = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dDiamTool + dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth + bTipMill = (( EgtTdbGetCurrToolParam( MCH_TP.TIPFEED) or 0) > 1) end end -- se nome svuotatura non è stato ricalcolato, confronto il diametro utensile utilizzato con il minimo faccia e se non sono compatibili esco @@ -3321,9 +3322,11 @@ local function MakePocket( Proc, nPartId, ptPs, tvtN, nFaceRef, sMchFind, nUseRo if bL and min( dH, dV) < 1.5 * dDiamTool then EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.ZIGZAG) EgtSetMachiningParam( MCH_MP.INVERT, false) - EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_POCK_LI.HELIX) - EgtSetMachiningParam( MCH_MP.LITANG, dDiamTool) - EgtSetMachiningParam( MCH_MP.LIELEV, 2) + if not bTipMill then + EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_POCK_LI.HELIX) + EgtSetMachiningParam( MCH_MP.LITANG, dDiamTool) + EgtSetMachiningParam( MCH_MP.LIELEV, 2) + end end end -- se elevazione superiore a massimo affondamento della fresa, riduco opportunamente diff --git a/LuaLibs/ProcessLongDoubleCut.lua b/LuaLibs/ProcessLongDoubleCut.lua index 80202c3..a87a826 100644 --- a/LuaLibs/ProcessLongDoubleCut.lua +++ b/LuaLibs/ProcessLongDoubleCut.lua @@ -1,10 +1,11 @@ --- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2022/02/08 +-- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2022/02/15 -- 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. -- 2021/10/29 Aggiunta opzione tipo lavorazione 'LongCut'. -- 2021/11/08 Se con lama e flag BD.USE_LONGCUT si lavora in direzione contraria allo standard. -- 2022/02/08 Sistemate lunghezze fresature quando due sole. +-- 2022/02/15 Sistemati commenti. -- Tabella per definizione modulo local ProcessLong2Cut = {} @@ -1123,7 +1124,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster end end end - -- altrimenti è sotto : lavorazione Long2CutDown + -- altrimenti lavorazione di fianco : Long2CutSide o Long2CutDown else -- da Analisi con Fabio Squaratti 15/09/2020 -- variabile che indica se ripassare sul raggio rimasto dalla lavorazione di fianco @@ -1152,7 +1153,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster end -- lavorazione da sotto else - sMilling = ML.FindMilling( 'Long2CutDown', nil, nil, EgtIf( nUseMillOnSide > 0, 150, 50)) + sMilling = ML.FindMilling( 'Long2CutDown', nil, nil, EgtIf( nUseMillOnSide > 0, nil, 50)) sPrefix = 'L2CD_' nExtendMach = 1 if nUseMillOnSide ~= 1 then @@ -1437,64 +1438,43 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster EgtSetMachiningParam( MCH_MP.SCC, nSCC) -- se fresa di fianco e non da sotto if nUseMillOnSide > 0 and nSide ~= -1 then - -- se faccia da sopra o di fianco - if nSide >= 0 then - if bConvex then - local vFaceUse2 - -- se da sopra - if nSide == 1 then - if vtN[vOrd[i]]:getZ() > 0.866 then - vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 1, 2)], vtN[EgtIf(vOrd[i] == 1, 2, 1)]) - EgtSetMachiningParam( MCH_MP.FACEUSE, vFaceUse2) --- EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_TOP) - EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) - EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) - else - EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN) - end - -- altrimenti è di fianco + if bConvex then + local vFaceUse2 + -- se da sopra + if nSide == 1 then + if vtN[vOrd[i]]:getZ() > 0.866 then + vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 1, 2)], vtN[EgtIf(vOrd[i] == 1, 2, 1)]) + EgtSetMachiningParam( MCH_MP.FACEUSE, vFaceUse2) +-- EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_TOP) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) else - if vtN[vOrd[i]]:getY() > 0.866 then - EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_TOP) - EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) - EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) - else - EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN) - end + EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN) end - -- se concavo + -- altrimenti è di fianco else - local vFaceUse2 - -- se da sopra - if nSide == 1 then --- vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 2, 1)]) - vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 2, 1)], vtN[EgtIf(vOrd[i] == 1, 1, 2)]) - -- altrimenti è di fianco + if vtN[vOrd[i]]:getY() > 0.866 then + EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_TOP) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) else - vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 2, 1)]) + EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN) end - EgtSetMachiningParam( MCH_MP.FACEUSE, vFaceUse2) - EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) - EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) end - -- questa parte non viene mai eseguita - -- se faccia da sotto --- else --- if bConvex then --- EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN) --- if vtN[vOrd[i]]:getZ() >= 0 then --- EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) --- EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) --- end --- else --- -- lascio lo stesso le lavorazioni anche se viene intercettato l'errore --- local vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 2, 1)]) --- EgtSetMachiningParam( MCH_MP.FACEUSE, vFaceUse2) --- if vtN[vOrd[i]]:getZ() < 0 then --- EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) --- EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) --- end --- end + -- se concavo + else + local vFaceUse2 + -- se da sopra + if nSide == 1 then +-- vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 2, 1)]) + vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 2, 1)], vtN[EgtIf(vOrd[i] == 1, 1, 2)]) + -- altrimenti è di fianco + else + vFaceUse2 = BL.GetNearestParalOpposite( vtN[EgtIf(vOrd[i] == 1, 2, 1)]) + end + EgtSetMachiningParam( MCH_MP.FACEUSE, vFaceUse2) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, dEal) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, dSal) end else -- se con fresa di fianco