From 51261d12319d630c2c6d5966c93a0de9977c3c3c Mon Sep 17 00:00:00 2001 From: DarioS Date: Thu, 11 May 2023 17:23:08 +0200 Subject: [PATCH] DataBeam : - per le lavorazioni in doppio e precedenti no oppure di tipo diverso, forzo risalita a Zmax (per evitare possibili collisioni nel riposizionamento diretto della seconda testa). --- LuaLibs/BeamExec.lua | 12 ++++++++++++ LuaLibs/ProcessDrill.lua | 6 +++++- LuaLibs/ProcessDtMortise.lua | 15 +++++++++++++-- LuaLibs/ProcessMortise.lua | 7 +++++-- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 728fdd3..68b8251 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1845,11 +1845,15 @@ function BeamExec.ProcessFeatures() nRId = EgtGetNextRawPart( nRId) end EgtSetInfo( nDispId, 'ROT', -2) + -- flag feature precedente in doppio + local nPrevDouble = 0 -- inserisco le lavorazioni da lavorare ribaltate for i = 1, #vProc do -- creo la lavorazione local Proc = vProc[i] if Proc.Flg ~= 0 and Proc.Down then + Proc.PrevDouble = nPrevDouble + nPrevDouble = Proc.Double local bOk, sMsg, nNewPhase = AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, bNeedHCut, b3Raw, nOrd, sDownOrSideOrStd, nil, nil, dCurrOvmT) if not bOk then nTotErr = nTotErr + 1 @@ -1917,12 +1921,16 @@ function BeamExec.ProcessFeatures() nRId = EgtGetNextRawPart( nRId) end EgtSetInfo( nDispId, 'ROT', -1) + -- flag feature precedente in doppio + local nPrevDouble = 0 -- inserisco le lavorazioni da lavorare ruotate local nSideMchOk = 0 for i = 1, #vProc do -- creo la lavorazione local Proc = vProc[i] if Proc.Flg ~= 0 and Proc.Side then + Proc.PrevDouble = nPrevDouble + nPrevDouble = Proc.Double local bOk, sMsg, nNewPhase = AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, false, b3Raw, nOrd, sDownOrSideOrStd, bPreMove, vtMove, dCurrOvmT) if not bOk then nTotErr = nTotErr + 1 @@ -1979,11 +1987,15 @@ function BeamExec.ProcessFeatures() EgtSetInfo( nDispId, 'ORD', nOrd) end sDownOrSideOrStd = 'STD' + -- flag feature precedente in doppio + local nPrevDouble = 0 -- inserisco le lavorazioni non ribaltate della trave for i = 1, #vProc do -- creo la lavorazione local Proc = vProc[i] if Proc.Flg ~= 0 and ( not ( Proc.Down or Proc.Side) or BD.DOWN_HEAD or BD.TURN) then + Proc.PrevDouble = nPrevDouble + nPrevDouble = Proc.Double local bOk, sMsg, nNewPhase = AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, false, b3Raw, nOrd, sDownOrSideOrStd, nil, nil, dCurrOvmT) if not bOk then nTotErr = nTotErr + 1 diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index 22eadcc..0a45da4 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -1,4 +1,4 @@ --- ProcessDrill.lua by Egaltech s.r.l. 2022/11/30 +-- ProcessDrill.lua by Egaltech s.r.l. 2023/05/11 -- Gestione calcolo forature per Travi -- 2021/04/14 DS Corretta gestione Invert con testa da sotto. Migliorato calcolo ingombro portautensile. -- 2021/05/03 DS Su macchina con testa da sotto aggiunta possibilità di fare fori verticali metà sopra e l'altra sotto. @@ -16,6 +16,7 @@ -- 2022/10/25 Nella funzione Split aggiunto il controllo che le facce di ingresso e uscita siano differenti (potrebbe succedere per fori molto corti). Modifica importatore in futuro. -- 2022/11/23 Aggiunta la gestione dei fori con angolo < 30 gradi, per i quali si usa la testa della macchina per accorciare l'utile di lavoro. -- 2022/12/28 Implementata gestione forature in doppio +-- 2023/05/11 Se lavorazione in doppio e precedente no oppure di tipo diverso, forzo risalita a Zmax. -- Tabella per definizione modulo local ProcessDrill = {} @@ -494,6 +495,9 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) -- se lavorazione in doppio if Proc.Double and Proc.Double > 0 then sUserNotes = EgtSetValInNotes( sUserNotes, 'DOUBLE', Proc.Double) + if Proc.Double ~= Proc.PrevDouble then + sUserNotes = EgtSetValInNotes( sUserNotes, 'StartZmax', 2) + end end EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) -- eseguo diff --git a/LuaLibs/ProcessDtMortise.lua b/LuaLibs/ProcessDtMortise.lua index 1af80b6..870af05 100644 --- a/LuaLibs/ProcessDtMortise.lua +++ b/LuaLibs/ProcessDtMortise.lua @@ -1,4 +1,4 @@ --- ProcessDtMortise.lua by Egaltech s.r.l. 2023/03/28 +-- ProcessDtMortise.lua by Egaltech s.r.l. 2023/05/11 -- Gestione calcolo mortase a coda di rondine per Travi -- 2021/04/08 Aggiunto controllo massimo materiale lavorabile dalla fresa. -- 2021/04/08 Miglioria scelta lavorazione in presenza di testa da sotto. @@ -11,6 +11,7 @@ -- 2022/12/28 Aggiunta gestione lavorazione in doppio. -- 2023/03/06 Aggiunta forzatura ingresso fuori dal grezzo con pocket. -- 2023/03/28 Corretto calcolo larghezza mortasa quando più larga che lunga. +-- 2023/05/11 Se lavorazione in doppio e precedente no oppure di tipo diverso, forzo risalita a Zmax. -- Tabella per definizione modulo local ProcessDtMortise = {} @@ -289,7 +290,7 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtOutLog( sErr) return false, sErr end - -- se con tasca, la lavoro + -- se con tasca, la lavoro (mai in doppio) if bPocket then -- recupero il contorno della tasca (seconda curva ausiliaria) local sVal = EgtGetInfo( Proc.Id, 'AUXID') @@ -350,6 +351,8 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) nSCC = EgtIf( vtAx:getZ() > 0, MCH_SCC.ADIR_ZP, MCH_SCC.ADIR_ZM) end end + -- flag di mirror precedente aggiornabile localmente + local nMyPrevDouble = Proc.PrevDouble -- se parametro interno abilitato e il percorso non è chiuso, aggiungo percorso e lavorazione antischeggia if bMakeAntiSplitPath and not EgtCurveIsClosed( AuxId) then -- recupero gruppo per geometria addizionale @@ -431,6 +434,10 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- se lavorazione in doppio if Proc.Double and Proc.Double > 0 then sUserNotes = EgtSetValInNotes( sUserNotes, 'DOUBLE', Proc.Double) + if Proc.Double ~= nMyPrevDouble then + nMyPrevDouble = Proc.Double + sUserNotes = EgtSetValInNotes( sUserNotes, 'StartZmax', 2) + end end EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) -- eseguo @@ -516,6 +523,10 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- se lavorazione in doppio if Proc.Double and Proc.Double > 0 then sUserNotes = EgtSetValInNotes( sUserNotes, 'DOUBLE', Proc.Double) + if Proc.Double ~= nMyPrevDouble then + nMyPrevDouble = Proc.Double + sUserNotes = EgtSetValInNotes( sUserNotes, 'StartZmax', 2) + end end EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) -- eseguo diff --git a/LuaLibs/ProcessMortise.lua b/LuaLibs/ProcessMortise.lua index 584561e..52edc08 100644 --- a/LuaLibs/ProcessMortise.lua +++ b/LuaLibs/ProcessMortise.lua @@ -1,4 +1,4 @@ --- ProcessMortise.lua by Egaltech s.r.l. 2022/12/12 +-- ProcessMortise.lua by Egaltech s.r.l. 2023/05/11 -- Gestione calcolo mortase per Travi -- 2021/07/20 Aggiunta gestione rinvio angolare su FAST. -- 2021/12/01 Se frontale aggiungo taglio con Grp e Proc di vero taglio (per aggiornare ingombro di testa /coda). @@ -9,6 +9,7 @@ -- 2022/12/12 Migliorato controllo necessità CleanCorners. -- 2023/01/31 Aggiunta gestione lavorazione in doppio. -- 2023/01/31 Creata la funzione ConvertToClosedCurve (parte della ProcessMortise.Make) e spostata in BeamLib. +-- 2023/05/11 Se lavorazione in doppio e precedente no oppure di tipo diverso, forzo risalita a Zmax. -- Tabella per definizione modulo local ProcessMortise = {} @@ -506,7 +507,9 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- se lavorazione in doppio if Proc.Double and Proc.Double > 0 then sUserNotes = EgtSetValInNotes( sUserNotes, 'DOUBLE', Proc.Double) - --sUserNotes = EgtSetValInNotes( sUserNotes, 'StartZmax', 2) + if Proc.Double ~= Proc.PrevDouble then + sUserNotes = EgtSetValInNotes( sUserNotes, 'StartZmax', 2) + end end EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) -- eseguo