From 303a69cbb36106b9f65147cb9dac613b7caf6361 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 31 Jul 2023 18:20:39 +0200 Subject: [PATCH] DataBeam 2.5g3 : - in ProfConvex, ProfConcave e ProfHead corretto e semplificato ModifySideInvertLead per invert. --- LuaLibs/ProcessProfConcave.lua | 51 +++++++++++++--------------------- LuaLibs/ProcessProfConvex.lua | 49 ++++++++++++-------------------- LuaLibs/ProcessProfFront.lua | 6 ++-- LuaLibs/ProcessProfHead.lua | 47 ++++++++++++------------------- Version.lua | 4 +-- 5 files changed, 59 insertions(+), 98 deletions(-) diff --git a/LuaLibs/ProcessProfConcave.lua b/LuaLibs/ProcessProfConcave.lua index d7a6616..8de536a 100644 --- a/LuaLibs/ProcessProfConcave.lua +++ b/LuaLibs/ProcessProfConcave.lua @@ -1,4 +1,4 @@ --- ProcessProfConcave.lua by Egaltech s.r.l. 2023/05/25 +-- ProcessProfConcave.lua by Egaltech s.r.l. 2023/07/31 -- Gestione calcolo profilo concavo per Travi -- 2021/05/03 Aggiunta gestione smusso da sopra e sotto per macchina con testa da sotto. -- 2021/06/28 Per macchine con testa sotto, smussi di lato con questa testa se non c'è lav.ne da sopra. @@ -6,6 +6,7 @@ -- 2022/05/24 Aggiunta fresatura da sotto su macchine con testa da sotto. -- 2022/05/28 Aggiunto calcolo svuotatura da modulo di libreria. -- 2023/05/25 Sistemazione SCC per TURN. +-- 2023/07/31 Correzione e semplificazione di ModifySideInvertLead per invert. -- Tabella per definizione modulo local ProcessProfConcave = {} @@ -89,7 +90,7 @@ end --------------------------------------------------------------------- local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, - bFirstTrim, bLastTrim, bFlagInvert, dOffsetPar) + bFirstTrim, bLastTrim, dOffsetPar) -- confronto il punto iniziale e finale della lavorazione con il box della feature -- e se è vicino alla parte esterna della trave inverto la lavorazione @@ -97,6 +98,9 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, local ptEp = EgtGetMachiningEndPoint() local nMachMode = EgtGetMachiningParam( MCH_MP.STEPTYPE) if nMachMode == 1 and ptSP and ptEp then + -- recupero flag inversione direzione di lavorazione + local bInvertMode = EgtGetMachiningParam( MCH_MP.INVERT) + -- verifico se da aggiustare if abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptSP:getX()) < abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptEp:getX()) then -- ottengo il lato lavoro e lo inverto @@ -104,9 +108,14 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, if nSideWork > 0 then EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( nSideWork == MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT)) end - -- ottengo l'inversione e setto il contrario - local bInvertMode = EgtGetMachiningParam( MCH_MP.INVERT) - EgtSetMachiningParam( MCH_MP.INVERT, not bInvertMode) + -- imposto il contrario dell'inversione trovata + bInvertMode = not bInvertMode + EgtSetMachiningParam( MCH_MP.INVERT, bInvertMode) + end + -- se lavorazione invertita rispetto a geometria, scambio dati di inizio e fine + if bInvertMode then + dLenIni, dLenLst = dLenLst, dLenIni + bFirstTrim, bLastTrim = bLastTrim, bFirstTrim end -- modifico attacco e uscita if dLenIni and dLenLst then @@ -120,9 +129,6 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, if bLastTrim and dLenLst < dToolDiam / 2 + ( 20 * GEO.EPS_SMALL) then dEndAddLen = dToolDiam / 2 - dLenLst + dOffsetPar + 1 end - if bFlagInvert then - dStartAddLen, dEndAddLen = dEndAddLen, dStartAddLen - end EgtSetMachiningParam( MCH_MP.STARTADDLEN, dStartAddLen) EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEndAddLen) end @@ -247,8 +253,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- acquisisco informazioni sulle facce estreme local _, _, dLenIni = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFirstFacet, GDB_ID.ROOT) local _, _, dLenLst = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nLastFacet, GDB_ID.ROOT) - -- flag percorso invertito - local bFlagInvert = false -- verifico se in testa o coda local bHead = ( vtN:getX() > 0) EgtOutLog( 'vtN=' .. tostring( vtN), 3) @@ -344,7 +348,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() > 0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- altrimenti lavorazione dal davanti o dal dietro else @@ -353,14 +356,12 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) if vtExtr:getZ() < 0 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- se lavorazione a destra da dietro o sinistra di fronte, inverto if ( bHead and vtN:getY() > 0.1) or ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- assegno affondamento e offset radiale @@ -378,7 +379,7 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) else -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione - ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dExtra) + ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, dExtra) end -- se lavorazione da due parti, aggiungo la seconda if bDoubleCham then @@ -393,8 +394,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra o da sotto if nSide ~= 0 then -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -402,7 +401,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end else -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -410,7 +408,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- assegno affondamento e offset radiale @@ -428,7 +425,7 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) else -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione - ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dExtra) + ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, dExtra) end end end @@ -487,14 +484,11 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra e da sotto if ( nSide == 0) then if vtExtr:getZ() > 0.1 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = true end -- altrimenti lavorazione davanti e dietro else @@ -503,7 +497,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = true end end -- imposto l'affondamento @@ -534,7 +527,7 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco -- e uscita - ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dOffsetPar) + ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, dOffsetPar) end -- se abilitata, aggiungo lavorazione di finitura if bFinish then @@ -568,8 +561,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra o da sotto if nSide ~= 0 then if not bDouble and nSide == -1 then @@ -578,7 +569,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end else -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -586,7 +576,6 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() > 0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- altrimenti lavorazione dal davanti o dal dietro @@ -595,14 +584,12 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) if vtExtr:getZ() < 0 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- se lavorazione a destra da dietro o sinistra di fronte, inverto if ( bHead and vtN:getY() > 0.1) or ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- se in doppio, imposto l'affondamento @@ -631,7 +618,7 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco -- e uscita - ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dOffsetPar) + ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, dOffsetPar) end -- se abilitata, aggiungo lavorazione di finitura if bFinish then @@ -684,7 +671,7 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtSetMachiningParam( MCH_MP.STEP, 0) EgtSetMachiningParam( MCH_MP.OFFSR, 0) if BD.TURN then - local nSCC = GetSccForTurn( vtN) + local nSCC = GetSccForTurn( vtN, 'V') EgtSetMachiningParam( MCH_MP.SCC, nSCC) -- modifico attacco e uscita per forzare risalita EgtSetMachiningParam( MCH_MP.STARTADDLEN, dToolDiam / 2) diff --git a/LuaLibs/ProcessProfConvex.lua b/LuaLibs/ProcessProfConvex.lua index 2c7d072..9da2783 100644 --- a/LuaLibs/ProcessProfConvex.lua +++ b/LuaLibs/ProcessProfConvex.lua @@ -1,4 +1,4 @@ --- ProcessProfConvex.lua by Egaltech s.r.l. 2023/05/25 +-- ProcessProfConvex.lua by Egaltech s.r.l. 2023/07/31 -- Gestione calcolo profilo convesso per Travi -- 2021/05/03 Aggiunta gestione smusso da sopra e sotto per macchina con testa da sotto. -- 2021/06/28 Per macchine con testa sotto, smussi di lato con questa testa se non c'è lav.ne da sopra. @@ -6,6 +6,7 @@ -- 2022/05/24 Aggiunta fresatura da sotto su macchine con testa da sotto. -- 2022/05/28 Aggiunto calcolo svuotatura da modulo di libreria. -- 2023/05/25 Sistemazione SCC per TURN. +-- 2023/07/31 Correzione e semplificazione di ModifySideInvertLead per invert. -- Tabella per definizione modulo local ProcessProfConvex = {} @@ -89,7 +90,7 @@ end --------------------------------------------------------------------- local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, - bFirstTrim, bLastTrim, bFlagInvert, dOffsetPar) + bFirstTrim, bLastTrim, dOffsetPar) -- confronto il punto iniziale e finale della lavorazione con il box della feature -- e se è vicino alla parte esterna della trave inverto la lavorazione @@ -97,6 +98,9 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, local ptEp = EgtGetMachiningEndPoint() local nMachMode = EgtGetMachiningParam( MCH_MP.STEPTYPE) if nMachMode == 1 and ptSP and ptEp then + -- recupero flag inversione direzione di lavorazione + local bInvertMode = EgtGetMachiningParam( MCH_MP.INVERT) + -- verifico se da aggiustare if abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptSP:getX()) < abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptEp:getX()) then -- ottengo il lato lavoro e lo inverto @@ -104,9 +108,14 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, if nSideWork > 0 then EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( nSideWork == MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT)) end - -- ottengo l'inversione e setto il contrario - local bInvertMode = EgtGetMachiningParam( MCH_MP.INVERT) - EgtSetMachiningParam( MCH_MP.INVERT, not bInvertMode) + -- imposto il contrario dell'inversione trovata + bInvertMode = not bInvertMode + EgtSetMachiningParam( MCH_MP.INVERT, bInvertMode) + end + -- se lavorazione invertita rispetto a geometria, scambio dati di inizio e fine + if bInvertMode then + dLenIni, dLenLst = dLenLst, dLenIni + bFirstTrim, bLastTrim = bLastTrim, bFirstTrim end -- modifico attacco e uscita if dLenIni and dLenLst then @@ -120,9 +129,6 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, if bLastTrim and dLenLst < dToolDiam / 2 + ( 20 * GEO.EPS_SMALL) then dEndAddLen = dToolDiam / 2 - dLenLst + dOffsetPar + 1 end - if bFlagInvert then - dStartAddLen, dEndAddLen = dEndAddLen, dStartAddLen - end EgtSetMachiningParam( MCH_MP.STARTADDLEN, dStartAddLen) EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEndAddLen) end @@ -247,8 +253,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- acquisisco informazioni sulle facce estreme local _, _, dLenIni = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFirstFacet, GDB_ID.ROOT) local _, _, dLenLst = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nLastFacet, GDB_ID.ROOT) - -- flag percorso invertito - local bFlagInvert = false -- verifico se in testa o coda local bHead = ( vtN:getX() > 0) EgtOutLog( 'vtN=' .. tostring( vtN), 3) @@ -344,7 +348,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() > 0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- altrimenti lavorazione dal davanti o dal dietro else @@ -353,14 +356,12 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) if vtExtr:getZ() < 0 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- se lavorazione a destra da dietro o sinistra di fronte, inverto if ( bHead and vtN:getY() > 0.1) or ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- assegno affondamento e offset radiale @@ -378,7 +379,7 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) else -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione - ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dExtra) + ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, dExtra) end -- se lavorazione da due parti, aggiungo la seconda if bDoubleCham then @@ -393,8 +394,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra o da sotto if nSide ~= 0 then -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -402,7 +401,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end else -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -410,7 +408,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- assegno affondamento e offset radiale @@ -428,7 +425,7 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) else -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione - ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dExtra) + ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, dLenLst, bFirstTrim, bLastTrim, dExtra) end end end @@ -487,14 +484,11 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra e da sotto if ( nSide == 0) then if vtExtr:getZ() > 0.1 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = true end -- altrimenti lavorazione davanti e dietro else @@ -503,7 +497,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = true end end -- imposto l'affondamento @@ -534,7 +527,7 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco -- e uscita - ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dOffsetPar) + ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, dOffsetPar) end -- se abilitata, aggiungo lavorazione di finitura if bFinish then @@ -568,8 +561,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra o da sotto if nSide ~= 0 then if not bDouble and nSide == -1 then @@ -578,7 +569,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end else -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -586,7 +576,6 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() > 0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- altrimenti lavorazione dal davanti o dal dietro @@ -595,14 +584,12 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) if vtExtr:getZ() < 0 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- se lavorazione a destra da dietro o sinistra di fronte, inverto if ( bHead and vtN:getY() > 0.1) or ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- se in doppio, imposto l'affondamento @@ -631,7 +618,7 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco -- e uscita - ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, bFlagInvert, dOffsetPar) + ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, bFirstTrim, bLastTrim, dOffsetPar) end -- se abilitata, aggiungo lavorazione di finitura if bFinish then diff --git a/LuaLibs/ProcessProfFront.lua b/LuaLibs/ProcessProfFront.lua index e56f930..96a3023 100644 --- a/LuaLibs/ProcessProfFront.lua +++ b/LuaLibs/ProcessProfFront.lua @@ -465,8 +465,7 @@ function ProcessProfFront.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) return false, sErr else -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno - -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco - -- e uscita + -- della feature inverto il punto di inizio della lavorazione ModifySideInvertLead( Proc, bHead, dToolDiam) end -- se abilitata, aggiungo lavorazione di finitura @@ -554,8 +553,7 @@ function ProcessProfFront.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) return false, sErr else -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno - -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco - -- e uscita + -- della feature inverto il punto di inizio della lavorazione ModifySideInvertLead( Proc, bHead, dToolDiam) end -- se abilitata, aggiungo lavorazione di finitura diff --git a/LuaLibs/ProcessProfHead.lua b/LuaLibs/ProcessProfHead.lua index 9464fe6..79ffba0 100644 --- a/LuaLibs/ProcessProfHead.lua +++ b/LuaLibs/ProcessProfHead.lua @@ -1,4 +1,4 @@ --- ProcessProfHead.lua by Egaltech s.r.l. 2022/05/28 +-- ProcessProfHead.lua by Egaltech s.r.l. 2023/07/31 -- Gestione calcolo profilo di testa per Travi -- 2021/05/03 Aggiunta gestione smusso da sopra e sotto per macchina con testa sotto. -- 2021/06/28 Per macchine con testa sotto, smussi di lato con questa testa se non c'è lav.ne da sopra. @@ -6,6 +6,7 @@ -- 2022/02/02 Aggiunta funzione OnlyChamfer. -- 2022/05/24 Aggiunta fresatura da sotto su macchine con testa da sotto. -- 2022/05/28 Aggiunto calcolo svuotatura da modulo di libreria. +-- 2023/07/31 Correzione e semplificazione di ModifySideInvertLead per invert. -- Tabella per definizione modulo local ProcessProfHead = {} @@ -81,7 +82,7 @@ end --------------------------------------------------------------------- local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, - bFirstTrim, bLastTrim, bFlagInvert, dOffsetPar) + bFirstTrim, bLastTrim, dOffsetPar) -- confronto il punto iniziale e finale della lavorazione con il box della feature -- e se è vicino alla parte esterna della trave inverto la lavorazione @@ -89,6 +90,9 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, local ptEp = EgtGetMachiningEndPoint() local nMachMode = EgtGetMachiningParam( MCH_MP.STEPTYPE) if nMachMode == 1 and ptSP and ptEp then + -- recupero flag inversione direzione di lavorazione + local bInvertMode = EgtGetMachiningParam( MCH_MP.INVERT) + -- verifico se da aggiustare if abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptSP:getX()) < abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptEp:getX()) then -- ottengo il lato lavoro e lo inverto @@ -96,9 +100,14 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, if nSideWork > 0 then EgtSetMachiningParam( MCH_MP.WORKSIDE, EgtIf( nSideWork == MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT)) end - -- ottengo l'inversione e setto il contrario - local bInvertMode = EgtGetMachiningParam( MCH_MP.INVERT) - EgtSetMachiningParam( MCH_MP.INVERT, not bInvertMode) + -- imposto il contrario dell'inversione trovata + bInvertMode = not bInvertMode + EgtSetMachiningParam( MCH_MP.INVERT, bInvertMode) + end + -- se lavorazione invertita rispetto a geometria, scambio dati di inizio e fine + if bInvertMode then + dLenIni, dLenLst = dLenLst, dLenIni + bFirstTrim, bLastTrim = bLastTrim, bFirstTrim end -- modifico attacco e uscita if dLenIni and dLenLst then @@ -112,9 +121,6 @@ local function ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, dLenLst, if bLastTrim and dLenLst < dToolDiam / 2 + ( 20 * GEO.EPS_SMALL) then dEndAddLen = dToolDiam / 2 - dLenLst + dOffsetPar + 1 end - if bFlagInvert then - dStartAddLen, dEndAddLen = dEndAddLen, dStartAddLen - end EgtSetMachiningParam( MCH_MP.STARTADDLEN, dStartAddLen) EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEndAddLen) end @@ -224,8 +230,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- acquisisco informazioni sulle facce estreme local _, _, dLenIni = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFirstFacet, GDB_ID.ROOT) local _, _, dLenLst = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nLastFacet, GDB_ID.ROOT) - -- flag percorso invertito - local bFlagInvert = false -- verifico se in testa o coda local bHead = ( vtN:getX() > 0) EgtOutLog( 'vtN=' .. tostring( vtN), 3) @@ -326,7 +330,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() > 0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- altrimenti lavorazione dal davanti o dal dietro else @@ -335,14 +338,12 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) if vtExtr:getZ() < 0 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- se lavorazione a destra da dietro o sinistra di fronte, inverto if ( bHead and vtN:getY() > 0.1) or ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- assegno affondamento e offset radiale @@ -361,7 +362,7 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, - dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), bFlagInvert, dExtra) + dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), dExtra) end -- se lavorazione da due parti, aggiungo la seconda if bDoubleCham then @@ -376,8 +377,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra o da sotto if nSide ~= 0 then -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -385,7 +384,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- altrimenti lavorazione dal davanti o dal dietro else @@ -394,7 +392,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- assegno affondamento e offset radiale @@ -413,7 +410,7 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- applico controllo del punto entrata lavorazione e se non è distante dall'esterno -- della feature inverto il punto di inizio della lavorazione ModifySideInvertLead( Proc, bHead, dToolDiam + ( 2 * dExtra), dLenIni, - dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), bFlagInvert, dExtra) + dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), dExtra) end end end @@ -473,8 +470,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra e da sotto if ( nSide == 0) then if vtExtr:getZ() > 0.1 then @@ -517,7 +512,7 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco -- e uscita ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, - dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), bFlagInvert, dOffsetPar) + dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), dOffsetPar) end -- se abilitata, aggiungo lavorazione di finitura if bFinish then @@ -551,8 +546,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- resetto il flag inversione percorso - bFlagInvert = false -- se lavorazione da sopra o da sotto if nSide ~= 0 then if not bDouble and nSide == -1 then @@ -561,7 +554,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end else -- se lavorazione a destra di fronte o sinistra da dietro, inverto @@ -569,7 +561,6 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) ( not bHead and vtExtr:getY() > 0.1) then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- altrimenti lavorazione dal davanti o dal dietro @@ -578,14 +569,12 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) if vtExtr:getZ() < 0 then EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end -- se lavorazione a destra da dietro o sinistra di fronte, inverto if ( bHead and vtN:getY() > 0.1) or ( not bHead and vtN:getY() < -0.1) then EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) EgtSetMachiningParam( MCH_MP.INVERT, true) - bFlagInvert = not bFlagInvert end end -- se in doppio, imposto l'affondamento @@ -613,7 +602,7 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- della feature inverto il punto di inizio della lavorazione e modifico i parametri dell'attacco -- e uscita ModifySideInvertLead( Proc, bHead, dToolDiam, dLenIni, - dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), bFlagInvert, dOffsetPar) + dLenLst, ( #vAngs > 0 and vAngs[1] == 0), ( #vAngs > 0 and vAngs[#vAngs] == (Proc.Fct-2)), dOffsetPar) end -- se abilitata, aggiungo lavorazione di finitura if bFinish then diff --git a/Version.lua b/Version.lua index 62b7ad8..260c3c8 100644 --- a/Version.lua +++ b/Version.lua @@ -1,6 +1,6 @@ --- Version.lua by Egaltech s.r.l. 2023/07/19 +-- Version.lua by Egaltech s.r.l. 2023/07/31 -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.5g2' +VERSION = '2.5g3' MIN_EXE = '2.5c1'