From 1c0e6744e551fe25eeef6779f5d94bd2572a2902 Mon Sep 17 00:00:00 2001 From: DarioS Date: Tue, 12 Apr 2022 10:38:08 +0200 Subject: [PATCH 1/2] DataBeam : - a FacesBySaw.MakeTwo aggiunta gestione speciale cubetti con fresa da sotto. --- LuaLibs/FacesBySaw.lua | 112 +++++++++++++++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 21 deletions(-) diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index bfff9a6..0417cb9 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -1,4 +1,4 @@ --- FacesBySaw.lua by Egaltech s.r.l. 2021/11/26 +-- FacesBySaw.lua by Egaltech s.r.l. 2022/04/12 -- 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. @@ -10,6 +10,7 @@ -- 2021/08/03 In MakeOneFaceBySaw mgliorata gestione tagli con normale verso il basso e da sopra. -- 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. -- Tabella per definizione modulo local FacesBySaw = {} @@ -39,6 +40,8 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw nOrthoOpposite = Par5 vtOrthO = BL.GetVersRef( Par5) end + -- verifico se testa da sotto + local bDownHead = ( dVzLimDwnUp and dVzLimDwnUp < - 1.5) -- linea o bilinea di lavorazione (qui uso nOrthoOpposite per ripetere esattamente il calcolo del Mach) local ptP1, ptPm, ptP2, vtV1, vtV2, dLen, dWidth = EgtSurfTmFacetOppositeSide( nSurfId, nFacet, BL.GetVersRef( nOrthoOpposite), GDB_ID.ROOT) if not dLen or dLen < 1.1 or not dWidth or dWidth < 1.1 then @@ -128,7 +131,9 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw -- scelgo l'attacco più conveniente (se non taglio praticamente longitudinale) local Ktp = 1.1 if BD.KIOTP then Ktp = BD.KIOTP end - if ( not bDownUp or abs( vtTg:getY()) > 0.5) and abs( vtTg:getX()) < 0.9848 and + if ( not bDownUp or abs( vtTg:getY()) > 0.5) and + ( not bDownHead or abs( vtTg:getZ()) < 0.51) and + abs( vtTg:getX()) < 0.9848 and ( ( abs( vtTg:getZ()) < 0.17 and ( vtV1:getZ() < -0.5 or vtV2:getZ() < -0.5)) or ( abs( vtTg:getZ()) < 0.51 and b3Box:getDimZ() > 300 and BD.C_SIMM and BD.MAX_HEIGHT > 450) or ( Ktp * dLenLi2 < dLenLi and Ktp * dLenLo2 < dLenLo) or Ktp * ( dLenLi2 + dLenLo2) < ( dLenLi + dLenLo)) then @@ -144,12 +149,6 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw nSCC = EgtIf( ( vtAux:getY() > -GEO.EPS_SMALL), MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM) end --end - -- per macchine PF se possibile preferisco tenere la testa più davanti - --if BD.C_SIMM and abs( vtTg:getZ()) < 0.01 and abs( vtTg:getX()) < 0.5 then - -- if nSCC == MCH_SCC.ADIR_YP then - -- nSCC = MCH_SCC.ADIR_YM - -- end - --end -- inserisco la lavorazione di taglio local sName = 'Cut_' .. ( EgtGetName( nSurfId) or tostring( nSurfId)) .. '_' .. tostring( nFacet + 1) local nMchFId = EgtAddMachining( sName, sCutting) @@ -301,20 +300,91 @@ function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, sCutType, EgtSetInfo( vCuts[i][j], 'TASKID', Proc.TaskId) end end - -- eseguo - for i = 1, #vCuts do - -- assegno il modo di tagliare - local vtOrthO = EgtIf( ( i % 2) == 1, vtRef[nOtInd], vtRef[nUpInd]) - -- lavoro la faccia - for j = 1, #vCuts[i] do - -- se FAST, pezzo alto e ultimo taglio verticale -> allungo uscita per consentire eventuale rotazione B sul posto - local dAccEnd = 0 - if not BD.C_SIMM and BD.MAX_HEIGHT_ROT_B_ABOVE and b3Raw:getDimZ() > BD.MAX_HEIGHT_ROT_B_ABOVE and vtOrthO:getZ() > 0.866 and j == #vCuts[i] then - dAccEnd = - ( dSawDiam / 2 + BD.CUT_SIC) + -- con testa da sopra + if not bDownHead then + -- eseguo + for i = 1, #vCuts do + -- assegno il modo di tagliare + local vtOrthO = EgtIf( ( i % 2) == 1, vtRef[nOtInd], vtRef[nUpInd]) + -- lavoro la faccia + for j = 1, #vCuts[i] do + -- se FAST, pezzo alto e ultimo taglio verticale -> allungo uscita per consentire eventuale rotazione B sul posto + local dAccEnd = 0 + if not BD.C_SIMM and BD.MAX_HEIGHT_ROT_B_ABOVE and b3Raw:getDimZ() > BD.MAX_HEIGHT_ROT_B_ABOVE and vtOrthO:getZ() > 0.866 and j == #vCuts[i] then + dAccEnd = - ( dSawDiam / 2 + BD.CUT_SIC) + end + local bOk, sErr = FacesBySaw.MakeOne( vCuts[i][j], 0, sCutting, dSawDiam, vtOrthO, dNzLimDwnUp, dCutExtra, BD.CUT_SIC, 0, 0, dAccEnd, nil, b3Raw) + if not bOk then + return bOk, sErr + end end - local bOk, sErr = FacesBySaw.MakeOne( vCuts[i][j], 0, sCutting, dSawDiam, vtOrthO, dNzLimDwnUp, dCutExtra, BD.CUT_SIC, 0, 0, dAccEnd, nil, b3Raw) - if not bOk then - return bOk, sErr + end + -- altrimenti con testa da sotto + else + -- eseguo (facendo di seguito i due tagli di ogni singolo cubetto) + for i = 1, #vCuts, 2 do + -- determino il modo di tagliare dei perpendicolari + local vtOrthoO_1 = Vector3d( vtN[nUpInd]) + -- determino il modo di tagliare dei paralleli + local vtOrthoO_2 + local bNoPerpCuts_2 = false + local vtO + if #vCuts[i] > 0 then + vtO = EgtSurfTmFacetNormVersor( vCuts[i][1], 0, GDB_ID.ROOT) + elseif vCuts[i+2] and #vCuts[i+2] > 0 then + -- lunghezza faccia nell'eventuale direzione ortogonale + local asseX = EgtSurfTmFacetNormVersor( vCuts[i+2][1], 0, GDB_ID.ROOT) + local asseY = asseX ^ vtN[nUpInd] + local Frame = Frame3d( ptC, ptC + asseX, ptC + asseY) + local b3Fac = EgtGetBBoxRef( vCuts[i+1][1], GDB_BB.STANDARD, Frame) + -- se lunghezza inferiore al limite, accetto la direzione + if b3Fac:getDimX() < dMaxDepth - BD.CUT_EXTRA then + vtO = asseX + else + bNoPerpCuts_2 = true + end + else + bNoPerpCuts_2 = true + end + if vtO then + vtOrthoO_2 = Vector3d( vtO) + else + if bHorizCut then + vtOrthoO_2 = -Z_AX() + elseif vtN:getY() > -0.02 then + if not Proc.Head then + vtOrthoO_2 = -Y_AX() + else + vtOrthoO_2 = Y_AX() + end + else + vtOrthoO_2 = -Y_AX() + end + end + -- lavoro le coppie di facce del singolo cubetto + for j = 1, max( #vCuts[i], #vCuts[i+1]) do + -- extra taglio per perpendicolari + local dExtraCut_1 = -0.1 + -- extra taglio per paralleli + local dExtraCut_2 = -0.1 + -- se non ci sono tagli ortogonali devo affondare + if bNoPerpCuts_2 then + dExtraCut_2 = BD.CUT_EXTRA + end + -- taglio perpendicolare (limite Vz Down Up messo a -2 per non farlo mai intervenire) + if vCuts[i][j] then + local bOk, sErr = FacesBySaw.MakeOne( vCuts[i][j], 0, sCutting, dSawDiam, vtOrthoO_1, -2, dExtraCut_1, BD.CUT_SIC, 0, 0, 0, nil, b3Raw) + if not bOk then + return bOk, sErr + end + end + -- taglio parallelo (limite Vz Down Up messo a -2 per non farlo mai intervenire) + if vCuts[i+1][j] then + local bOk, sErr = FacesBySaw.MakeOne( vCuts[i+1][j], 0, sCutting, dSawDiam, vtOrthoO_2, -2, dExtraCut_2, BD.CUT_SIC, 0, 0, 0, nil, b3Raw) + if not bOk then + return bOk, sErr + end + end end end end From 74281250216cb6c1feb6fd4ce88dd775d2a023a2 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 12 Apr 2022 11:26:40 +0200 Subject: [PATCH 2/2] fix deploy da main/master --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a98070f..ab52ea9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -97,7 +97,7 @@ stages: LuaCompile:build: stage: build - except: + only: - main - master tags: