- in BeamExec completata la funzione PrepareMachiningsForSorting
- in FaceData la lunghezza rispetto a X è ora in valore assoluto - in MachiningLib -> GetSplitMachinings aggiunta la scrittura del centro della lavorazione - in STR0003, STR0004, SlotByChainSaw e SlotByBLade nSegment diventa nFeatureSegment per distinguerla da nPartSegment
This commit is contained in:
+30
-9
@@ -982,19 +982,20 @@ local function CalculateMachinings( vProc, Part)
|
||||
bAreAllApplyOk, _ = StrategyScript.Make( true, Proc, Part, Proc.ChosenStrategy.Parameters)
|
||||
end
|
||||
end
|
||||
|
||||
return MACHININGS
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
local function PrepareMachiningsForSorting( )
|
||||
local function PrepareMachiningsForSorting( Part)
|
||||
local nFeatureInternalIndex = 1
|
||||
for i = 1, #MACHININGS do
|
||||
local MachiningCurrent = MACHININGS[i].Machining
|
||||
local ProcIdCurrent = MACHININGS[i].Proc.id
|
||||
local ProcCurrent = MACHININGS[i].Proc
|
||||
|
||||
-- conversione campo sStage in nStage, numerico e ordinabile
|
||||
if not MachiningCurrent.sStage then
|
||||
MachiningCurrent.sStage = ''
|
||||
if not MachiningCurrent.sStage or MachiningCurrent.sStage == '' then
|
||||
MachiningCurrent.sStage = 'Middle'
|
||||
end
|
||||
if MachiningCurrent.sStage == 'Head' then
|
||||
MachiningCurrent.nStage = 1
|
||||
@@ -1008,8 +1009,8 @@ local function PrepareMachiningsForSorting( )
|
||||
|
||||
if i > 1 then
|
||||
local MachiningPrevious = MACHININGS[i - 1].Machining
|
||||
local ProcIdPrevious = MACHININGS[i - 1].Proc.id
|
||||
if ProcIdCurrent == ProcIdPrevious then
|
||||
local ProcPrevious = MACHININGS[i - 1].Proc
|
||||
if ProcCurrent.id == ProcPrevious.id then
|
||||
-- nStage devono essere sempre crescenti nella stessa feature
|
||||
if MachiningCurrent.nStage < MachiningPrevious.nStage then
|
||||
MachiningCurrent.nStage = MachiningPrevious.nStage
|
||||
@@ -1024,16 +1025,35 @@ local function PrepareMachiningsForSorting( )
|
||||
|
||||
-- se fase di lavoro standard, assegnazione dello spezzone
|
||||
if MachiningCurrent.nStage == 2 then
|
||||
|
||||
if not MachiningCurrent.ptCenter then
|
||||
MachiningCurrent.ptCenter = Point3d( ProcCurrent.b3Box:getCenter():getX(), 0, 0)
|
||||
end
|
||||
local nParts = #Part.SplittingPoints + 1
|
||||
local dPartMinX = Part.b3Part:getMin():getX()
|
||||
local dPartMaxX = Part.b3Part:getMax():getX()
|
||||
for j = 1, nParts do
|
||||
local dNextSplitX = dPartMinX
|
||||
local dPreviousSplitX = dPartMaxX
|
||||
if j ~= 1 then
|
||||
dPreviousSplitX = Part.SplittingPoints[j - 1]:getX()
|
||||
elseif j ~= nParts then
|
||||
dNextSplitX = Part.SplittingPoints[j]:getX()
|
||||
end
|
||||
if MachiningCurrent.ptCenter:getX() > dNextSplitX - 10 * GEO.EPS_SMALL and MachiningCurrent.ptCenter:getX() < dPreviousSplitX + 10 * GEO.EPS_SMALL then
|
||||
MachiningCurrent.nPartSegment = j
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return MACHININGS
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
local function SortMachiningsBySegment( MachiningA, MachiningB)
|
||||
if MachiningA.Machining.nSegment > MachiningB.Machining.nSegment then
|
||||
if MachiningA.Machining.nFeatureSegment > MachiningB.Machining.nFeatureSegment then
|
||||
return false
|
||||
elseif MachiningB.Machining.nSegment > MachiningA.Machining.nSegment then
|
||||
elseif MachiningB.Machining.nFeatureSegment > MachiningA.Machining.nFeatureSegment then
|
||||
return true
|
||||
end
|
||||
|
||||
@@ -1402,6 +1422,7 @@ function BeamExec.ProcessMachinings( PROCESSINGS, PARTS)
|
||||
MACHININGS = CalculateMachinings( vProc, PARTS[nPart])
|
||||
|
||||
-- TODO riordinare lavorazioni ottimizzando cambio utensile/spezzone ecc..., mantenendo dipendenze definite prima
|
||||
MACHININGS = PrepareMachiningsForSorting( PARTS[nPart])
|
||||
--table.sort( MACHININGS, SortMachinings)
|
||||
-- MACHININGS = OrderMachining( MACHININGS, PARTS[nPart])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user