Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a2868c4a8 |
@@ -1717,6 +1717,7 @@ local function GetCombinationListFromMatrix( ProcessingsOnPart, PartInfo, bRePro
|
|||||||
SingleCombination.nRotations = 0
|
SingleCombination.nRotations = 0
|
||||||
SingleCombination.dTotalTimeToMachine = 0
|
SingleCombination.dTotalTimeToMachine = 0
|
||||||
SingleCombination.dTotalQuality = 0
|
SingleCombination.dTotalQuality = 0
|
||||||
|
SingleCombination.dFeatureRotationIndex = 0
|
||||||
SingleCombination.dTotalCompletionIndex = 0
|
SingleCombination.dTotalCompletionIndex = 0
|
||||||
SingleCombination.nComplete = 0
|
SingleCombination.nComplete = 0
|
||||||
SingleCombination.nNotComplete = 0
|
SingleCombination.nNotComplete = 0
|
||||||
@@ -1792,6 +1793,7 @@ local function GetCombinationListFromMatrix( ProcessingsOnPart, PartInfo, bRePro
|
|||||||
SingleCombination.dTotalTimeToMachine = SingleCombination.dTotalTimeToMachine + Data.dTimeToMachine
|
SingleCombination.dTotalTimeToMachine = SingleCombination.dTotalTimeToMachine + Data.dTimeToMachine
|
||||||
SingleCombination.dTotalQuality = SingleCombination.dTotalQuality + Data.dQuality
|
SingleCombination.dTotalQuality = SingleCombination.dTotalQuality + Data.dQuality
|
||||||
SingleCombination.dTotalCompletionIndex = SingleCombination.dTotalCompletionIndex + Data.dCompletionIndex
|
SingleCombination.dTotalCompletionIndex = SingleCombination.dTotalCompletionIndex + Data.dCompletionIndex
|
||||||
|
SingleCombination.dFeatureRotationIndex = SingleCombination.dFeatureRotationIndex + ( Data.dFeatureRotationIndex or 3)
|
||||||
SingleCombination.nComplete = SingleCombination.nComplete + EgtIf( Data.bComplete, 1, 0)
|
SingleCombination.nComplete = SingleCombination.nComplete + EgtIf( Data.bComplete, 1, 0)
|
||||||
SingleCombination.nNotComplete = SingleCombination.nNotComplete + EgtIf( Data.bNotComplete, 1, 0)
|
SingleCombination.nNotComplete = SingleCombination.nNotComplete + EgtIf( Data.bNotComplete, 1, 0)
|
||||||
SingleCombination.nNotExecute = SingleCombination.nNotExecute + EgtIf( Data.bNotApplicable, 1, 0)
|
SingleCombination.nNotExecute = SingleCombination.nNotExecute + EgtIf( Data.bNotApplicable, 1, 0)
|
||||||
|
|||||||
@@ -788,15 +788,17 @@ function FeatureLib.CalculateCombinationsCompositeRating( CombinationsList, sMac
|
|||||||
local dIndexWeightTimeToMachine = 5 - ( 4 * ( EgtClamp( CombinationsList[n].dTotalTimeToMachine / CombinationsList.dAllCombinationsTotalTime, 0, 1)))
|
local dIndexWeightTimeToMachine = 5 - ( 4 * ( EgtClamp( CombinationsList[n].dTotalTimeToMachine / CombinationsList.dAllCombinationsTotalTime, 0, 1)))
|
||||||
|
|
||||||
-- si calcolano gli indici pesati in base alla configurazione utente. Possibili parametri di configurazione:
|
-- si calcolano gli indici pesati in base alla configurazione utente. Possibili parametri di configurazione:
|
||||||
local dQuality, dCompletion, dTime, dCoeffQuality, dCoeffCompletion, dCoeffTime
|
local dQuality, dCompletion, dTime, dFeatureRotationIndex, dCoeffQuality, dCoeffCompletion, dCoeffTime
|
||||||
dCoeffQuality, dCoeffCompletion, dCoeffTime = GetMachiningStrategyCoefficients( sMachiningStrategy)
|
dCoeffQuality, dCoeffCompletion, dCoeffTime = GetMachiningStrategyCoefficients( sMachiningStrategy)
|
||||||
|
|
||||||
|
|
||||||
dQuality = CombinationsList[n].dTotalQuality * dCoeffQuality
|
dQuality = CombinationsList[n].dTotalQuality * dCoeffQuality
|
||||||
dCompletion = CombinationsList[n].dTotalCompletionIndex * dCoeffCompletion
|
dCompletion = CombinationsList[n].dTotalCompletionIndex * dCoeffCompletion
|
||||||
dTime = dIndexWeightTimeToMachine * dCoeffTime
|
dTime = dIndexWeightTimeToMachine * dCoeffTime
|
||||||
|
dFeatureRotationIndex = CombinationsList[n].dFeatureRotationIndex
|
||||||
|
|
||||||
CombinationsList[n].dTotalRating = dQuality + dCompletion + dTime -- TODO da verificare se meglio sommare o moltiplicare gli indici
|
-- TODO da verificare se meglio sommare o moltiplicare gli indici
|
||||||
|
CombinationsList[n].dTotalRating = dQuality + dCompletion + dTime + dFeatureRotationIndex
|
||||||
else
|
else
|
||||||
CombinationsList[n].dTotalRating = 0
|
CombinationsList[n].dTotalRating = 0
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ local function GetTenonMachiningResult( Proc, Result)
|
|||||||
else
|
else
|
||||||
TotalResult.dQuality = FeatureLib.GetStrategyQuality( 'FINE')
|
TotalResult.dQuality = FeatureLib.GetStrategyQuality( 'FINE')
|
||||||
end
|
end
|
||||||
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
||||||
TotalResult.dTimeToMachine = Result.Milling.dTimeToMachine + Result.Cutting.dTimeToMachine
|
TotalResult.dTimeToMachine = Result.Milling.dTimeToMachine + Result.Cutting.dTimeToMachine
|
||||||
TotalResult.sInfo = ''
|
TotalResult.sInfo = ''
|
||||||
-- lavorazione incompleta
|
-- lavorazione incompleta
|
||||||
|
|||||||
@@ -46,6 +46,20 @@ local function IsTwoFacesCommonEdgeTooLong( Proc, Part)
|
|||||||
return bIsTwoFacesCommonEdgeTooLong
|
return bIsTwoFacesCommonEdgeTooLong
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
-- si cerca di tenere la feature rivolta verso il fronte o sopra, cioè dal lato opposto la battuta
|
||||||
|
local function GetFeatureRotationIndex( Proc)
|
||||||
|
local nVoteIndex
|
||||||
|
|
||||||
|
if Proc.MainFaces.BottomFaces[1].vtN:getY() < 0 or Proc.MainFaces.BottomFaces[1].vtN:getZ() < 0 then
|
||||||
|
nVoteIndex = 2
|
||||||
|
else
|
||||||
|
nVoteIndex = 3
|
||||||
|
end
|
||||||
|
|
||||||
|
return nVoteIndex
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
|
function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
|
||||||
-- carico parametri da default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti)
|
-- carico parametri da default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti)
|
||||||
@@ -125,6 +139,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
|
|||||||
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
|
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
|
||||||
dQuality = BladeKeepWasteResult.dQuality
|
dQuality = BladeKeepWasteResult.dQuality
|
||||||
Strategy.Result.sInfo = BladeKeepWasteResult.sInfo or ''
|
Strategy.Result.sInfo = BladeKeepWasteResult.sInfo or ''
|
||||||
|
Strategy.Result.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- lavorazione a cubetti / taglio singolo
|
-- lavorazione a cubetti / taglio singolo
|
||||||
@@ -162,6 +177,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
|
|||||||
dMRRBlade = BladeKeepWasteResult.dMRR
|
dMRRBlade = BladeKeepWasteResult.dMRR
|
||||||
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
|
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
|
||||||
dQuality = BladeKeepWasteResult.dQuality
|
dQuality = BladeKeepWasteResult.dQuality
|
||||||
|
Strategy.Result.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- lavorazione eventuale terza faccia tipo RidgeLap
|
-- lavorazione eventuale terza faccia tipo RidgeLap
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ local function GetTenonMachiningResult( Proc, Result)
|
|||||||
TotalResult.dCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100)
|
TotalResult.dCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100)
|
||||||
TotalResult.dMRR = ( Result.Milling.dMRR + Result.Cutting.dMRR) / 2
|
TotalResult.dMRR = ( Result.Milling.dMRR + Result.Cutting.dMRR) / 2
|
||||||
TotalResult.dQuality = FeatureLib.GetStrategyQuality( EgtIf( Strategy.Machining.bCuttingWithMill, 'STD', 'FINE'))
|
TotalResult.dQuality = FeatureLib.GetStrategyQuality( EgtIf( Strategy.Machining.bCuttingWithMill, 'STD', 'FINE'))
|
||||||
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
||||||
TotalResult.dTimeToMachine = Result.Milling.dTimeToMachine + Result.Cutting.dTimeToMachine
|
TotalResult.dTimeToMachine = Result.Milling.dTimeToMachine + Result.Cutting.dTimeToMachine
|
||||||
TotalResult.sInfo = ''
|
TotalResult.sInfo = ''
|
||||||
-- lavorazione incompleta
|
-- lavorazione incompleta
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ function GetMortiseMachiningResult( Proc, Result)
|
|||||||
sQuality = 'STD'
|
sQuality = 'STD'
|
||||||
end
|
end
|
||||||
TotalResult.dQuality = FeatureLib.GetStrategyQuality( sQuality)
|
TotalResult.dQuality = FeatureLib.GetStrategyQuality( sQuality)
|
||||||
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
||||||
TotalResult.sInfo = ''
|
TotalResult.sInfo = ''
|
||||||
-- lavorazione mortasa completa
|
-- lavorazione mortasa completa
|
||||||
elseif Strategy.Machining.Milling.bIsApplicable and not( Proc.FeatureInfo.bIsFrontMortise) then
|
elseif Strategy.Machining.Milling.bIsApplicable and not( Proc.FeatureInfo.bIsFrontMortise) then
|
||||||
@@ -258,7 +258,7 @@ function GetMortiseMachiningResult( Proc, Result)
|
|||||||
TotalResult.dMRR = Result.Milling.dMRR
|
TotalResult.dMRR = Result.Milling.dMRR
|
||||||
local sQuality = EgtIf( Strategy.Machining.AntiSplint.bIsApplicable, 'BEST', 'STD')
|
local sQuality = EgtIf( Strategy.Machining.AntiSplint.bIsApplicable, 'BEST', 'STD')
|
||||||
TotalResult.dQuality = FeatureLib.GetStrategyQuality( sQuality)
|
TotalResult.dQuality = FeatureLib.GetStrategyQuality( sQuality)
|
||||||
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
|
||||||
TotalResult.sInfo = ''
|
TotalResult.sInfo = ''
|
||||||
-- lavorazione incompleta
|
-- lavorazione incompleta
|
||||||
elseif Strategy.Machining.Cutting.bIsApplicable then
|
elseif Strategy.Machining.Cutting.bIsApplicable then
|
||||||
|
|||||||
@@ -18,6 +18,20 @@ local Strategy = {}
|
|||||||
local RidgeLap = {}
|
local RidgeLap = {}
|
||||||
RidgeLap.Result = {}
|
RidgeLap.Result = {}
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
-- si cerca di tenere la feature rivolta verso il fronte o sopra, cioè dal lato opposto la battuta
|
||||||
|
local function GetFeatureRotationIndex( Proc)
|
||||||
|
local nVoteIndex
|
||||||
|
|
||||||
|
if Proc.MainFaces.BottomFaces[1].vtN:getY() < 0 or Proc.MainFaces.BottomFaces[1].vtN:getZ() < 0 then
|
||||||
|
nVoteIndex = 2
|
||||||
|
else
|
||||||
|
nVoteIndex = 3
|
||||||
|
end
|
||||||
|
|
||||||
|
return nVoteIndex
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
-- TODO risolvere problemi calcolo volume nullo se facce rimosse
|
-- TODO risolvere problemi calcolo volume nullo se facce rimosse
|
||||||
-- TODO gestire lavorazione con svuotatura
|
-- TODO gestire lavorazione con svuotatura
|
||||||
@@ -110,6 +124,7 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters)
|
|||||||
dMRRBlade = BladeKeepWasteResult.dMRR
|
dMRRBlade = BladeKeepWasteResult.dMRR
|
||||||
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
|
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
|
||||||
dQuality = BladeKeepWasteResult.dQuality
|
dQuality = BladeKeepWasteResult.dQuality
|
||||||
|
Strategy.Result.dFeatureRotationIndex = GetFeatureRotationIndex( NewProc)
|
||||||
|
|
||||||
-- lavorazione a cubetti facce concave
|
-- lavorazione a cubetti facce concave
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user