- in MachiningLib.GetTimeToMachineAllStepsWithLeadInOut migliorato calcolo tempi svuotatura
This commit is contained in:
@@ -1000,7 +1000,6 @@ function MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Machining, Part)
|
||||
end
|
||||
elseif Machining.nType == MCH_MY.POCKETING then
|
||||
-- TODO le chiamate alla pocketing vanno unificate e uniformate
|
||||
-- TODO il calcolo va aggiustato con il confronto tra volume della feature e volume svuotato perchè i percorsi reali sono trimmati fuori dal grezzo
|
||||
local ProcTm = FeatureLib.GetProcFromTrimesh( Machining.Geometry[1][1], Part)
|
||||
local dDepthToMachine = min( ProcTm.Faces[Machining.Geometry[1][2] + 1].dElevation, ( Machining.dMaxElev or ProcTm.Faces[Machining.Geometry[1][2] + 1].dElevation)) - ( max( 0, Machining.dResidualDepth or 0))
|
||||
local nSteps = ceil( ( dDepthToMachine - 50 * GEO.EPS_SMALL) / TOOLS[Machining.nToolIndex].dStep)
|
||||
@@ -1013,11 +1012,29 @@ function MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Machining, Part)
|
||||
EgtCurveCompoSetTempProp( idFaceContour, ProcTm.Faces[Machining.Geometry[1][2] + 1].Edges[i].id, 1)
|
||||
end
|
||||
end
|
||||
-- dal momento che la funzione EgtPocketing non considera il grezzo, nei casi ottimizzati si deve correggere l'offset
|
||||
local idTestCurve = EgtCopyGlob( idFaceContour, nAddGroupId )
|
||||
local bIsOptimizedPocketing = ( TOOLS[Machining.nToolIndex].dDiameter > TOOLS[Machining.nToolIndex].dSideStep - 10 * GEO.EPS_SMALL)
|
||||
and EgtOffsetCurve( idTestCurve, -TOOLS[Machining.nToolIndex].dDiameter / 2 - 10 * GEO.EPS_SMALL)
|
||||
if not bIsOptimizedPocketing then
|
||||
local dOffset = TOOLS[Machining.nToolIndex].dDiameter / 2 + 10 * GEO.EPS_SMALL
|
||||
if TOOLS[Machining.nToolIndex].dSideStep < TOOLS[Machining.nToolIndex].dDiameter / 2 - 10 * GEO.EPS_SMALL then
|
||||
dOffset = TOOLS[Machining.nToolIndex].dDiameter - TOOLS[Machining.nToolIndex].dSideStep
|
||||
end
|
||||
EgtOffsetCurve( idFaceContour, dOffset)
|
||||
-- si settano tutti i lati chiusi per la curva offsettata
|
||||
local _, nFaceCountourCurveCount = EgtCurveDomain( idFaceContour)
|
||||
for i = 1, nFaceCountourCurveCount do
|
||||
EgtCurveCompoSetTempProp( idFaceContour, i - 1, 0)
|
||||
end
|
||||
end
|
||||
-- calcolo percorso di svuotatura replicando il calcolo che fa la svuotatura
|
||||
local idPocketingPath = EgtPocketing( idFaceContour, TOOLS[Machining.nToolIndex].dDiameter / 2, TOOLS[Machining.nToolIndex].dSideStep, 0, Machining.nSubType, true, nAddGroupId)
|
||||
local dPocketingPathLength = EgtCurveLength( idPocketingPath)
|
||||
-- calcolo lunghezze e tempi totali
|
||||
if dPocketingPathLength then
|
||||
dLengthToMachineAllStepsWithLeadInOut = dPocketingPathLength * nSteps
|
||||
-- TODO da aggiungere correzione volume effettivamente lavorato
|
||||
dTimeToMachineTotal = dLengthToMachineAllStepsWithLeadInOut / dToolFeed
|
||||
-- se percorso non calcolato, si settano dati molto alti
|
||||
else
|
||||
@@ -1027,6 +1044,7 @@ function MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Machining, Part)
|
||||
-- le geometrie create si settano da cancellare
|
||||
EgtSetLevel( idFaceContour, GDB_LV.TEMP)
|
||||
EgtSetLevel( idPocketingPath, GDB_LV.TEMP)
|
||||
EgtSetLevel( idTestCurve, GDB_LV.TEMP)
|
||||
else
|
||||
error( 'GetTimeToMachineAllStepsWithLeadInOut : unknown machining type')
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user