From 230b5f871d67cb360355d5cc9a2092abbfc9485f Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Mon, 20 May 2024 09:11:38 +0200 Subject: [PATCH 1/3] In BeamExec, lettura parametri di Setup da BeamData. Serve funzione macchina. --- LuaLibs/BeamExec.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 06c00c5..e956ad0 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -117,6 +117,8 @@ function BeamExec.GetToolsFromDB() Tool.Feeds.dTipFeed = EgtTdbGetCurrToolParam( MCH_TP.TIPFEED) -- TODO serve funzione in BeamData che data la posizione dell'utensile e della testa, capisca il montaggio (testa sopra - testa sotto - aggregato - ecc...) Tool.sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD) + Tool.SetupInfo = {} + Tool.SetupInfo = BeamData.GetSetupInfo( Tool.sHead) Tool.sUUID = EgtTdbGetCurrToolParam( MCH_TP.UUID) Tool.sUserNotes = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES) Tool.dMaxDepth = EgtTdbGetCurrToolMaxDepth() or Tool.dMaxMaterial From c1c6e2a220c59086e1995d9e9a5ddfd3cfdebb0c Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Mon, 20 May 2024 14:33:12 +0200 Subject: [PATCH 2/3] - Aggiunta funzione AddNewMachining in MachiningLib - Adeguamento STR0002 per utilizzo nuova funzione di aggiunta lavorazione --- LuaLibs/MachiningLib.lua | 180 +++++++++++++++++++++++++++++++++ Strategies/STR0002/STR0002.lua | 55 ++++++---- 2 files changed, 213 insertions(+), 22 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 249e302..4b94909 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -142,6 +142,186 @@ end -- funzione per aggiungere una nuova lavorazione -- TODO da fare function MachiningLib.AddNewMachining( Machining) + local nErr + local sErr + + -- Controllo parametri obbligatori + if not Machining.nType or not Machining.nToolIndex or not Machining.idProc or not Machining.idFaceToMachine then + return false + end + + -- Drilling + if Machining.nType == MCH_MY.DRILLING then + Machining.sTypeName = 'Drill_' + -- Milling + elseif Machining.nType == MCH_MY.MILLING then + -- se utensile lama + if TOOLS[Machining.nToolIndex].sFamily == 'SAWBLADE' then + Machining.sTypeName = 'Cut' + else + Machining.sTypeName = 'Milling' + end + -- Pocketing + elseif Machining.nType == MCH_MY.POCKETING then + Machining.sTypeName = 'Pocketing' + -- Mortising + elseif Machining.nType == MCH_MY.MORTISING then + Machining.sTypeName = 'Mortising' + end + + -- se nome non definito, assegno alla lavorazioen un nome standard + if not Machining.sOperationName then + Machining.sOperationName = Machining.sTypeName .. ( EgtGetName( Machining.idProc) or tostring( Machining.idProc)) .. '_' .. tostring( Machining.idFaceToMachine) + end + if not Machining.sToolName then + Machining.sToolName = TOOLS[Machining.nToolIndex].sName + end + + -- creazione lavorazione + local nOperationId = EgtCreateMachining( Machining.sOperationName, Machining.nType, Machining.sToolName) + + if nOperationId then + -- impostazione geometria + EgtSetMachiningGeometry( {{ Machining.idProc, Machining.idFaceToMachine}}) + + -- impostazione parametri lavorazione + if Machining.dDepth then + EgtSetMachiningParam( MCH_MP.DEPTH, Machining.dDepth) + end + if Machining.bInvert then + EgtSetMachiningParam( MCH_MP.INVERT, Machining.bInvert) + end + if Machining.nWorkside then + EgtSetMachiningParam( MCH_MP.WORKSIDE, Machining.nWorkside) + end + if Machining.nFaceuse then + EgtSetMachiningParam( MCH_MP.FACEUSE, Machining.nFaceuse) + end + if Machining.nSCC then + EgtSetMachiningParam( MCH_MP.SCC, Machining.nSCC) + end + if Machining.bToolInvert then + EgtSetMachiningParam( MCH_MP.TOOLINVERT, Machining.bToolInvert) + end + if Machining.sBlockedAxis then + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, Machining.sBlockedAxis) + end + if Machining.sInitialAngles then + EgtSetMachiningParam( MCH_MP.INITANGS, Machining.sInitialAngles) + end + if Machining.nHeadSide then + EgtSetMachiningParam( MCH_MP.HEADSIDE, Machining.nHeadSide) + end + if Machining.nSubType then + EgtSetMachiningParam( MCH_MP.SUBTYPE, Machining.nSubType) + end + if Machining.dOverlap then + EgtSetMachiningParam( MCH_MP.OVERL, Machining.dOverlap) + end + + -- step + if Machining.Steps then + if Machining.Steps.dStepType then + EgtSetMachiningParam( MCH_MP.STEPTYPE, Machining.Steps.dStepType) + end + if Machining.Steps.dStep then + EgtSetMachiningParam( MCH_MP.STEP, Machining.Steps.dStep) + end + if Machining.Steps.dSideStep then + EgtSetMachiningParam( MCH_MP.SIDESTEP, Machining.Steps.dSideStep) + end + end + + if Machining.dStartPos then + EgtSetMachiningParam( MCH_MP.STARTPOS, Machining.dStartPos) + end + if Machining.dReturnPos then + EgtSetMachiningParam( MCH_MP.RETURNPOS, Machining.dReturnPos) + end + + if Machining.dRadialOffset then + EgtSetMachiningParam( MCH_MP.OFFSR, Machining.dRadialOffset) + end + if Machining.dLongitudinalOffset then + EgtSetMachiningParam( MCH_MP.OFFSL, Machining.dLongitudinalOffset) + end + + -- paraemtri attacco + if Machining.LeadIn then + if Machining.LeadIn.nType then + EgtSetMachiningParam( MCH_MP.LEADINTYPE, Machining.LeadIn.nType) + end + if Machining.LeadIn.dStartAddLength then + EgtSetMachiningParam( MCH_MP.STARTADDLEN, Machining.LeadIn.dStartAddLength) + end + if Machining.LeadIn.dTangentDistance then + EgtSetMachiningParam( MCH_MP.LITANG, Machining.LeadIn.dTangentDistance) + end + if Machining.LeadIn.dPerpDistance then + EgtSetMachiningParam( MCH_MP.LIPERP, Machining.LeadIn.dPerpDistance) + end + if Machining.LeadIn.dElevation then + EgtSetMachiningParam( MCH_MP.LIELEV, Machining.LeadIn.dElevation) + end + if Machining.LeadIn.dCompLength then + EgtSetMachiningParam( MCH_MP.LICOMPLEN, Machining.LeadIn.dCompLength) + end + end + -- parametri uscita + if Machining.LeadOut then + if Machining.LeadOut.nType then + EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, Machining.LeadOut.nType) + end + if Machining.LeadOut.dEndAddLength then + EgtSetMachiningParam( MCH_MP.ENDADDLEN, Machining.LeadOut.dEndAddLength) + end + if Machining.LeadOut.dTangentDistance then + EgtSetMachiningParam( MCH_MP.LOTANG, Machining.LeadOut.dTangentDistance) + end + if Machining.LeadOut.dPerpDistance then + EgtSetMachiningParam( MCH_MP.LOPERP, Machining.LeadOut.dPerpDistance) + end + if Machining.LeadOut.dElevation then + EgtSetMachiningParam( MCH_MP.LOELEV, Machining.LeadOut.dElevation) + end + if Machining.LeadOut.dCompLength then + EgtSetMachiningParam( MCH_MP.LOCOMPLEN, Machining.LeadOut.dCompLength) + end + end + + if Machining.dStartSlowLen then + EgtSetMachiningParam( MCH_MP.STARTSLOWLEN, Machining.dStartSlowLen) + end + if Machining.dEndSlowLen then + EgtSetMachiningParam( MCH_MP.ENDSLOWLEN, Machining.dEndSlowLen) + end + if Machining.dThrouAddLen then + EgtSetMachiningParam( MCH_MP.THROUADDLEN, Machining.dThrouAddLen) + end + -- parametri da settare nelle note + local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) + if Machining.dMaxElev then + sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', Machining.dMaxElev) + end + EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) + + local bIsApplyOk = MachiningLib.ApplyMachining( true, false) + if not bIsApplyOk then + nErr, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nOperationId, false) + return false + end + else + return false + end + + return true, sErr +end + +------------------------------------------------------------------------------------------------------------- +function MachiningLib.ApplyMachining( bRecalc, bApplyPost) + local bResult = EgtApplyMachining( bRecalc, bApplyPost) + return bResult end ------------------------------------------------------------------------------------------------------------- diff --git a/Strategies/STR0002/STR0002.lua b/Strategies/STR0002/STR0002.lua index 12db181..6ead5ce 100644 --- a/Strategies/STR0002/STR0002.lua +++ b/Strategies/STR0002/STR0002.lua @@ -15,7 +15,7 @@ -- carico librerie local BeamLib = require( 'BeamLib') local BeamData = require( 'BeamData') -local MachLib = require( 'MachiningLib') +local MachiningLib = require( 'MachiningLib') local FeatureData = require( 'FeatureData') -- Tabella per definizione modulo @@ -48,6 +48,11 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters) end local ToolInfo = {} + local Pocketing = {} + Pocketing.Steps = {} + Pocketing.LeadIn = {} + Pocketing.LeadOut = {} + -- serve utensile che possa lavorare di testa local ToolSearchParameters = {} @@ -58,7 +63,7 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters) ToolSearchParameters.vtToolDir = Proc.MainFaces.BottomFace.vtN -- cerco utensile - ToolInfo = MachLib.FindMill( Proc, ToolSearchParameters) + ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if ToolInfo.nToolIndex and TOOLS[ToolInfo.nToolIndex].sName then if ToolInfo.dMaxMatReduction < 0 then @@ -141,35 +146,41 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters) end -- si applicano le lavorazioni for i = 1, #vAddId do - EgtCreateMachining( 'Svuotatura', MCH_OY.POCKETING, TOOLS[ToolInfo.nToolIndex].sName) - EgtSetMachiningParam( MCH_MP.STEP, TOOLS[ToolInfo.nToolIndex].dStep) - EgtSetMachiningParam( MCH_MP.DEPTH, min( 0, ToolInfo.dMaxMatReduction)) - EgtSetMachiningParam( MCH_MP.SIDESTEP, TOOLS[ToolInfo.nToolIndex].dSideStep) - EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALOUT) - EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_POCK_LI.ZIGZAG) - EgtSetMachiningParam( MCH_MP.LITANG, TOOLS[ToolInfo.nToolIndex].dDiameter/2) - EgtSetMachiningParam( MCH_MP.LIELEV, TOOLS[ToolInfo.nToolIndex].dDiameter/2) + Pocketing.nToolIndex = ToolInfo.nToolIndex + Pocketing.nType = MCH_OY.POCKETING + Pocketing.sOperationName = 'Svuotatura' + Pocketing.Steps.dStep = TOOLS[ToolInfo.nToolIndex].dStep + Pocketing.dDepth = ToolInfo.dMaxMatReduction + Pocketing.Steps.dSideStep = TOOLS[ToolInfo.nToolIndex].dSideStep + Pocketing.nSubType = MCH_POCK_SUB.SPIRALOUT + Pocketing.LeadIn.nType = MCH_POCK_LI.ZIGZAG + Pocketing.LeadIn.TangentDistance = TOOLS[ToolInfo.nToolIndex].dDiameter/2 + Pocketing.LeadIn.Elevation = TOOLS[ToolInfo.nToolIndex].dDiameter/2 for j=1, Proc.nFct do local vtNSplitFace _, vtNSplitFace = EgtSurfTmFacetCenter( vAddId[i], j - 1, GDB_ID.ROOT) if vtNSplitFace and AreSameVectorExact( vtNSplitFace, Proc.MainFaces.BottomFace.vtN) then - EgtSetMachiningGeometry( {{ vAddId[i], j - 1}}) - EgtApplyMachining( true, true) + Pocketing.FaceToMachine.id = j - 1 + Pocketing.idProc = vAddId[i] + MachiningLib.AddNewMachining( Pocketing) break end end end else - EgtCreateMachining( 'Svuotatura', MCH_OY.POCKETING, TOOLS[ToolInfo.nToolIndex].sName) - EgtSetMachiningParam( MCH_MP.STEP, TOOLS[ToolInfo.nToolIndex].dStep) - EgtSetMachiningParam( MCH_MP.DEPTH, min( 0, ToolInfo.dMaxMatReduction)) - EgtSetMachiningParam( MCH_MP.SIDESTEP, TOOLS[ToolInfo.nToolIndex].dSideStep) - EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALOUT) - EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_POCK_LI.ZIGZAG) - EgtSetMachiningParam( MCH_MP.LITANG, TOOLS[ToolInfo.nToolIndex].dDiameter/2) - EgtSetMachiningParam( MCH_MP.LIELEV, TOOLS[ToolInfo.nToolIndex].dDiameter/2) - EgtSetMachiningGeometry( {{ Proc.id, Proc.MainFaces.BottomFace.id}}) - EgtApplyMachining( true, true) + Pocketing.nToolIndex = ToolInfo.nToolIndex + Pocketing.nType = MCH_OY.POCKETING + Pocketing.sOperationName = 'Svuotatura' + Pocketing.Steps.dStep = TOOLS[ToolInfo.nToolIndex].dStep + Pocketing.dDepth = ToolInfo.dMaxMatReduction + Pocketing.Steps.dSideStep = TOOLS[ToolInfo.nToolIndex].dSideStep + Pocketing.nSubType = MCH_POCK_SUB.SPIRALOUT + Pocketing.LeadIn.nType = MCH_POCK_LI.ZIGZAG + Pocketing.LeadIn.TangentDistance = TOOLS[ToolInfo.nToolIndex].dDiameter/2 + Pocketing.LeadIn.Elevation = TOOLS[ToolInfo.nToolIndex].dDiameter/2 + Pocketing.idFaceToMachine = Proc.MainFaces.BottomFace.id + Pocketing.idProc = Proc.id + MachiningLib.AddNewMachining( Pocketing) end end else From 32a16f97f36f780824771e4928e1797504ba9ff7 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Tue, 21 May 2024 08:41:28 +0200 Subject: [PATCH 3/3] - Piccola correzione STR0002 - In Process.lua spostato GetDataConfig dopo caricamento setup fatto nella ProcessBeams --- Process.lua | 4 ++-- Strategies/STR0002/STR0002.lua | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Process.lua b/Process.lua index bdde394..cea53a8 100644 --- a/Process.lua +++ b/Process.lua @@ -322,10 +322,10 @@ end ------------------------------------------------------------------------------------------------------------- if not MyProcessInputData() then return end -if not GetDataConfig() then return end - if not MyProcessBeams() then return end +if not GetDataConfig() then return end + -- Abilito Vmill EgtSetInfo( EgtGetCurrMachGroup(), 'Vm', '1') diff --git a/Strategies/STR0002/STR0002.lua b/Strategies/STR0002/STR0002.lua index 6ead5ce..20a320a 100644 --- a/Strategies/STR0002/STR0002.lua +++ b/Strategies/STR0002/STR0002.lua @@ -52,7 +52,6 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters) Pocketing.Steps = {} Pocketing.LeadIn = {} Pocketing.LeadOut = {} - -- serve utensile che possa lavorare di testa local ToolSearchParameters = {} @@ -160,7 +159,7 @@ function STR0002.Make( AddMachining, Proc, Part, CustomParameters) local vtNSplitFace _, vtNSplitFace = EgtSurfTmFacetCenter( vAddId[i], j - 1, GDB_ID.ROOT) if vtNSplitFace and AreSameVectorExact( vtNSplitFace, Proc.MainFaces.BottomFace.vtN) then - Pocketing.FaceToMachine.id = j - 1 + Pocketing.idFaceToMachine = j - 1 Pocketing.idProc = vAddId[i] MachiningLib.AddNewMachining( Pocketing) break