Compare commits

..

1 Commits

Author SHA1 Message Date
andrea.villa e83f2d5b69 - In STR0005 e STR0012 aggiunta lunghezza sotto la quale cubettare in caso di configurazuione AUTO
- Aggiunta topologia VGroove-2-Through
- Aggiunti messaggi
- In lettura parametri, se il default è nil, ma da json è settato, allora si prende il valore del json
2026-07-02 10:42:05 +02:00
14 changed files with 81 additions and 43 deletions
-2
View File
@@ -1717,7 +1717,6 @@ local function GetCombinationListFromMatrix( ProcessingsOnPart, PartInfo, bRePro
SingleCombination.nRotations = 0
SingleCombination.dTotalTimeToMachine = 0
SingleCombination.dTotalQuality = 0
SingleCombination.dFeatureRotationIndex = 0
SingleCombination.dTotalCompletionIndex = 0
SingleCombination.nComplete = 0
SingleCombination.nNotComplete = 0
@@ -1793,7 +1792,6 @@ local function GetCombinationListFromMatrix( ProcessingsOnPart, PartInfo, bRePro
SingleCombination.dTotalTimeToMachine = SingleCombination.dTotalTimeToMachine + Data.dTimeToMachine
SingleCombination.dTotalQuality = SingleCombination.dTotalQuality + Data.dQuality
SingleCombination.dTotalCompletionIndex = SingleCombination.dTotalCompletionIndex + Data.dCompletionIndex
SingleCombination.dFeatureRotationIndex = SingleCombination.dFeatureRotationIndex + ( Data.dFeatureRotationIndex or 3)
SingleCombination.nComplete = SingleCombination.nComplete + EgtIf( Data.bComplete, 1, 0)
SingleCombination.nNotComplete = SingleCombination.nNotComplete + EgtIf( Data.bNotComplete, 1, 0)
SingleCombination.nNotExecute = SingleCombination.nNotExecute + EgtIf( Data.bNotApplicable, 1, 0)
+1 -1
View File
@@ -764,7 +764,7 @@ function BeamLib.LoadCustomParametersInStrategy( Proc, Part, CustomParameters, D
if DefaultStrategyParamList.ParameterList[i].sType == 'b' then
UpdatedParameters[DefaultStrategyParamList.ParameterList[i].sName] = xParameterValue == 'true' or xParameterValue == '1' or xParameterValue == true
elseif DefaultStrategyParamList.ParameterList[i].sType == 'd' then
if #DefaultStrategyParamList.ParameterList[i].sValue > 0 then
if #DefaultStrategyParamList.ParameterList[i].sValue > 0 or #xParameterValue > 0 then
UpdatedParameters[DefaultStrategyParamList.ParameterList[i].sName] = tonumber( xParameterValue)
-- stringa vuota equivale a non passare alcun valore (deciderà la strategia)
else
+2 -4
View File
@@ -788,17 +788,15 @@ function FeatureLib.CalculateCombinationsCompositeRating( CombinationsList, sMac
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:
local dQuality, dCompletion, dTime, dFeatureRotationIndex, dCoeffQuality, dCoeffCompletion, dCoeffTime
local dQuality, dCompletion, dTime, dCoeffQuality, dCoeffCompletion, dCoeffTime
dCoeffQuality, dCoeffCompletion, dCoeffTime = GetMachiningStrategyCoefficients( sMachiningStrategy)
dQuality = CombinationsList[n].dTotalQuality * dCoeffQuality
dCompletion = CombinationsList[n].dTotalCompletionIndex * dCoeffCompletion
dTime = dIndexWeightTimeToMachine * dCoeffTime
dFeatureRotationIndex = CombinationsList[n].dFeatureRotationIndex
-- TODO da verificare se meglio sommare o moltiplicare gli indici
CombinationsList[n].dTotalRating = dQuality + dCompletion + dTime + dFeatureRotationIndex
CombinationsList[n].dTotalRating = dQuality + dCompletion + dTime -- TODO da verificare se meglio sommare o moltiplicare gli indici
else
CombinationsList[n].dTotalRating = 0
end
+2
View File
@@ -321,4 +321,6 @@
1000318=Use a mill to finish the surface if split with chain saw
1000319=Allow multiple short strips
1000320=Allow multiple short strips
1000321=Length limit to drop the waste
1000322=If Cutting Strategy is set on AUTO, up to this length the software drop the waste, otherwise it'll keep attached
// ----- End -----
+2
View File
@@ -321,4 +321,6 @@
1000318=Utilizza una fresa per rifinire la superficie se tagliata con la sega a catena
1000319=Permettere codoli multipli
1000320=Permettere codoli multipli
1000321=Lunghezza limite fino alla quale lo scarto viene staccato
1000322=Se la strategia di taglio è impostata su AUTO, fino a questa lunghezza il software stacca gli scarti, altrimenti li mantiene attaccati
// ----- End -----
+2
View File
@@ -321,4 +321,6 @@
1000318=Gebruik een frees om het oppervlak na te bewerken als dit met de kettingzaag is gespleten
1000319=Sta meerdere korte verbindingsstrips toe
1000320=Sta meerdere korte verbindingsstrips toe
1000321=Maximale lengte voor het uitwerpen van het reststuk
1000322=Als de snijstrategie op AUTO staat, wordt het reststuk tot deze maximale lengte automatisch uitgeworpen; bij grotere lengtes blijft het reststuk aan het werkstuk bevestigd.
// ----- End -----
+40
View File
@@ -108,6 +108,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -151,6 +155,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -196,6 +204,10 @@
{ "sName": "Rabbet-2-Through",
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
}
]
},
@@ -224,6 +236,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -271,6 +287,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -314,6 +334,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -368,6 +392,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -455,6 +483,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -520,6 +552,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
@@ -575,6 +611,10 @@
"sImage": "ConfigStrategy\\Rabbet-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "VGroove-2-Through",
"sImage": "ConfigStrategy\\VGroove-2-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ]
},
{ "sName": "Cut-1-Through",
"sImage": "ConfigStrategy\\Cut-1-Through.png",
"StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ]
+1 -1
View File
@@ -292,7 +292,7 @@ local function GetTenonMachiningResult( Proc, Result)
else
TotalResult.dQuality = FeatureLib.GetStrategyQuality( 'FINE')
end
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.dTimeToMachine = Result.Milling.dTimeToMachine + Result.Cutting.dTimeToMachine
TotalResult.sInfo = ''
-- lavorazione incompleta
+12
View File
@@ -100,6 +100,18 @@
}
]
},
{
"sName": "dLengthLimitToDropWaste",
"sNameNge": "LEN_DROP_WASTE",
"sValue": "",
"sDescriptionShort": "Length limit to drop the waste",
"sDescriptionLong": "If Cutting Strategy is set on AUTO, up to this length the software drop the waste, otherwise it'll keep attached",
"idDescriptionShortMsg": 1000321,
"idDescriptionLongMsg": 1000322,
"sType": "d",
"sMessageId": " ",
"sMinUserLevel": "1"
},
{
"sName": "bDisableDicing",
"sNameNge": "DISABLE_DICING",
+2 -17
View File
@@ -46,20 +46,6 @@ local function IsTwoFacesCommonEdgeTooLong( Proc, Part)
return bIsTwoFacesCommonEdgeTooLong
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)
-- carico parametri da default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti)
@@ -114,8 +100,8 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
-- considerazioni necessarie a determinare se lavorare con codolo oppure no
local bKeepWasteAttached = ( Strategy.Parameters.sCuttingStrategy == 'KEEP_WASTE_ATTACHED')
local bDropWaste = ( Strategy.Parameters.sCuttingStrategy == 'DROP_WASTE')
local bFeatureHindersClamping = MachiningLib.IsFeatureHinderingClamping( Proc, Part)
local dLengthLimitToDropWaste = Strategy.Parameters.dLengthLimitToDropWaste
local bIsFeatureLong = FeatureLib.IsMachiningLong( Proc.b3Box:getDimX(), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN})
local bIsTwoFacesCommonEdgeTooLong = ( ( Proc.Topology and ( Proc.Topology.sName == 'Rabbet-2-Through' or Proc.Topology.sName == 'Bevel-2-Blind')) and IsTwoFacesCommonEdgeTooLong( Proc, Part))
@@ -123,6 +109,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
-- lavorazione con codolo
if ( Proc.nFct > 2 and bIsFeatureLong)
or ( bFeatureHindersClamping and not bDropWaste)
or ( dLengthLimitToDropWaste and Proc.b3Box:getDimX() > dLengthLimitToDropWaste)
or bKeepWasteAttached then
local BladeKeepWasteResult
@@ -139,7 +126,6 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
dQuality = BladeKeepWasteResult.dQuality
Strategy.Result.sInfo = BladeKeepWasteResult.sInfo or ''
Strategy.Result.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
end
-- lavorazione a cubetti / taglio singolo
@@ -177,7 +163,6 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
dMRRBlade = BladeKeepWasteResult.dMRR
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
dQuality = BladeKeepWasteResult.dQuality
Strategy.Result.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
end
-- lavorazione eventuale terza faccia tipo RidgeLap
+1 -1
View File
@@ -247,7 +247,7 @@ local function GetTenonMachiningResult( Proc, Result)
TotalResult.dCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100)
TotalResult.dMRR = ( Result.Milling.dMRR + Result.Cutting.dMRR) / 2
TotalResult.dQuality = FeatureLib.GetStrategyQuality( EgtIf( Strategy.Machining.bCuttingWithMill, 'STD', 'FINE'))
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.dTimeToMachine = Result.Milling.dTimeToMachine + Result.Cutting.dTimeToMachine
TotalResult.sInfo = ''
-- lavorazione incompleta
+2 -2
View File
@@ -249,7 +249,7 @@ function GetMortiseMachiningResult( Proc, Result)
sQuality = 'STD'
end
TotalResult.dQuality = FeatureLib.GetStrategyQuality( sQuality)
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.sInfo = ''
-- lavorazione mortasa completa
elseif Strategy.Machining.Milling.bIsApplicable and not( Proc.FeatureInfo.bIsFrontMortise) then
@@ -258,7 +258,7 @@ function GetMortiseMachiningResult( Proc, Result)
TotalResult.dMRR = Result.Milling.dMRR
local sQuality = EgtIf( Strategy.Machining.AntiSplint.bIsApplicable, 'BEST', 'STD')
TotalResult.dQuality = FeatureLib.GetStrategyQuality( sQuality)
TotalResult.dFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc)
TotalResult.sInfo = ''
-- lavorazione incompleta
elseif Strategy.Machining.Cutting.bIsApplicable then
+12
View File
@@ -51,6 +51,18 @@
}
]
},
{
"sName": "dLengthLimitToDropWaste",
"sNameNge": "LEN_DROP_WASTE",
"sValue": "",
"sDescriptionShort": "Length limit to drop the waste",
"sDescriptionLong": "If Cutting Strategy is set on AUTO, up to this length the software drop the waste, otherwise it'll keep attached",
"idDescriptionShortMsg": 1000321,
"idDescriptionLongMsg": 1000322,
"sType": "d",
"sMessageId": " ",
"sMinUserLevel": "1"
},
{
"sName": "sCanDamageNextPiece",
"sNameNge": "DAMAGE_NEXT_PIECE",
+2 -15
View File
@@ -18,20 +18,6 @@ local Strategy = {}
local RidgeLap = {}
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 gestire lavorazione con svuotatura
@@ -109,9 +95,11 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters)
local bKeepWasteAttached = ( Strategy.Parameters.sCuttingStrategy == 'KEEP_WASTE_ATTACHED')
local bDropWaste = ( Strategy.Parameters.sCuttingStrategy == 'DROP_WASTE')
local bFeatureHindersClamping = MachiningLib.IsFeatureHinderingClamping( NewProc, Part)
local dLengthLimitToDropWaste = Strategy.Parameters.dLengthLimitToDropWaste
-- lavorazione con codolo
if ( bFeatureHindersClamping and not bDropWaste)
or ( dLengthLimitToDropWaste and Proc.b3Box:getDimX() > dLengthLimitToDropWaste)
or bKeepWasteAttached then
local BladeKeepWasteResult
@@ -124,7 +112,6 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters)
dMRRBlade = BladeKeepWasteResult.dMRR
dCompletionPercentage = BladeKeepWasteResult.dCompletionPercentage
dQuality = BladeKeepWasteResult.dQuality
Strategy.Result.dFeatureRotationIndex = GetFeatureRotationIndex( NewProc)
-- lavorazione a cubetti facce concave
else