diff --git a/LuaLibs/FaceByPocket.lua b/LuaLibs/FaceByPocket.lua index 4d8bdcb..f4f389a 100644 --- a/LuaLibs/FaceByPocket.lua +++ b/LuaLibs/FaceByPocket.lua @@ -1,4 +1,4 @@ --- FaceByPocket.lua by Egaltech s.r.l. 2022/05/82 +-- FaceByPocket.lua by Egaltech s.r.l. 2023/04/04 -- Gestione svuotatura di feature con una faccia -- Tabella per definizione modulo @@ -15,7 +15,7 @@ local BD = require( 'BeamData') local ML = require( 'MachiningLib') --------------------------------------------------------------------- -local function ApplyPocket( Proc, nSurfId, nFacet, sPocketing, nInd, dMaxElev, vtN) +local function ApplyPocket( Proc, nSurfId, nFacet, sPocketing, nInd, dMaxElev, vtN, dOpenMinSafe) -- inserisco la lavorazione di svuotatura local sName = 'Pock_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) .. '_' .. nInd @@ -28,11 +28,17 @@ local function ApplyPocket( Proc, nSurfId, nFacet, sPocketing, nInd, dMaxElev, v EgtSetMachiningGeometry( {{ nSurfId, nFacet}}) -- imposto uso faccia EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_CONT) + -- imposto note utente + local sNotes = '' + -- eventuale massima elevazione if dMaxElev > 0.1 then - -- imposto elevazione - local sNotes = 'MaxElev=' .. EgtNumToString( dMaxElev, 2) .. ';' - EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes) + sNotes = EgtSetValInNotes( sNotes, 'MaxElev', EgtNumToString( dMaxElev, 2)) end + -- eventuale minima distanza di sicurezza di attacco su lati aperti + if dOpenMinSafe then + sNotes = EgtSetValInNotes( sNotes, 'OpenMinSafe', dOpenMinSafe) + end + EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes) -- imposto posizione braccio porta testa local nSCC = MCH_SCC.NONE if not BD.C_SIMM and not BD.TURN then @@ -50,7 +56,7 @@ local function ApplyPocket( Proc, nSurfId, nFacet, sPocketing, nInd, dMaxElev, v end --------------------------------------------------------------------- -function FaceByPocket.Make( Proc, nSurfId, nFacet, sPocketing, nPartId, b3Solid) +function FaceByPocket.Make( Proc, nSurfId, nFacet, sPocketing, nPartId, b3Solid, dOpenMinSafe) local bOk = true local sErr -- recupero gruppo per geometria addizionale @@ -84,14 +90,14 @@ function FaceByPocket.Make( Proc, nSurfId, nFacet, sPocketing, nPartId, b3Solid) EgtSetName( nAddIdTmp, 'AddCut_' .. tostring( Proc.Id)) EgtSetInfo( nAddIdTmp, 'TASKID', Proc.TaskId) -- aggiungo lavorazione - bOk, sErr = ApplyPocket( Proc, nAddIdTmp, 0, sPocketing, i, dSurfStep, vtN) + bOk, sErr = ApplyPocket( Proc, nAddIdTmp, 0, sPocketing, i, dSurfStep, vtN, dOpenMinSafe) if not bOk then return false, sErr end end end -- faccio ultima superfice - bOk, sErr = ApplyPocket( Proc, nSurfId, nFacet, sPocketing, 1, EgtIf( nSurfStep > 1, dSurfStep, 0), vtN) + bOk, sErr = ApplyPocket( Proc, nSurfId, nFacet, sPocketing, 1, EgtIf( nSurfStep > 1, dSurfStep, 0), vtN, dOpenMinSafe) if not bOk then return false, sErr end diff --git a/LuaLibs/ProcessSplit.lua b/LuaLibs/ProcessSplit.lua index a7354bd..a4d14bb 100644 --- a/LuaLibs/ProcessSplit.lua +++ b/LuaLibs/ProcessSplit.lua @@ -1,4 +1,4 @@ --- ProcessSplit.lua by Egaltech s.r.l. 2022/11/30 +-- ProcessSplit.lua by Egaltech s.r.l. 2023/04/04 -- Gestione calcolo tagli di separazione per Travi -- 2022/05/31 Aggiunta gestione sezioni alte e larghe con taglio con sega a catena seguito da rifinitura con lama (aggiunta funzione MakeSplitByChainSaw); gestione eventuale creazione nuova fase dall'interno della Make. -- 2022/06/10 Per sezioni alte e larghe aggiunta gestione finitura in base a sovramateriale e a parametro Q05 dell' eventuale lavorazione sostituita. @@ -8,6 +8,7 @@ -- 2022/11/10 Corrette finiture lama per BigSection con trave alta -- 2022/11/16 Correzioni per travi larghe -- 2022/11/30 Correzione per tagli su grandi sezioni (dopo taglio con sega a catena senza finitura aggiungeva uno split con lama). +-- 2023/04/04 Modifiche per travi con sezioni molto grandi e materiale inferiore allo spessore lama. -- Tabella per definizione modulo local ProcessSplit = {} @@ -396,18 +397,19 @@ function ProcessSplit.Make( Proc, nPhase, nRawId, nPartId, nOrd, sDownOrSideOrSt sNotesFinal = 'Cut;' end local nQ05 = EgtGetInfo( nOriId or GDB_ID.NULL, 'Q05', 'i') or 0 + -- determinazione materiale da asportare + local dSawThickCheck = dSawThick + if dSawThick2 > 0 and bDoubleHorizCut then + dSawThickCheck = min( dSawThick, dSawThick2) + end + local dMaxElev = 0 + if vtN:getX() > 0 then + dMaxElev = b3Raw:getMax():getX() - Proc.Box:getMin():getX() + else + dMaxElev = Proc.Box:getMax():getX() - b3Raw:getMin():getX() + end -- se finitura con lama - if nQ05 == 1 or nQ05 == 0 or not bSplit then - local dSawThickCheck = dSawThick - if dSawThick2 > 0 and bDoubleHorizCut then - dSawThickCheck = min( dSawThick, dSawThick2) - end - local dMaxElev = 0 - if vtN:getX() > 0 then - dMaxElev = b3Raw:getMax():getX() - Proc.Box:getMin():getX() - else - dMaxElev = Proc.Box:getMax():getX() - b3Raw:getMin():getX() - end + if nQ05 == 1 or nQ05 == 0 or ( not bSplit and dMaxElev > dSawThickCheck) then -- controllo se รจ necessario un taglio con dicing o si deve proseguire ai casi standard if bSplit or dMaxElev > dSawThickCheck then local bOk, sErr = Cut.Make( Proc, nNewPhase, nRawId, nPartId, dLenEndRaw, nil, false, true, b3Raw, sNotes, dCurrOvmT) @@ -424,15 +426,20 @@ function ProcessSplit.Make( Proc, nPhase, nRawId, nPartId, nOrd, sDownOrSideOrSt EgtOutLog( sErr) return false, sErr end - local sPocketing = ML.FindPocketing( 'OpenPocket', nil, 0) + local sPocketing, dTDiam = ML.FindPocketing( 'OpenPocket', nil, 0) if not sPocketing then local sErr = 'Error : pocketing not found in library' EgtOutLog( sErr) return false, sErr end - local bOk, sErr = Pocket.Make( Proc, Proc.Id, 0, sPocketing, nPartId, b3Solid) + local dOpenMinSafe + if BD.C_SIMM and b3Raw:getDimZ() > 600 then + dOpenMinSafe = 230 - dTDiam / 2 + end + local bOk, sErr = Pocket.Make( Proc, Proc.Id, 0, sPocketing, nPartId, b3Solid, dOpenMinSafe) if sNotesFinal then - EgtSetMachiningParam( MCH_MP.USERNOTES, sNotesFinal) + local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) .. sNotesFinal + EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes) end return bOk, sErr, nNewPhase end @@ -446,7 +453,12 @@ function ProcessSplit.Make( Proc, nPhase, nRawId, nPartId, nOrd, sDownOrSideOrSt local dCutExtra = 0 local dAccStart = 0 local dAccEnd = 0 - if b3Raw:getDimZ() < BD.MIN_DIM_HBEAM + 10 * GEO.EPS_SMALL or b3Raw:getDimY() < 2 * BD.MAX_DIM_HTCUT_HBEAM + 10 * GEO.EPS_SMALL then + if bBigSectionCut and BD.C_SIMM then + -- qui arrivano sezioni molto grandi su macchine tipo PF con materiale da asportare inferiore allo spessore lama + local dSawRad = dSawDiam / 2 + dCutExtra = - ( b3Raw:getDimY() - dSawRad) + dAccEnd = dSawRad + elseif b3Raw:getDimZ() < BD.MIN_DIM_HBEAM + 10 * GEO.EPS_SMALL or b3Raw:getDimY() < 2 * BD.MAX_DIM_HTCUT_HBEAM + 10 * GEO.EPS_SMALL then dCutExtra = EgtIf( bDoubleCut, - 0.5 * b3Raw:getDimY() + BD.CUT_EXTRA_MIN, BD.CUT_EXTRA) else dCutExtra = - ( b3Raw:getDimY() - dMaxDepth)