- STR0005 con codolo funzionante e con ordinamento lavorazioni

This commit is contained in:
luca.mazzoleni
2025-01-24 17:21:19 +01:00
parent 0c5373700e
commit 9edd39305f
+31 -7
View File
@@ -45,6 +45,33 @@ local function CompareEdges( EdgeA, EdgeB)
end
local function SortMachiningsBySegment( MachiningA, MachiningB)
if MachiningA.nFeatureSegment > MachiningB.nFeatureSegment then
return false
elseif MachiningB.nFeatureSegment > MachiningA.nFeatureSegment then
return true
-- se segmento uguale, si minimizzano i cambi di lato
else
local bIsOddSegment = ( MachiningA.nFeatureSegment % 2 ~= 0)
if MachiningA.vtToolDirection:getY() < MachiningB.vtToolDirection:getY() - 10 * GEO.EPS_SMALL then
if bIsOddSegment then
return true
else
return false
end
elseif MachiningA.vtToolDirection:getY() > MachiningB.vtToolDirection:getY() + 10 * GEO.EPS_SMALL then
if bIsOddSegment then
return false
else
return true
end
else
return false
end
end
end
function Blade.AddResult( Cutting)
table.insert( Blade.Result, Cutting)
@@ -101,11 +128,8 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
if bFeatureHindersClamping or bLeaveWasteAttached then
-- TODO Lavorazione con codolo
-- La FaceByBlade (o altra??) dovrà accettare opzionalmente di fermarsi prima (basta l'Offset??) e accettare l'utensile forzato.
-- attenzione perchè se l'inclinazione della faccia la fa finire oltre lo spigolo questo riduce il massimo calcolare (come calcolare????)
-- attenzione perchè se l'inclinazione della faccia la fa finire oltre lo spigolo questo riduce il massimo calcolare (come calcolare????)
-- il FindBlade dovrà restituire di utilizzare sempre la lama sopra se l'angolo lo permette, ma avendo un'altezza massima (da macchina) oltre cui il DownUp non sarà fattibile (evita collisioni tra asse e pezzo)
--Cutting = FaceByBlade.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalParameters)
--Cutting.AddResult( Cutting)
-- si trovano i lati da lavorare
local EdgesSorted = {}
@@ -122,7 +146,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
ToolSearchParameters.vtToolDirection = EdgesSorted[1].vtN
ToolSearchParameters.bAllowTopHead = true
ToolSearchParameters.bAllowBottomHead = true
ToolSearchParameters.bForceLongcutBlade = bForceLongcutBlade
ToolSearchParameters.bForceLongcutBlade = Strategy.Parameters.bForceLongcutBlade
local ToolInfo = MachiningLib.FindBlade( Proc, ToolSearchParameters)
Cutting.nToolIndex = ToolInfo.nToolIndex
Cutting.nType = MCH_OY.MILLING
@@ -153,7 +177,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
Blade.AddResult( Cutting)
-- secondo lato
Cutting = SlotByBlade.Make( Proc, Part, Proc.Faces[1], EdgesSorted[2], OptionalParameters)
--Blade.AddResult( Cutting)
Blade.AddResult( Cutting)
-- lavorazioni raggruppate in unica lista
Blade.Result.Sorted = {}
@@ -168,7 +192,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
Blade.Result.Sorted = MachiningLib.GetSplitMachinings( Blade.Result.Sorted, FeatureSplittingPoints, Part)
end
-- TODO ordinamento lavorazioni (se necessario)
table.sort( Blade.Result.Sorted, SortMachiningsBySegment)
-- se la lavorazione con codolo fallisce o non è possibile si proseguirà a quella con cubetti
end