diff --git a/LuaLibs/FeatureLib.lua b/LuaLibs/FeatureLib.lua index 51e3b5f..5036ef8 100644 --- a/LuaLibs/FeatureLib.lua +++ b/LuaLibs/FeatureLib.lua @@ -551,7 +551,7 @@ function FeatureLib.GetStrategyTimeToMachine( Machinings) for i = 1, #Machinings do local Machining = Machinings[i] if Machining.bIsApplicable then - dTimeToMachine = dTimeToMachine + ( Machining.dLengthToMachineAllStepsWithLeadInOut / TOOLS[Machining.nToolIndex].Feeds.dFeed) + dTimeToMachine = dTimeToMachine + Machining.dTimeToMachine end end diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 54cff8e..ce9a446 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -190,7 +190,7 @@ function MachiningLib.GetSplitMachinings( Machinings, SplittingPoints, Part) end Machinings[nCurrentMachiningIndex].nFeatureSegment = j Machinings[nCurrentMachiningIndex].dLengthToMachine = Machinings[nCurrentMachiningIndex].dEdgeLength + Machinings[nCurrentMachiningIndex].LeadIn.dStartAddLength + Machinings[nCurrentMachiningIndex].LeadOut.dEndAddLength - Machinings[nCurrentMachiningIndex].dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Machinings[nCurrentMachiningIndex]) + Machinings[nCurrentMachiningIndex].dTimeToMachine = MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Machinings[nCurrentMachiningIndex]) end -- anche le lavorazioni non splittate necessitano del segmento assegnato else @@ -220,7 +220,7 @@ function MachiningLib.GetSplitMachinings( Machinings, SplittingPoints, Part) end end Machinings[i].dLengthToMachine = Machinings[i].dEdgeLength + Machinings[i].LeadIn.dStartAddLength + Machinings[i].LeadOut.dEndAddLength - Machinings[i].dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Machinings[i]) + Machinings[i].dTimeToMachine = MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Machinings[i]) end end @@ -941,11 +941,15 @@ function MachiningLib.GetToolMRR( Parameters) end ------------------------------------------------------------------------------------------------------------- -function MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Machining) +function MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Machining) local dLengthToMachineAllStepsWithLeadInOut = 0 + local dTimeToMachineTotal = 0 + local dToolStartFeed = TOOLS[Machining.nToolIndex].Feeds.dStartFeed + local dToolEndFeed = TOOLS[Machining.nToolIndex].Feeds.dEndFeed + local dToolFeed = TOOLS[Machining.nToolIndex].Feeds.dFeed if Machining.nType == MCH_MY.MILLING then - -- se non settati, imposto valori di default + -- stima LeadIn e LeadOut; se non settati si impostano a valori di default if not Machining.LeadIn.dTotalEstimatedDistance then Machining.LeadIn.dTotalEstimatedDistance = sqrt( Machining.LeadIn.dPerpDistance ^ 2 + Machining.LeadIn.dTangentDistance ^ 2) + Machining.dStartSafetyLength end @@ -956,11 +960,17 @@ function MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Machining) Machining.CloneStepsRadial = {} Machining.CloneStepsRadial.nCount = 1 end - -- calcolo lunghezze + -- stima tempi di lavorazione per i diversi tratti + local dTimeToMachineLeadIn = Machining.LeadIn.dTotalEstimatedDistance / dToolStartFeed + local dTimeToMachineLeadOut = Machining.LeadOut.dTotalEstimatedDistance / dToolEndFeed + local dTimeToMachineEdge = Machining.dLengthToMachine / dToolFeed + -- calcolo lunghezze e tempi if Machining.Steps.nStepType == MCH_MILL_ST.ZIGZAG then dLengthToMachineAllStepsWithLeadInOut = ( Machining.dLengthToMachine * Machining.CloneStepsRadial.nCount + ( Machining.LeadIn.dTotalEstimatedDistance + Machining.LeadOut.dTotalEstimatedDistance)) * Machining.Steps.nCount + dTimeToMachineTotal = ( dTimeToMachineEdge * Machining.CloneStepsRadial.nCount + ( dTimeToMachineLeadIn + dTimeToMachineLeadOut)) * Machining.Steps.nCount else dLengthToMachineAllStepsWithLeadInOut = Machining.CloneStepsRadial.nCount * ( Machining.dLengthToMachine + Machining.LeadIn.dTotalEstimatedDistance + Machining.LeadOut.dTotalEstimatedDistance) * Machining.Steps.nCount + dTimeToMachineTotal = Machining.CloneStepsRadial.nCount * ( dTimeToMachineEdge + dTimeToMachineLeadIn + dTimeToMachineLeadOut) * Machining.Steps.nCount end elseif Machining.nType == MCH_MY.MORTISING then -- se non settati, imposto valori di default @@ -968,17 +978,23 @@ function MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Machining) Machining.CloneStepsLongitudinal = {} Machining.CloneStepsLongitudinal.nCount = 1 end - -- calcolo lunghezze + -- stima tempi di lavorazione per i diversi tratti + local dTimeToMachineLeadIn = ( Machining.dDepthToMachine + ( TOOLS[Machining.nToolIndex].SetupInfo.dZSafeDelta or 60) + EgtMdbGetGeneralParam( MCH_GP.SAFEZ)) / dToolStartFeed + local dTimeToMachineLeadOut = ( Machining.dDepthToMachine + ( TOOLS[Machining.nToolIndex].SetupInfo.dZSafeDelta or 60) + EgtMdbGetGeneralParam( MCH_GP.SAFEZ)) / dToolEndFeed + local dTimeToMachineEdge = Machining.dLengthToMachine / dToolFeed + -- calcolo lunghezze e tempi if Machining.Steps.nStepType == MCH_MILL_ST.ZIGZAG then dLengthToMachineAllStepsWithLeadInOut = ( Machining.dLengthToMachine * Machining.Steps.nCount + 2 * ( Machining.dDepthToMachine + ( TOOLS[Machining.nToolIndex].SetupInfo.dZSafeDelta or 60) + EgtMdbGetGeneralParam( MCH_GP.SAFEZ))) * Machining.CloneStepsLongitudinal.nCount + dTimeToMachineTotal = ( dTimeToMachineEdge * Machining.Steps.nCount + dTimeToMachineLeadIn + dTimeToMachineLeadOut) * Machining.CloneStepsLongitudinal.nCount else dLengthToMachineAllStepsWithLeadInOut = Machining.CloneStepsLongitudinal.nCount * ( ( 2 * Machining.Steps.nCount - 1) * Machining.dLengthToMachine + 2 * 10 * ( Machining.Steps.nCount - 1) + 2 * ( Machining.dDepthToMachine + ( TOOLS[Machining.nToolIndex].SetupInfo.dZSafeDelta or 60) + EgtMdbGetGeneralParam( MCH_GP.SAFEZ))) + dTimeToMachineTotal = Machining.CloneStepsLongitudinal.nCount * ( ( 2 * Machining.Steps.nCount - 1) * dTimeToMachineEdge + 2 * 10 / dToolFeed * ( Machining.Steps.nCount - 1) + dTimeToMachineLeadIn + dTimeToMachineLeadOut) end else - error( 'GetLengthToMachineAllStepsWithLeadInOut : unknown machining type') + error( 'GetTimeToMachineAllStepsWithLeadInOut : unknown machining type') end - return dLengthToMachineAllStepsWithLeadInOut + return dTimeToMachineTotal, dLengthToMachineAllStepsWithLeadInOut end ------------------------------------------------------------------------------------------------------------- diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index d928cf1..0a6b4c2 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -370,7 +370,7 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar Cutting.dLengthToMachine = EdgeToMachine.dLength + Cutting.LeadIn.dStartAddLength + Cutting.LeadOut.dEndAddLength local b3BoxEdge = BBox3d( Cutting.ptEdge1, Cutting.ptEdge2) Cutting.dLengthOnX = b3BoxEdge:getDimX() - Cutting.dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Cutting) + Cutting.dTimeToMachine, Cutting.dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Cutting) -- lunghezza impronta lama if Cutting.bIsStartClosed and Cutting.bIsEndClosed then Cutting.dToolMarkLength = abs( min( Cutting.LeadIn.dStartAddLength, Cutting.LeadOut.dEndAddLength)) diff --git a/StrategyLibs/FACEBYCHAINSAW.lua b/StrategyLibs/FACEBYCHAINSAW.lua index 38605b4..c0e1d3a 100644 --- a/StrategyLibs/FACEBYCHAINSAW.lua +++ b/StrategyLibs/FACEBYCHAINSAW.lua @@ -215,7 +215,7 @@ function FACEBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional -- TODO fare funzione EstimatePathLength o simile Mortising.dLengthToMachine = Mortising.dEdgeLength + Mortising.LeadIn.dStartAddLength + Mortising.LeadOut.dEndAddLength Mortising.dLengthOnX = abs( dLengthToMachine * EdgeToMachine.vtN:getY()) - Mortising.dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Mortising) + Mortising.dTimeToMachine, Mortising.dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Mortising) -- area lavorata Mortising.dAreaToMachine = min( EdgeToMachine.dElevation, Mortising.dDepthToMachine) * ( min( Mortising.dEdgeLength, Mortising.dLengthToMachine + TOOLS[Mortising.nToolIndex].dDiameter)) -- geometria diff --git a/StrategyLibs/FACEBYMILL.lua b/StrategyLibs/FACEBYMILL.lua index 532ae06..e735eef 100644 --- a/StrategyLibs/FACEBYMILL.lua +++ b/StrategyLibs/FACEBYMILL.lua @@ -379,7 +379,7 @@ function FACEBYMILL.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPara Milling.dLengthToMachine = EdgeToMachine.dLength + Milling.LeadIn.dStartAddLength + Milling.LeadOut.dEndAddLength local b3BoxEdge = BBox3d( Milling.ptEdge1, Milling.ptEdge2) Milling.dLengthOnX = b3BoxEdge:getDimX() - Milling.dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetLengthToMachineAllStepsWithLeadInOut( Milling) + Milling.dTimeToMachine, Milling.dLengthToMachineAllStepsWithLeadInOut = MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Milling) -- lunghezza impronta lama if Milling.bIsStartClosed and Milling.bIsEndClosed then Milling.dToolMarkLength = abs( min( Milling.LeadIn.dStartAddLength, Milling.LeadOut.dEndAddLength))