From 38ab9d4a40df9bade34129e0cb6c57b8b4897a4d Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Wed, 13 Mar 2024 12:30:00 +0100 Subject: [PATCH 01/10] Prima versione gestione Predrill --- LuaLibs/BeamExec.lua | 13 ++++++++++-- LuaLibs/MachiningLib.lua | 9 ++++++-- LuaLibs/ProcessDrill.lua | 46 +++++++++++++++++++++++++++++++++++----- 3 files changed, 59 insertions(+), 9 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 8676b0f..d12f226 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -60,6 +60,7 @@ -- 2024/03/04 Creata funzione calcolo dipendenze tra feature con calcolo topologia. -- 2024/03/07 Implementate le lavorazioni in doppio per fori specchiati non passanti e DrillPocket. -- 2024/03/11 In CollectFeatures si scrive ora Width e Height della faccia sia trimmate con il grezzo che intere. +-- 2024/03/13 In CollectFeatures si scrive lunghezza foro su Proc e si controla se serve Predrill -- Tabella per definizione modulo local BeamExec = {} @@ -376,7 +377,11 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) -- se foro if Drill.Identify( Proc) then -- assegno diametro e facce di ingresso e uscita (dati tabelle sempre per riferimento) - Proc.Diam, Proc.Fcs, Proc.Fce = Drill.GetData( Proc, b3Raw) + Proc.Diam, Proc.Len, Proc.Fcs, Proc.Fce = Drill.GetData( Proc, b3Raw) + -- verifico se devo inserire i prefori + if Drill.IsPredrillNeeded( Proc) then + Drill.AddPredrillFromDrillProc( Proc) + end -- verifico se necessaria seconda lavorazione da parte opposta per foro più lungo della punta if Drill.Split( Proc, b3Raw) then -- aggiorno flags prima parte foro (dati tabelle sempre per riferimento) @@ -393,6 +398,7 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) Proc2.Box = BBox3d( Proc.Box) Proc2.Fct = Proc.Fct Proc2.Diam = Proc.Diam + Proc2.Len = Proc.Len Proc2.Head = Drill.IsHeadFeature( Proc2, b3Raw, dCurrOvmH) Proc2.Tail = Drill.IsTailFeature( Proc2, b3Raw, dCurrOvmH) Proc2.Fcs = Proc.Fce @@ -401,7 +407,10 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) Proc2.TaskId = Proc.TaskId Proc2.AdjId = Proc.AdjId Proc2.MainId = Proc.MainId - table.insert( vProc, Proc2) + -- verifico se devo inserire i prefori + if Drill.IsPredrillNeeded( Proc2) then + Drill.AddPredrillFromDrillProc( Proc2) + end end -- se BlockHaus HalfLap elseif Proc.Prc == 37 then diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 89c9b1c..87e053f 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -13,6 +13,7 @@ -- 2024/01/23 Nella GetMachinings vengono ora raccolti i parametri utensile necessari per i VerifyTool, scritti direttamente nella tabella Machining.Tool. -- Le lavorazioni possono essere ora ordinate per dimensioni utensile (Longest, Shortest, Biggest, Smallest) se passato l'apposito parametro SortingCriterion in FindMachining. Al momento implementato solo per FindSawing. -- 2024/03/01 In VerifyPocketing implementato l'ordinamento per dimensioni utensile. +-- 2024/03/13 In FindDrilling se Predrill si cerca solo tra le svuotature -- Tabella per definizione modulo local MachiningLib = {} @@ -467,8 +468,12 @@ function MachiningLib.FindCutting( sType, bTopHead, bDownHead) end --------------------------------------------------------------------- -function MachiningLib.FindDrilling( dDiam, dDepth, bTopHead, bDownHead, bExcludeH2, bAngleTransmission) - local MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 = FindMachining( MCH_MY.DRILLING, EgtIf( bAngleTransmission, 'Drill_AT', 'Drill'), { Diam = dDiam, Depth = dDepth}, bTopHead, bDownHead, bExcludeH2) +function MachiningLib.FindDrilling( dDiam, dDepth, bTopHead, bDownHead, bExcludeH2, bAngleTransmission, bIsPredrill) + local MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 + -- se il foro è un predrill, non devo cercare tra le punte + if not bIsPredrill then + MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 = FindMachining( MCH_MY.DRILLING, EgtIf( bAngleTransmission, 'Drill_AT', 'Drill'), { Diam = dDiam, Depth = dDepth}, bTopHead, bDownHead, bExcludeH2) + end if ( not MachiningName or MachiningName == '') then MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 = FindMachining( MCH_MY.DRILLING, EgtIf( bAngleTransmission, 'Pocket_AT', 'Pocket'), { Diam = dDiam, Depth = dDepth}, bTopHead, bDownHead) end diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index 2eb3f9b..c997af8 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -20,6 +20,7 @@ -- 2023/07/28 Aggiunta gestione rinvio 90deg solo per forature da sotto esattamente verticali. -- 2023/09/26 Se errore in applicazione lavorazione si inverte e riprova solo se foratura singola su foro aperto. -- 2023/11/06 Migliorata gestione dei fori con AngularTransmission. +-- 2024/03/13 Prima versione gestione Predrill -- Tabella per definizione modulo local ProcessDrill = {} @@ -96,20 +97,21 @@ end --------------------------------------------------------------------- -- Recupero dati foro e adattamento se speciale function ProcessDrill.GetData( Proc, b3Raw) + local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') -- verifico se foro da adattare if EgtExistsInfo( Proc.Id, 'DiamUser') then - local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') if AuxId then AuxId = AuxId + Proc.Id end if AuxId and EgtGetType( AuxId) == GDB_TY.CRV_ARC and BD.USER_HOLE_DIAM and BD.USER_HOLE_DIAM > 1 then EgtModifyArcRadius( AuxId, BD.USER_HOLE_DIAM / 2) end end - -- recupero diametro + -- recupero diametro e lunghezza local dDiam = EgtGetInfo( Proc.Id, 'P12', 'd') or 0 + local dLen = abs( EgtCurveThickness( Proc.Id + AuxId)) or 0 -- recupero faccia di entrata e uscita local nFcs = EgtGetInfo( Proc.Id, 'FCS', 'i') or 0 local nFce = EgtGetInfo( Proc.Id, 'FCE', 'i') or 0 - return dDiam, nFcs, nFce + return dDiam, dLen, nFcs, nFce end --------------------------------------------------------------------- @@ -139,6 +141,40 @@ function ProcessDrill.Split( Proc, b3Raw) return ( bOpen and ( bHoriz or BD.ROT90 or BD.DOWN_HEAD or BD.TURN or bAngTransm) and not bSlant) end +--------------------------------------------------------------------- +-- Verifica se bisogna aggiungere un preforo +function ProcessDrill.IsPredrillNeeded( Proc) + local dDepthPredrill = EgtGetInfo( Proc.Id, 'Q03', 'i') + -- se non c'è la Q oppure se zero, allora non è da fare + if not dDepthPredrill or dDepthPredrill <= 0 then + return false + -- altrimenti Predrill da fare + else + return true + end +end + +--------------------------------------------------------------------- +-- Aggiunge il preforo alla feature passata +function ProcessDrill.AddPredrillFromDrillProc( Proc) + local dDepthPredrill = EgtGetInfo( Proc.Id, 'Q03', 'i') + -- foro più corto del preforo, allora è il foro che diventa il preforo stesso + if Proc.Len <= dDepthPredrill then + Proc.IsPredrill = true + Proc.IsPredrillOf = Proc.Id + -- altrimenti creo un nuovo process + else + -- recupero gruppo per geometria aggiuntiva + local AddGrpId = BL.GetAddGroup( Proc.PartId) + if not AddGrpId then + local sErr = 'Error on Predrill impossible to find AddGroup' + EgtOutLog( sErr) + return false, sErr + end + + end +end + --------------------------------------------------------------------- -- Classificazione della feature function ProcessDrill.Classify( Proc, b3Raw) @@ -295,9 +331,9 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) end -- primo gruppo di controlli con lunghezza utensile pari a metà foro se passante -- recupero la lavorazione - local sDrilling, sType, dMaxDepth, dMaxToolLength, dToolDiam, dDiamTh, dToolFreeLen = ML.FindDrilling( dDiam, dCheckDepth, bDrillUp, bDrillDown, bExcludeH2, bDrillAngTrasm) + local sDrilling, sType, dMaxDepth, dMaxToolLength, dToolDiam, dDiamTh, dToolFreeLen = ML.FindDrilling( dDiam, dCheckDepth, bDrillUp, bDrillDown, bExcludeH2, bDrillAngTrasm, Proc.IsPredrill) if not sDrilling and dCheckDepth then - sDrilling, sType, dMaxDepth, dMaxToolLength, dToolDiam, dDiamTh, dToolFreeLen = ML.FindDrilling( dDiam, 0, bDrillUp, bDrillDown, bExcludeH2, bDrillAngTrasm) + sDrilling, sType, dMaxDepth, dMaxToolLength, dToolDiam, dDiamTh, dToolFreeLen = ML.FindDrilling( dDiam, 0, bDrillUp, bDrillDown, bExcludeH2, bDrillAngTrasm, Proc.IsPredrill) if sDrilling then dCheckDepth = nil end end if not sDrilling then From 58eb8df2471fd470b70e937070f393780081b87f Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Wed, 13 Mar 2024 15:24:59 +0100 Subject: [PATCH 02/10] - Gestion Predrill su foro da due parti - Ordinamento, Predrill sempre prima del foro --- LuaLibs/BeamExec.lua | 22 ++++++++++++++---- LuaLibs/ProcessDrill.lua | 49 +++++++++++++++++++++++++++++++++++----- 2 files changed, 60 insertions(+), 11 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index d12f226..94275a7 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -61,6 +61,7 @@ -- 2024/03/07 Implementate le lavorazioni in doppio per fori specchiati non passanti e DrillPocket. -- 2024/03/11 In CollectFeatures si scrive ora Width e Height della faccia sia trimmate con il grezzo che intere. -- 2024/03/13 In CollectFeatures si scrive lunghezza foro su Proc e si controla se serve Predrill +-- In OrderFeature, preforo sempre prima del foro -- Tabella per definizione modulo local BeamExec = {} @@ -370,7 +371,7 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) end end end - if Proc.Box and not Proc.Box:isEmpty() then + if Proc.Box and not Proc.Box:isEmpty() then Proc.Head = IsHeadFeature( Proc, b3Raw, dCurrOvmH) Proc.Tail, Proc.AdvTail = IsTailFeature( Proc, b3Raw, dCurrOvmH, dCurrOvmT) table.insert( vProc, Proc) @@ -380,7 +381,10 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) Proc.Diam, Proc.Len, Proc.Fcs, Proc.Fce = Drill.GetData( Proc, b3Raw) -- verifico se devo inserire i prefori if Drill.IsPredrillNeeded( Proc) then - Drill.AddPredrillFromDrillProc( Proc) + local bAddProc, PredrillProc= Drill.AddPredrillFromDrillProc( Proc) + if bAddProc then + table.insert( vProc, PredrillProc) + end end -- verifico se necessaria seconda lavorazione da parte opposta per foro più lungo della punta if Drill.Split( Proc, b3Raw) then @@ -407,9 +411,13 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) Proc2.TaskId = Proc.TaskId Proc2.AdjId = Proc.AdjId Proc2.MainId = Proc.MainId + table.insert( vProc, Proc2) -- verifico se devo inserire i prefori if Drill.IsPredrillNeeded( Proc2) then - Drill.AddPredrillFromDrillProc( Proc2) + local bAddProc, PredrillProc= Drill.AddPredrillFromDrillProc( Proc2) + if bAddProc then + table.insert( vProc, PredrillProc) + end end end -- se BlockHaus HalfLap @@ -931,7 +939,11 @@ local function OrderFeatures( vProc, b3Raw) end -- se entrambi fori con posizione praticamente uguale ordino secondo diametro e faccia di inizio (Fcs) if B1.Prc == 40 and B2.Prc == 40 and abs( B1.Box:getCenter():getX() - B2.Box:getCenter():getX()) < dSmallDrillRange then - if abs( B1.Diam - B2.Diam) < 1.0 then + if B1.IsPredrill and not B2.IsPredrill then + return true + elseif not B1.IsPredrill and B2.IsPredrill then + return false + elseif abs( B1.Diam - B2.Diam) < 1.0 then if B1.Fcs == B2.Fcs then if abs( B1.Box:getCenter():getX() - B2.Box:getCenter():getX()) < 1.0 then if abs( B1.Box:getCenter():getY() - B2.Box:getCenter():getY()) < 1.0 then @@ -2056,7 +2068,7 @@ function BeamExec.ProcessFeatures() -- verifica presenza forature influenzate da lavorazioni di testa o coda if BD.IMPROVE_HEAD_TAIL_DRILLINGS then - vMachBeforeIntersDrillings = CalcHeadTailMachBeforeIntersDrillings( vProc, b3Raw) + local vMachBeforeIntersDrillings = CalcHeadTailMachBeforeIntersDrillings( vProc, b3Raw) SetDrillingsToMachineAfterHeadOrTailCut( vProc, vMachBeforeIntersDrillings) end -- verifica presenza di feature specchiate per eventuali lavorazioni simultanee diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index c997af8..b944499 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -162,16 +162,53 @@ function ProcessDrill.AddPredrillFromDrillProc( Proc) if Proc.Len <= dDepthPredrill then Proc.IsPredrill = true Proc.IsPredrillOf = Proc.Id + return false -- altrimenti creo un nuovo process else -- recupero gruppo per geometria aggiuntiva - local AddGrpId = BL.GetAddGroup( Proc.PartId) - if not AddGrpId then - local sErr = 'Error on Predrill impossible to find AddGroup' - EgtOutLog( sErr) - return false, sErr + local nAddGrpId = BL.GetAddGroup( Proc.PartId) + -- recupero e verifico l'entità foro + local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i') or 0 + local ptCen = EgtCP( Proc.Id + AuxId, GDB_RT.GLOB) + local vtExtr = EgtCurveExtrusion( Proc.Id + AuxId, GDB_RT.GLOB) + + -- copio foro originale + local nPreHoleId = EgtCopyGlob( Proc.Id, nAddGrpId) + local nPreHoleAux = EgtCopyGlob( Proc.Id + AuxId, nAddGrpId) + + -- se foro invertito sposto geometria dall'altro lato del foro + if Proc.Flg == -2 then + local vsExtr = vtExtr * Proc.Len + EgtMove( nPreHoleAux, vsExtr) + EgtModifyCurveThickness( nPreHoleAux, dDepthPredrill) + -- altrimenti creo il foro direttamente + else + EgtModifyCurveThickness( nPreHoleAux, -dDepthPredrill) end + -- definisco dati seconda parte + local PredrillProc = {} + PredrillProc.PartId = Proc.PartId + PredrillProc.Id = nPreHoleId + PredrillProc.Grp = Proc.Grp + PredrillProc.Prc = Proc.Prc + PredrillProc.Flg = Proc.Flg + PredrillProc.Box = Proc.Box + PredrillProc.Fct = Proc.Fct + PredrillProc.Diam = Proc.Diam + PredrillProc.Len = dDepthPredrill + PredrillProc.Head = Proc.Head + PredrillProc.Tail = Proc.Tail + PredrillProc.Fcs = Proc.Fcs + PredrillProc.Fce = Proc.Fce + PredrillProc.CutId = Proc.CutId + PredrillProc.TaskId = Proc.TaskId + PredrillProc.AdjId = Proc.AdjId + PredrillProc.MainId = Proc.MainId + PredrillProc.IsPredrill = true + PredrillProc.IsPredrillOf = Proc.Id + + return true, PredrillProc end end @@ -325,7 +362,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) local bDrillUp = ( bDownDrill and vtExtr:getZ() > -0.421) local bExcludeH2 = false if Proc.Double and Proc.Double > 0 then - bMillUp = true + -- bMillUp = true bDrillDown = false bExcludeH2 = true end From b620aef7b82855570e7922fe7700fa6c1791157f Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Wed, 13 Mar 2024 17:23:40 +0100 Subject: [PATCH 03/10] Aggiunta gestione prefori --- LuaLibs/MachiningLib.lua | 19 ++++++++++++------- LuaLibs/ProcessDrill.lua | 6 +++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 87e053f..f013fe2 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -13,7 +13,7 @@ -- 2024/01/23 Nella GetMachinings vengono ora raccolti i parametri utensile necessari per i VerifyTool, scritti direttamente nella tabella Machining.Tool. -- Le lavorazioni possono essere ora ordinate per dimensioni utensile (Longest, Shortest, Biggest, Smallest) se passato l'apposito parametro SortingCriterion in FindMachining. Al momento implementato solo per FindSawing. -- 2024/03/01 In VerifyPocketing implementato l'ordinamento per dimensioni utensile. --- 2024/03/13 In FindDrilling se Predrill si cerca solo tra le svuotature +-- 2024/03/13 Aggiunta gestione Predrill -- Tabella per definizione modulo local MachiningLib = {} @@ -170,7 +170,7 @@ end --------------------------------------------------------------------- function VerifyTool( Machining, MachiningType, Params, bH2) if MachiningType == MCH_MY.DRILLING then - if Machining.SubType == 'Drill' or Machining.SubType == 'AngleDrill' then + if Machining.SubType == 'Drill' or Machining.SubType == 'AngleDrill' or Machining.SubType == 'Predrill' then return VerifyDrill( Machining, Params.Diam, Params.Depth, bH2) elseif Machining.SubType == 'DrillPocket' then return VerifyDrillPocket( Machining, Params.Diam, Params.Depth, bH2) @@ -226,6 +226,8 @@ function GetMachinings( MachiningType, sType) Machining.SubType = 'AngleDrill' elseif EgtStartsWith( Machining.Type, 'Pocket') then Machining.SubType = 'DrillPocket' + elseif EgtStartsWith( Machining.Type, 'Predrill') then + Machining.SubType = 'Predrill' end end Machining.Tool.Diameter = EgtTdbGetCurrToolParam( MCH_TP.DIAM) @@ -301,7 +303,7 @@ end function ReturnParams( MachiningType, MachiningName, sType, ToolParams) if MachiningType == MCH_MY.DRILLING then local _, sOrigType = EgtEndsWith( sType, '_H2') - return MachiningName, sType, EgtIf( sOrigType == 'Drill' or sOrigType == 'Drill_AT' or sOrigType == 'AngleDrill' , ToolParams.TMaxMat, ToolParams.TMaxDepth), ToolParams.MaxToolLength, ToolParams.ToolDiam, ToolParams.DiamTh, ToolParams.FreeLen + return MachiningName, sType, EgtIf( sOrigType == 'Drill' or sOrigType == 'Drill_AT' or sOrigType == 'AngleDrill' or sOrigType == 'Predrill' , ToolParams.TMaxMat, ToolParams.TMaxDepth), ToolParams.MaxToolLength, ToolParams.ToolDiam, ToolParams.DiamTh, ToolParams.FreeLen elseif MachiningType == MCH_MY.SAWING then return MachiningName, ToolParams.H2 elseif MachiningType == MCH_MY.MILLING then @@ -469,11 +471,14 @@ end --------------------------------------------------------------------- function MachiningLib.FindDrilling( dDiam, dDepth, bTopHead, bDownHead, bExcludeH2, bAngleTransmission, bIsPredrill) - local MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 - -- se il foro è un predrill, non devo cercare tra le punte - if not bIsPredrill then - MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 = FindMachining( MCH_MY.DRILLING, EgtIf( bAngleTransmission, 'Drill_AT', 'Drill'), { Diam = dDiam, Depth = dDepth}, bTopHead, bDownHead, bExcludeH2) + local MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5, sTypeMach + -- se il foro è un predrill, cerco solo punte abilitate al Predrill + if bIsPredrill then + sTypeMach = 'Predrill' + else + sTypeMach = EgtIf( bAngleTransmission, 'Drill_AT', 'Drill') end + MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 = FindMachining( MCH_MY.DRILLING, sTypeMach, { Diam = dDiam, Depth = dDepth}, bTopHead, bDownHead, bExcludeH2) if ( not MachiningName or MachiningName == '') then MachiningName, MachiningType, Param1, Param2, Param3, Param4, Param5 = FindMachining( MCH_MY.DRILLING, EgtIf( bAngleTransmission, 'Pocket_AT', 'Pocket'), { Diam = dDiam, Depth = dDepth}, bTopHead, bDownHead) end diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index b944499..2a58800 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -20,7 +20,7 @@ -- 2023/07/28 Aggiunta gestione rinvio 90deg solo per forature da sotto esattamente verticali. -- 2023/09/26 Se errore in applicazione lavorazione si inverte e riprova solo se foratura singola su foro aperto. -- 2023/11/06 Migliorata gestione dei fori con AngularTransmission. --- 2024/03/13 Prima versione gestione Predrill +-- 2024/03/13 Aggiunta gestione Predrill -- Tabella per definizione modulo local ProcessDrill = {} @@ -527,7 +527,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) dMaxElev = dMaxDepth end -- inserisco la lavorazione - local sName = 'Drill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local sName = EgtIf( sType == 'Predrill', 'Predrill_', 'Drill_') .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) local nMchId = EgtAddMachining( sName, sDrilling) if not nMchId then local sErr = 'Error adding machining ' .. sName .. '-' .. sDrilling @@ -537,7 +537,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) -- eventuale inversione - if sType == 'Drill' or sType == 'Drill_H2' or sType == 'Drill_AT' or sType == 'AngleDrill' then + if sType == 'Drill' or sType == 'Drill_H2' or sType == 'Drill_AT' or sType == 'AngleDrill' or sType == 'Predrill' then EgtSetMachiningParam( MCH_MP.INVERT, bToInvert) else EgtSetMachiningParam( MCH_MP.TOOLINVERT, bToInvert) From 6a135228b8b570ef736a8f58074223c2b9ddd5c4 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Fri, 15 Mar 2024 09:41:29 +0100 Subject: [PATCH 04/10] - piccola correzione ai fori in doppio --- LuaLibs/BeamExec.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 94275a7..e8e7b81 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1991,6 +1991,11 @@ local function AreDrillingsMirrored( Proc, ProcMirror, b3Raw) end end + -- fori della stessa profondità + if abs( Proc.Len - ProcMirror.Len) > 10 * GEO.EPS_SMALL then + return false + end + return true end From 8732c2fc665ca8186d89b2ac1bf705024bf14b8e Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Fri, 15 Mar 2024 09:54:25 +0100 Subject: [PATCH 05/10] update log e version --- UpdateLog.txt | 3 +++ Version.lua | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/UpdateLog.txt b/UpdateLog.txt index 3482c7c..1e8585a 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,8 @@ ==== Beam Update Log ==== +Versione 2.6c3 (15/03/2024) +- Added : Aggiunta gestione prefori + Versione 2.6c2 (12/03/2024) - Added : in Mortase Aggiunta possibilità di inserire lavorazione di smusso - Added : in FreeContour aggiunto smusso se lav. di svuotatura diff --git a/Version.lua b/Version.lua index 1bfb520..759c1b2 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.6c2' +VERSION = '2.6c3' MIN_EXE = '2.6a1' From 7a70f623d9357ab2cb490c4d652960fcb2fc103d Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Fri, 15 Mar 2024 11:44:13 +0100 Subject: [PATCH 06/10] DataBeam : - in LapJoint correzione a calcolo ingombro per feature basse e lunghe dalla testa. --- LuaLibs/ProcessLapJoint.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 08040d7..09e92f3 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2023/09/26 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2024/03/15 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -99,6 +99,7 @@ -- 2024/02/29 In lapjoint 2 facce (TestTwoFacesDownHead) migliorata la scelta della lama da sotto. -- 2024/03/01 Migliorata VerifyPocket. -- 2024/03/04 Implementato attacco esterno se tasca 4 facce sulla coda ma nessun pezzo successivo. +-- 2024/03/15 Correzione a calcolo ingombro per feature basse e lunghe dalla testa. -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -661,8 +662,10 @@ local function UpdateEncumbrance( Proc, nRawId, b3Raw, b3Solid) elseif Proc.Box:getCenter():getX() > b3Solid:getCenter():getX() then local dOffs = b3Solid:getMax():getX() - Proc.Box:getMin():getX() local dDist = b3Solid:getMax():getX() - Proc.Box:getMax():getX() - -- se concavo aumento la distanza (rimane una punta...) - --if dAngT < 0 then dDist = dDist + 10 end + -- se pinze a 45° e pinza abbastanza materiale, compenso comunque, ma solo inclinazione morse + if not bIsVertClamps and dDeltaZClamp > BD.VICE_MINH and BD.VICE_MAXH then + dOffs = min( dOffs, BD.VICE_MAXH - BD.VICE_MINH) + end BL.UpdateHCING( nRawId, dOffs, dDist) end end From ddcea6524c782cb079e34942de20fcb14ed98790 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Fri, 15 Mar 2024 12:31:07 +0100 Subject: [PATCH 07/10] update log --- UpdateLog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/UpdateLog.txt b/UpdateLog.txt index 1e8585a..c21b87b 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -2,6 +2,7 @@ Versione 2.6c3 (15/03/2024) - Added : Aggiunta gestione prefori +- Fixed : in LapJoint correzione a calcolo ingombro per feature basse e lunghe dalla testa. Versione 2.6c2 (12/03/2024) - Added : in Mortase Aggiunta possibilità di inserire lavorazione di smusso From 3953d079c1d174c615bccd7b9a4cb6c7021011a4 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Mon, 18 Mar 2024 13:26:22 +0100 Subject: [PATCH 08/10] ProcessDrill : Per Predrill corretta direzione estrusione per fori con direzione verso il basso --- LuaLibs/ProcessDrill.lua | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index 2a58800..d79395b 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -21,6 +21,7 @@ -- 2023/09/26 Se errore in applicazione lavorazione si inverte e riprova solo se foratura singola su foro aperto. -- 2023/11/06 Migliorata gestione dei fori con AngularTransmission. -- 2024/03/13 Aggiunta gestione Predrill +-- 2024/03/18 Per Predrill corretta direzione estrusione per fori con direzione verso il basso -- Tabella per definizione modulo local ProcessDrill = {} @@ -176,23 +177,21 @@ function ProcessDrill.AddPredrillFromDrillProc( Proc) local nPreHoleId = EgtCopyGlob( Proc.Id, nAddGrpId) local nPreHoleAux = EgtCopyGlob( Proc.Id + AuxId, nAddGrpId) - -- se foro invertito sposto geometria dall'altro lato del foro + -- se foro invertito sposto geometria dall'altro lato del foro e inverto direzione estrusione if Proc.Flg == -2 then - local vsExtr = vtExtr * Proc.Len - EgtMove( nPreHoleAux, vsExtr) - EgtModifyCurveThickness( nPreHoleAux, dDepthPredrill) - -- altrimenti creo il foro direttamente - else - EgtModifyCurveThickness( nPreHoleAux, -dDepthPredrill) + local vsExtr = -vtExtr * Proc.Len + EgtMove( nPreHoleAux, vsExtr, GDB_RT.GLOB) + EgtModifyCurveExtrusion( nPreHoleAux, -vtExtr, GDB_RT.GLOB) end + EgtModifyCurveThickness( nPreHoleAux, -dDepthPredrill) - -- definisco dati seconda parte local PredrillProc = {} + -- definisco dati seconda parte PredrillProc.PartId = Proc.PartId PredrillProc.Id = nPreHoleId PredrillProc.Grp = Proc.Grp PredrillProc.Prc = Proc.Prc - PredrillProc.Flg = Proc.Flg + PredrillProc.Flg = 1 PredrillProc.Box = Proc.Box PredrillProc.Fct = Proc.Fct PredrillProc.Diam = Proc.Diam @@ -200,7 +199,7 @@ function ProcessDrill.AddPredrillFromDrillProc( Proc) PredrillProc.Head = Proc.Head PredrillProc.Tail = Proc.Tail PredrillProc.Fcs = Proc.Fcs - PredrillProc.Fce = Proc.Fce + PredrillProc.Fce = 0 -- il preforo è sempre chiuso, non ha faccia di uscita PredrillProc.CutId = Proc.CutId PredrillProc.TaskId = Proc.TaskId PredrillProc.AdjId = Proc.AdjId @@ -527,7 +526,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) dMaxElev = dMaxDepth end -- inserisco la lavorazione - local sName = EgtIf( sType == 'Predrill', 'Predrill_', 'Drill_') .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local sName = EgtIf( EgtStartsWith( sType, 'Predrill'), 'Predrill_', 'Drill_') .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) local nMchId = EgtAddMachining( sName, sDrilling) if not nMchId then local sErr = 'Error adding machining ' .. sName .. '-' .. sDrilling From 092ad0cb4c6149b6667bc8d5d2e6b9e190a63079 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Mon, 18 Mar 2024 15:01:47 +0100 Subject: [PATCH 09/10] update log e versione --- UpdateLog.txt | 3 +++ Version.lua | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/UpdateLog.txt b/UpdateLog.txt index c21b87b..70d6380 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,8 @@ ==== Beam Update Log ==== +Versione 2.6c4 (18/03/2024) +- Fixed : correzioni a gestione prefori. + Versione 2.6c3 (15/03/2024) - Added : Aggiunta gestione prefori - Fixed : in LapJoint correzione a calcolo ingombro per feature basse e lunghe dalla testa. diff --git a/Version.lua b/Version.lua index 759c1b2..198380a 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.6c3' +VERSION = '2.6c4' MIN_EXE = '2.6a1' From 1d2eb249038061024363b82b234084c3fb5b789d Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 19 Mar 2024 18:00:16 +0100 Subject: [PATCH 10/10] DataBeam : - correzione in Mortise per utilizzo variabili non definite. --- LuaLibs/ProcessMortise.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LuaLibs/ProcessMortise.lua b/LuaLibs/ProcessMortise.lua index 05cbddd..fecdfe7 100644 --- a/LuaLibs/ProcessMortise.lua +++ b/LuaLibs/ProcessMortise.lua @@ -442,7 +442,7 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) -- recupero i dati della curva e del profilo local dDepth = dMorH local bDownHead = ( BD.DOWN_HEAD and vtExtr:getZ() < 0.1) - local bToolInv = ( not bDownHead and vtExtr:getZ() < -0.1 and b3Aux:getDimZ() > b3Raw:getDimZ() - 5) + local bToolInv = ( not bDownHead and vtExtr:getZ() < -0.1 and Proc.Box:getDimZ() > b3Solid:getDimZ() - 5) local dExtra = 2 -- verifico se servono gli smussi. Se lavorazione principale di svuotatura significa che è solo da un lato