La scelta utensile contempla la lista parziale passata alle funzioni Find(Tool)

This commit is contained in:
andrea.villa
2025-08-25 16:52:00 +02:00
parent 43aa2f1b3b
commit a0e595e58d
+30 -1
View File
@@ -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