- STR0005 con codolo funzionante e con ordinamento lavorazioni
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user