diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index ccbc707..f77c736 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1,4 +1,4 @@ --- BeamExec.lua by Egaltech s.r.l. 2019/10/22 +-- BeamExec.lua by Egaltech s.r.l. 2019/11/04 -- Libreria esecuzione lavorazioni per Travi -- 2019/07/11 Aggiunta gestione stato rotazione di feature per TS3. -- 2019/09/04 Corretto controllo feature di testa e coda con sovramateriale di testa elevato. @@ -291,44 +291,48 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH) Proc.Grp = nGrp Proc.Prc = nPrc Proc.Flg = 1 - Proc.Box = EgtGetBBoxGlob( ProcId, GDB_BB.STANDARD) Proc.Fct = EgtSurfTmFacetCount( ProcId) or 0 - Proc.Head = IsHeadFeature( Proc, b3Raw, dCurrOvmH) - Proc.Tail = IsTailFeature( Proc, b3Raw, dCurrOvmH) Proc.Diam = 0 Proc.Fcs = 0 Proc.Fce = 0 Proc.CutId = nCutId Proc.TaskId = nTaskId - table.insert( vProc, Proc) - -- se foro - if Drill.Identify( Proc) then - -- assegno diametro - Proc.Diam = EgtGetInfo( Proc.Id, 'P12', 'd') or 0 - -- assegno faccia di entrata e uscita (dati tabelle sempre per riferimento) - Proc.Fcs = EgtGetInfo( Proc.Id, 'FCS', 'i') or 0 - Proc.Fce = EgtGetInfo( Proc.Id, 'FCE', 'i') or 0 - -- verifico se necessaria seconda lavorazione da parte opposta per foro più lungo della punta - if Drill.Split( Proc, b3Raw) then - -- aggiorno flag prima parte foro (dati tabelle sempre per riferimento) - Proc.Flg = 2 - -- definisco dati seconda parte - local Proc2 = {} - Proc2.Id = ProcId - Proc2.Grp = nGrp - Proc2.Prc = nPrc - Proc2.Flg = -2 - Proc2.Box = BBox3d( Proc.Box) - Proc2.Fct = Proc.Fct - Proc2.Diam = Proc.Diam - Proc2.Head = Proc.Head - Proc2.Tail = Drill.IsTailFeature( Proc2, b3Raw, dCurrOvmH) - Proc2.Fcs = Proc.Fce - Proc2.Fce = Proc.Fcs - Proc2.CutId = Proc.CutId - Proc2.TaskId = Proc.TaskId - table.insert( vProc, Proc2) + Proc.Box = EgtGetBBoxGlob( ProcId, GDB_BB.STANDARD) + if Proc.Box and not Proc.Box:isEmpty() then + Proc.Head = Proc.Box and IsHeadFeature( Proc, b3Raw, dCurrOvmH) + Proc.Tail = Proc.Box and IsTailFeature( Proc, b3Raw, dCurrOvmH) + table.insert( vProc, Proc) + -- se foro + if Drill.Identify( Proc) then + -- assegno diametro + Proc.Diam = EgtGetInfo( Proc.Id, 'P12', 'd') or 0 + -- assegno faccia di entrata e uscita (dati tabelle sempre per riferimento) + Proc.Fcs = EgtGetInfo( Proc.Id, 'FCS', 'i') or 0 + Proc.Fce = EgtGetInfo( Proc.Id, 'FCE', 'i') or 0 + -- verifico se necessaria seconda lavorazione da parte opposta per foro più lungo della punta + if Drill.Split( Proc, b3Raw) then + -- aggiorno flag prima parte foro (dati tabelle sempre per riferimento) + Proc.Flg = 2 + -- definisco dati seconda parte + local Proc2 = {} + Proc2.Id = ProcId + Proc2.Grp = nGrp + Proc2.Prc = nPrc + Proc2.Flg = -2 + Proc2.Box = BBox3d( Proc.Box) + Proc2.Fct = Proc.Fct + Proc2.Diam = Proc.Diam + Proc2.Head = Proc.Head + Proc2.Tail = Drill.IsTailFeature( Proc2, b3Raw, dCurrOvmH) + Proc2.Fcs = Proc.Fce + Proc2.Fce = Proc.Fcs + Proc2.CutId = Proc.CutId + Proc2.TaskId = Proc.TaskId + table.insert( vProc, Proc2) + end end + else + EgtOutLog( ' Feature ' .. tostring( Proc.Id) .. ' is empty (no geometry)') end end end diff --git a/LuaLibs/ProcessMark.lua b/LuaLibs/ProcessMark.lua index b16dcb1..11e3789 100644 --- a/LuaLibs/ProcessMark.lua +++ b/LuaLibs/ProcessMark.lua @@ -1,4 +1,4 @@ --- ProcessMark.lua by Egaltech s.r.l. 2018/04/18 +-- ProcessMark.lua by Egaltech s.r.l. 2019/11/04 -- Gestione calcolo marcatura per Travi -- Tabella per definizione modulo @@ -69,9 +69,7 @@ function ProcessMark.Make( Proc, nPhase, nRawId, nPartId) return false, sErr end -- aggiungo geometria - local vGeom = {{ Proc.Id, -1}} - if AuxId then vGeom[2] = { AuxId, -1} end - EgtSetMachiningGeometry( vGeom) + EgtSetMachiningGeometry( {{ Proc.Id, -1}}) -- imposto posizione braccio porta testa if vtExtr:getY() <= 0 then EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.ADIR_YM) @@ -84,6 +82,37 @@ function ProcessMark.Make( Proc, nPhase, nRawId, nPartId) EgtSetOperationMode( nMchFId, false) return false, sErr end + -- eventuale lavorazione su seconda geometria + if AuxId then + -- inserisco la lavorazione di fresatura + local sName2 = 'Decor2_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local nMchF2Id = EgtAddMachining( sName, sMilling) + if not nMchF2Id then + local sErr = 'Error adding machining ' .. sName2 .. '-' .. sMilling + EgtOutLog( sErr) + return false, sErr + end + -- aggiungo geometria + EgtSetMachiningGeometry( {{ AuxId, -1}}) + -- imposto posizione braccio porta testa + if vtExtr:getY() <= 0 then + EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.ADIR_YM) + else + EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.ADIR_YP) + end + -- eseguo + if not EgtApplyMachining( true, false) then + local _, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nMchF2Id, false) + return false, sErr + end + -- se geometria a X maggiore, la sposto prima + local ptS1 = EgtSP( Proc.Id, GDB_ID.ROOT) + local ptS2 = EgtSP( AuxId, GDB_ID.ROOT) + if ptS2:getX() > ptS1:getX() then + EgtRelocateGlob( nMchF2Id, nMchFId, GDB_IN.BEFORE) + end + end return true end