diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 4439dda..9e98fc6 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -229,7 +229,20 @@ function MachiningLib.GetSplitMachinings( Machinings, SplittingPoints, Part) return Machinings end - ------------------------------------------------------------------------------------------------------------- +------------------------------------------------------------------------------------------------------------- +-- funzione per cercare utensile tipo FRESA con certe caratteristiche +local function IsToolInAvailableToolList( sToolName, AvailableToolList) + local ToolFound = false + for nIndex = 1, #AvailableToolList do + if sToolName == AvailableToolList[nIndex].sName then + ToolFound = true + break + end + end + return ToolFound +end + +------------------------------------------------------------------------------------------------------------- -- funzione per cercare utensile tipo FRESA con certe caratteristiche -- TODO qui vtToolDirection è in realtà vtN function MachiningLib.FindMill( Proc, ToolSearchParameters) @@ -243,6 +256,9 @@ function MachiningLib.FindMill( Proc, ToolSearchParameters) -- se viene passato il nome, tutti gli altri sono incompatibili if ToolSearchParameters.sName and ToolSearchParameters.sName ~= TOOLS[i].sName then bIsToolCompatible = false + -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli + elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + bIsToolCompatible = false -- si cercano solo frese standard. Se utensile disegnato manualmente, si setta subito che è incompatibile elseif TOOLS[i].bIsProfiledTool then bIsToolCompatible = false @@ -376,6 +392,11 @@ function MachiningLib.FindBlade( Proc, ToolSearchParameters) bIsToolCompatible = false end + -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli + if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + bIsToolCompatible = false + end + if bIsToolCompatible then -- TODO gestire accorciamento massimo materiale per inclinazione local dCurrentResidualDepth = ToolSearchParameters.dElevation - TOOLS[i].dMaxDepth @@ -441,6 +462,9 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) -- se viene passato il nome, tutti gli altri sono incompatibili elseif ToolSearchParameters.sName and ToolSearchParameters.sName ~= TOOLS[i].sName then bIsToolCompatible = false + -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli + elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + bIsToolCompatible = false -- controlli standard elseif TOOLS[i].dDiameter > ToolSearchParameters.dMaxToolDiameter then bIsToolCompatible = false @@ -564,6 +588,11 @@ function MachiningLib.FindChainSaw( Proc, ToolSearchParameters) end end + -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli + if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + bIsToolCompatible = false + end + -- TODO nei confronti tra valori gestire tolleranze if bIsToolCompatible then if ToolSearchParameters.dElevation > 10 * GEO.EPS_SMALL and ToolSearchParameters.bExtendWithCornerRadius then