diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 79ad799..38ca696 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -153,6 +153,11 @@ function BeamExec.GetToolsFromDB() Tool.nDouble = EgtGetValInNotes( Tool.sUserNotes, 'DOUBLE', 'd') Tool.bIsProfiledTool = not EgtTdbIsCurrToolStandardDraw() + -- TODO per capire se ToolHolder è flottante bisogna leggere nota TYPE='Float' su ToolHolder. Serve funzione + -- info per utensile su ToolHolder flottante + Tool.dOverHang = EgtGetValInNotes( Tool.sUserNotes, 'TOOL_OVERHANG', 'd') or 0 + Tool.bToolOnFloatingTH = Tool.dOverHang > 0 + -- lettura parametri non comuni ( famiglia DRILLBIT non ha parametri specifici) if sToolFamily ~= 'DRILLBIT' then Tool.dThickness = EgtTdbGetCurrToolParam( MCH_TP.THICK) diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 7bdce43..1ce20c2 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -890,17 +890,18 @@ function BeamLib.BinaryToDecimal( dNumber) local sNumberToConvert = tostring( dNumber) local dResult = 0 local k = 0 - + for i = #sNumberToConvert, 1, -1 do k = k + 1 - local n = string.sub(sNumberToConvert, k, k) - dResult = dResult + n*(2^(i-1)) + local n = string.sub( sNumberToConvert, k, k) + dResult = dResult + n * ( 2^( i-1)) end - + return dResult end ------------------------------------------------------------------------------------------------------------- +-- TODO si può sostituire con funzione EgtNumToBitString function BeamLib.DecimalToBinary( dNumber) local sNumberToConvert = tostring( dNumber) local n = sNumberToConvert @@ -908,12 +909,12 @@ function BeamLib.DecimalToBinary( dNumber) local sResult = "" for i = sNumberToConvert, 0, -1 do - local q = math.modf(n) - n = n/2 - local b = q%2 - table.insert(tmp, b) + local q = math.modf( n) + n = n / 2 + local b = q % 2 + table.insert( tmp, b) - if (q == 1) then + if ( q == 1) then break end end @@ -921,7 +922,7 @@ function BeamLib.DecimalToBinary( dNumber) for i = #tmp, 1, -1 do sResult = sResult..tmp[i] end - + return tonumber( sResult) end diff --git a/Strategies/Standard/STR0014/STR0014.lua b/Strategies/Standard/STR0014/STR0014.lua index ee2b7e0..8f5c9cf 100644 --- a/Strategies/Standard/STR0014/STR0014.lua +++ b/Strategies/Standard/STR0014/STR0014.lua @@ -24,6 +24,8 @@ local function GetSCC( Machining) if TOOLS[Machining.nToolIndex].SetupInfo.bToolOnAggregate then nSCC = MCH_SCC.ADIR_NEAR + elseif TOOLS[Machining.nToolIndex].SetupInfo.nBlockedSCC then + nSCC = TOOLS[Machining.nToolIndex].SetupInfo.nBlockedSCC elseif Machining.vtToolDirection:getY() <= 0 then nSCC = MCH_SCC.ADIR_YM else @@ -96,7 +98,7 @@ function STR0014.Make( bAddMachining, Proc, Part, CustomParameters) Strategy.Machining.nSCC = GetSCC( Strategy.Machining) Strategy.Machining.nType = MCH_MY.MILLING - Strategy.Machining.sDepth = EgtClamp( Strategy.Parameters.dMachiningDepth, -1, 5) + Strategy.Machining.sDepth = EgtClamp( Strategy.Parameters.dMachiningDepth, -1, TOOLS[Strategy.Machining.nToolIndex].dMaxMaterial) Strategy.Machining.nWorkside = MCH_MILL_WS.CENTER -- LeadIn / LeadOut @@ -104,7 +106,19 @@ function STR0014.Make( bAddMachining, Proc, Part, CustomParameters) Strategy.Machining.LeadOut = {} Strategy.Machining.LeadIn.nType = MCH_MILL_LI.NONE Strategy.Machining.LeadOut.nType = MCH_MILL_LI.NONE + + -- se è una penna, si limita la lavorazione per evitare di partire fuori dal grezzo + if ToolSearchParameters.sMillShape == 'PEN' then + Strategy.Machining.LeadIn.dStartAddLength = -20 + Strategy.Machining.LeadOut.dEndAddLength = -20 + end + -- TODO gestire meglio + -- se utensile montato su aggregato flottante + if TOOLS[Strategy.Machining.nToolIndex].bToolOnFloatingTH then + Strategy.Machining.dMaxElev = Strategy.Parameters.dMachiningDepth + Strategy.Machining.dLongitudinalOffset = -5 + end -- stessi parametri cambia solo al geometria for i = 1, #Proc.FeatureInfo.AdditionalGeometries do local AuxId = Proc.id + Proc.FeatureInfo.AdditionalGeometries[i]