From 232751fd5d58476df33bf18068f7890f83a9c848 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Thu, 17 Jul 2025 13:00:33 +0200 Subject: [PATCH 1/2] =?UTF-8?q?In=20STR0011:=20=20=20=20=20=20=20-=20aggiu?= =?UTF-8?q?nta=20possibilit=C3=A0=20di=20forare=20da=20due=20lati=20=20=20?= =?UTF-8?q?=20=20=20=20-=20aggiunta=20gestione=20tolleranza=20su=20diametr?= =?UTF-8?q?o=20foro=20Altre=20piccole=20modifiche?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/BeamExec.lua | 2 +- LuaLibs/Logs.lua | 1 + LuaLibs/MachiningLib.lua | 14 ++-- Strategies/Standard/STR0011/STR0011.json | 35 ++++++--- Strategies/Standard/STR0011/STR0011.lua | 92 +++++++++++++++++++----- 5 files changed, 112 insertions(+), 32 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 37d9357..12f16d8 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1581,7 +1581,7 @@ function BeamExec.ProcessMachinings( PARTS) EgtOutLog( ' *** AddMachinings ***', 1) -- se la posizione iniziale non è calcolata, significa che non ci sono feature da eseguire. Solo taglio testa/coda - if not MatrixResult.nInitialPosition then + if not MatrixResult.nInitialPosition or not MACHININGS.Info.nHeadCutRotation or not MACHININGS.Info.nSplitCutRotation then MatrixResult.nInitialPosition = 1 MACHININGS.Info.nHeadCutRotation = 1 MACHININGS.Info.nSplitCutRotation = 1 diff --git a/LuaLibs/Logs.lua b/LuaLibs/Logs.lua index 76bdfa7..c142c12 100644 --- a/LuaLibs/Logs.lua +++ b/LuaLibs/Logs.lua @@ -19,6 +19,7 @@ function Logs.WriteFeaturesLog( ProcessingsOnPart, PartInfo) if nCycle == 1 then EgtOutLog( ' === === === === === === === === === === FEATURES STRATEGIES === === === === === === === === === === === ===') else + EgtOutLog( ' === === === === === === === === === === === === === === === === === === === === === === === === === === ===') EgtOutLog( ' === === === === === === === === FEATURES STRATEGIES PIECE INVERTED === === === === === === === === === ===') end EgtOutLog( ' Feature ID | BTL POSITION | 90 ROTATION | 180 ROTATION | 270 ROTATION |') diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 41f3f4d..44e3294 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -424,10 +424,10 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) ToolSearchParameters.dToolDiameter = Proc.FeatureInfo.dDrillDiam or 0 end if not ToolSearchParameters.dMaxToolDiameter then - ToolSearchParameters.dMaxToolDiameter = ToolSearchParameters.dToolDiameter + 100 * GEO.EPS_SMALL + ToolSearchParameters.dMaxToolDiameter = ToolSearchParameters.dToolDiameter + ( ToolSearchParameters.dDiameterTolerance or ( 100 * GEO.EPS_SMALL)) end if not ToolSearchParameters.dMinToolDiameter then - ToolSearchParameters.dMinToolDiameter = ToolSearchParameters.dToolDiameter - 100 * GEO.EPS_SMALL + ToolSearchParameters.dMinToolDiameter = ToolSearchParameters.dToolDiameter - ( ToolSearchParameters.dDiameterTolerance or ( 100 * GEO.EPS_SMALL)) end for i = 1, #TOOLS do @@ -462,7 +462,6 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) -- TODO implementare le funzioni di Tool Collision Avoidance (vedi wiki e FacesBysaw -> CalcLeadInOutPerpGeom) -- TODO considerare anche il caso in cui lo stelo sia più grande del diametro utensile - -- TODO nei confronti tra valori gestire tolleranze -- calcolo riduzione per non toccare con ToolHolder / Motore if ToolEntryAngle.dValue > 0 and ToolEntryAngle.dValue < 90 then dCurrentMaxMatReduction = dCurrentMaxMatReduction / ToolEntryAngle.dSin + ( ( dDimObjToCheck - TOOLS[i].dDiameter) / 2) / ToolEntryAngle.dTan @@ -486,8 +485,8 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) elseif TOOLS[i].SetupInfo.bToolOnAggregate == TOOLS[nBestToolIndex].SetupInfo.bToolOnAggregate then -- se diametro diverso if abs( TOOLS[i].dDiameter - TOOLS[nBestToolIndex].dDiameter) > 10 * GEO.EPS_SMALL then - -- si sceglie utensile dello stesso diametro del foro da lavorare - if abs( TOOLS[i].dDiameter - ToolSearchParameters.dToolDiameter) < 10 * GEO.EPS_SMALL then + -- si sceglie utensile con diametro più simile al foro da lavorare + if abs( TOOLS[i].dDiameter - ToolSearchParameters.dToolDiameter) < abs( TOOLS[nBestToolIndex].dDiameter - ToolSearchParameters.dToolDiameter) then nBestToolIndex = i dBestToolResidualDepth = dCurrentResidualDepth -- oppure utensile con performance maggiore @@ -516,6 +515,11 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) ToolInfo.nToolIndex = nBestToolIndex ToolInfo.dResidualDepth = dBestToolResidualDepth + -- si salva se la punta ha lo stesso diametro del foro + if nBestToolIndex and TOOLS[nBestToolIndex].dDiameter - ToolSearchParameters.dToolDiameter > 100 * GEO.EPS_SMALL then + ToolInfo.bDrillIsExactDiameter = true + end + return ToolInfo end diff --git a/Strategies/Standard/STR0011/STR0011.json b/Strategies/Standard/STR0011/STR0011.json index b1f90f9..51fae7a 100644 --- a/Strategies/Standard/STR0011/STR0011.json +++ b/Strategies/Standard/STR0011/STR0011.json @@ -13,14 +13,33 @@ "sMinUserLevel": "1" }, { - "sName": "dCanUseMillToDrill", - "sNameNge": "USEMILL", - "sValue": "false", - "sDescriptionShort": "Can use mil to drill", - "sDescriptionLong": "Can use mil to drill", - "sType": "b", - "sMessageId": " ", - "sMinUserLevel": "1" + "sName": "sDrillingMode", + "sNameNge": "DRILLING_MODE", + "sValue": "AUTO", + "sDescriptionShort": "Cutting Strategy", + "sDescriptionLong": "", + "sType": "combo", + "sMinUserLevel": "1", + "Choices": [ + { + "sValue": "AUTO", + "sDescriptionShort": "Automatic", + "sDescriptionLong": "", + "sMessageId": "" + }, + { + "sValue": "PREFER_ONE", + "sDescriptionShort": "Preferred machining from one side only", + "sDescriptionLong": "", + "sMessageId": "" + }, + { + "sValue": "FORCE_TWO", + "sDescriptionShort": "Force machining from two sides", + "sDescriptionLong": "", + "sMessageId": "" + } + ] } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0011/STR0011.lua b/Strategies/Standard/STR0011/STR0011.lua index 071e2ca..6559591 100644 --- a/Strategies/Standard/STR0011/STR0011.lua +++ b/Strategies/Standard/STR0011/STR0011.lua @@ -14,16 +14,13 @@ local FeatureLib = require( 'FeatureLib') local STR0011 = {} local Strategy = {} +-- TODO Da fare completamente gestione foratura doppia con 2 teste ------------------------------------------------------------------------------------------------------------- function GetDrillingStrategy( Proc, Part) local ToolSearchParameters = {} local Machining = {} - -- TODO SISTEMARE!! Gestione foratura doppia con 2 teste da fare - -- TODO se non trova foratura, cercare tra le frese - -- TODO se foratura non completa, provare a cercare tra le frese - -- se lavorazione orizzontale if Proc.FeatureInfo.bIsDrillHorizontal then local bDouble = false @@ -33,6 +30,7 @@ function GetDrillingStrategy( Proc, Part) ToolSearchParameters.dElevation = Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion ToolSearchParameters.dToolDiameter = Proc.FeatureInfo.dDrillDiam + ToolSearchParameters.dDiameterTolerance = Strategy.Parameters.dDiameterTolerance Drilling.ToolInfo = {} Drilling.ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters) if Drilling.ToolInfo.nToolIndex then @@ -40,26 +38,30 @@ function GetDrillingStrategy( Proc, Part) Drilling.nToolIndex = Drilling.ToolInfo.nToolIndex Drilling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling.dStep = TOOLS[Drilling.ToolInfo.nToolIndex].dStep - -- se lavorazione non completa - if Drilling.ToolInfo.dResidualDepth > 10 * GEO.EPS_SMALL then + -- se lavorazione non completa o se si deve forare dai due lati + if Proc.FeatureInfo.bIsDrillOpen and + ( Drilling.ToolInfo.dResidualDepth > 10 * GEO.EPS_SMALL or Strategy.Parameters.sDrillingMode == 'FORCE_TWO' or Strategy.Parameters.sDrillingMode == 'AUTO') then bDouble = true local dHalfDrill = ( Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP) / 2 Drilling.sDepth = min( dHalfDrill, Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth) Drilling.vtFaceNormal = Proc.FeatureInfo.vtDrillExtrusion Drilling.bInvert = false + Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion table.insert( Machining, Drilling) local Drilling2 = BeamLib.TableCopyDeep( Drilling) Drilling2.bInvert = true + Drilling2.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion table.insert( Machining, Drilling2) else Drilling.sDepth = 'TH' Drilling.vtFaceNormal = Proc.FeatureInfo.vtDrillExtrusion Drilling.bInvert = false + Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion table.insert( Machining, Drilling) end -- voto - if Drilling.ToolInfo.dResidualDepth < 0 or Proc.FeatureInfo.dDrillLen / 2 > Drilling.ToolInfo.dResidualDepth then + if Drilling.ToolInfo.dResidualDepth < 0 or ( Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP) / 2 > Drilling.ToolInfo.dResidualDepth then Strategy.Result.sStatus = 'Completed' Strategy.Result.nCompletionIndex = 5 Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo or Machining[2].ToolInfo) @@ -83,22 +85,56 @@ function GetDrillingStrategy( Proc, Part) ToolSearchParameters.dElevation = Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion ToolSearchParameters.dToolDiameter = Proc.FeatureInfo.dDrillDiam + ToolSearchParameters.dDiameterTolerance = Strategy.Parameters.dDiameterTolerance Drilling.ToolInfo = {} Drilling.ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters) -- si cerca utensile 2 local Drilling2 = MachiningLib.InitMachiningParameters( MCH_MY.DRILLING) - ToolSearchParameters = {} - ToolSearchParameters.dElevation = Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP - ToolSearchParameters.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion Drilling2.ToolInfo = {} - Drilling2.ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters) + if Proc.FeatureInfo.bIsDrillOpen then + ToolSearchParameters = {} + ToolSearchParameters.dElevation = Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP + ToolSearchParameters.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion + ToolSearchParameters.dDiameterTolerance = Strategy.Parameters.dDiameterTolerance + Drilling2.ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters) + end + + -- se possono lavorare entrambi e si deve fare lavorazione doppia e si riesce a completare + if Drilling.ToolInfo.nToolIndex and Drilling2.ToolInfo.nToolIndex and + ( Strategy.Parameters.sDrillingMode == 'FORCE_TWO' or Strategy.Parameters.sDrillingMode == 'AUTO') and + Drilling.ToolInfo.dResidualDepth + Drilling2.ToolInfo.dResidualDepth < Proc.FeatureInfo.dDrillLen then + + local dExtraDrill = ( Proc.FeatureInfo.dDrillLen - BeamData.MILL_OVERLAP - ( Drilling.ToolInfo.dResidualDepth + Drilling2.ToolInfo.dResidualDepth)) / 2 + Drilling.nType = MCH_MY.DRILLING + Drilling.nToolIndex = Drilling.ToolInfo.nToolIndex + Drilling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} + Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion + Drilling.sDepth = Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth - dExtraDrill + table.insert( Machining, Drilling) + + Drilling2.nType = MCH_MY.DRILLING + Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex + Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} + Drilling2.bInvert = true + Drilling2.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion + Drilling2.sDepth = Proc.FeatureInfo.dDrillLen - Drilling2.ToolInfo.dResidualDepth - dExtraDrill + table.insert( Machining, Drilling2) + + -- voto + Strategy.Result.sStatus = 'Completed' + Strategy.Result.nCompletionIndex = 5 + Strategy.Result.sInfo = '' + Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) + Strategy.Result.nQuality = FeatureLib.GetFeatureQuality( 'Drill') -- se utensile 1 esegue completamente - if Drilling.ToolInfo.nToolIndex and Drilling.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL then + elseif Drilling.ToolInfo.nToolIndex and Drilling.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL and + ( Strategy.Parameters.sDrillingMode == 'PREFER_ONE' or ( not Drilling2.ToolInfo.nToolIndex and Strategy.Parameters.sDrillingMode == 'AUTO') or not Proc.FeatureInfo.bIsDrillOpen) then Drilling.sDepth = 'TH' Drilling.nType = MCH_MY.DRILLING Drilling.nToolIndex = Drilling.ToolInfo.nToolIndex Drilling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} + Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion table.insert( Machining, Drilling) -- voto Strategy.Result.sStatus = 'Completed' @@ -107,12 +143,14 @@ function GetDrillingStrategy( Proc, Part) Strategy.Result.nQuality = FeatureLib.GetFeatureQuality( 'Drill') Strategy.Result.sInfo = '' -- se utensile 2 esegue completamente - elseif Drilling2.ToolInfo.nToolIndex and Drilling2.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL then + elseif Drilling2.ToolInfo.nToolIndex and Drilling2.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL and + ( Strategy.Parameters.sDrillingMode == 'PREFER_ONE' or ( not Drilling.ToolInfo.nToolIndex and Strategy.Parameters.sDrillingMode == 'AUTO')) then Drilling2.sDepth = 'TH' Drilling2.nType = MCH_MY.DRILLING - Drilling2.nToolIndex = Drilling.ToolInfo.nToolIndex + Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling2.bInvert = true + Drilling2.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion table.insert( Machining, Drilling2) -- voto Strategy.Result.sStatus = 'Completed' @@ -125,12 +163,16 @@ function GetDrillingStrategy( Proc, Part) Drilling.nType = MCH_MY.DRILLING Drilling.nToolIndex = Drilling.ToolInfo.nToolIndex Drilling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} + Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion + Drilling.sDepth = Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth table.insert( Machining, Drilling) Drilling2.nType = MCH_MY.DRILLING - Drilling2.nToolIndex = Drilling.ToolInfo.nToolIndex + Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling2.bInvert = true + Drilling2.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion + Drilling2.sDepth = Proc.FeatureInfo.dDrillLen - Drilling2.ToolInfo.dResidualDepth table.insert( Machining, Drilling2) if Drilling.ToolInfo.dResidualDepth + Drilling2.ToolInfo.dResidualDepth < Proc.FeatureInfo.dDrillLen then Strategy.Result.sStatus = 'Not-Completed' @@ -147,11 +189,13 @@ function GetDrillingStrategy( Proc, Part) Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) Strategy.Result.nQuality = FeatureLib.GetFeatureQuality( 'Drill') -- se utensile 1 non completo - elseif Drilling.ToolInfo.nToolIndex then + elseif Drilling.ToolInfo.nToolIndex and ( Strategy.Parameters.sDrillingMode ~= 'FORCE_TWO' or Proc.FeatureInfo.bIsDrillOpen) then Drilling.sDepth = Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth Drilling.nType = MCH_MY.DRILLING Drilling.nToolIndex = Drilling.ToolInfo.nToolIndex Drilling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} + Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion + Drilling.sDepth = Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth table.insert( Machining, Drilling) -- voto Strategy.Result.sStatus = 'Not-Completed' @@ -162,12 +206,14 @@ function GetDrillingStrategy( Proc, Part) Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) Strategy.Result.nQuality = FeatureLib.GetFeatureQuality( 'Drill') -- se utensile 2 non completo - elseif Drilling2.ToolInfo.nToolIndex then + elseif Drilling2.ToolInfo.nToolIndex and Strategy.Parameters.sDrillingMode ~= 'FORCE_TWO' then Drilling2.sDepth = Proc.FeatureInfo.dDrillLen - Drilling2.ToolInfo.dResidualDepth Drilling2.nType = MCH_MY.DRILLING - Drilling2.nToolIndex = Drilling.ToolInfo.nToolIndex + Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling2.bInvert = true + Drilling2.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion + Drilling2.sDepth = Proc.FeatureInfo.dDrillLen - Drilling2.ToolInfo.dResidualDepth table.insert( Machining, Drilling2) -- voto Strategy.Result.sStatus = 'Not-Completed' @@ -177,6 +223,16 @@ function GetDrillingStrategy( Proc, Part) Strategy.Result.sInfo = 'Machining not complete, left ' .. tostring( 100 - ceil( dMachinedPrercentage)) .. '%' Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) Strategy.Result.nQuality = FeatureLib.GetFeatureQuality( 'Drill') + else + local sMessage + -- se non sono state trovate punte + if not Drilling.ToolInfo.nToolIndex and not Drilling2.ToolInfo.nToolIndex then + sMessage = 'Drillbit not found' + -- se son state trovate delle punte, ma non è stato possibile forare da entrambe le parti + elseif Strategy.Parameters.sDrillingMode == 'FORCE_TWO' then + sMessage = "Not possible to force machining from both sides. Please change drilling mode to AUTO" + end + Strategy.Result = FeatureLib.GetStrategyResultNotApplicable( sMessage) end end return Machining, Strategy.Result From a0d44ed1e4eeadf160046ee3eb9b5851394b296f Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Thu, 17 Jul 2025 16:23:01 +0200 Subject: [PATCH 2/2] -- Corretta gestione rotazioni in caso di feature da eseguire ma applicazione non andata a buon fine - Piccole correzioni a STR0011 --- LuaLibs/BeamExec.lua | 7 ++++++- Strategies/Standard/STR0011/STR0011.json | 2 +- Strategies/Standard/STR0011/STR0011.lua | 6 +----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 12f16d8..9c29ff0 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1581,7 +1581,7 @@ function BeamExec.ProcessMachinings( PARTS) EgtOutLog( ' *** AddMachinings ***', 1) -- se la posizione iniziale non è calcolata, significa che non ci sono feature da eseguire. Solo taglio testa/coda - if not MatrixResult.nInitialPosition or not MACHININGS.Info.nHeadCutRotation or not MACHININGS.Info.nSplitCutRotation then + if not MatrixResult.nInitialPosition then MatrixResult.nInitialPosition = 1 MACHININGS.Info.nHeadCutRotation = 1 MACHININGS.Info.nSplitCutRotation = 1 @@ -1597,6 +1597,11 @@ function BeamExec.ProcessMachinings( PARTS) -- esegue le strategie migliori che ha precedentemente scelto e salva le lavorazioni nella lista globale bAllStrategiesApplied = false MACHININGS, bAllStrategiesApplied = CalculateMachinings( vProc, PARTS[nPart], MatrixResult.nInitialPosition) + -- se non sono sono settate le rotazioni di lavorazione di testa e coda, significa che le feature da eseguire non sono state eseguite per qualche problema. Si forza rotazione 1 + if MACHININGS.Info.nHeadCutRotation or MACHININGS.Info.nSplitCutRotation then + MACHININGS.Info.nHeadCutRotation = 1 + MACHININGS.Info.nSplitCutRotation = 1 + end end -- salvo sul PART la posizione di partenza che è stata scelta PARTS[nPart].nInitialPosition = MatrixResult.nInitialPosition diff --git a/Strategies/Standard/STR0011/STR0011.json b/Strategies/Standard/STR0011/STR0011.json index 51fae7a..1a5192b 100644 --- a/Strategies/Standard/STR0011/STR0011.json +++ b/Strategies/Standard/STR0011/STR0011.json @@ -16,7 +16,7 @@ "sName": "sDrillingMode", "sNameNge": "DRILLING_MODE", "sValue": "AUTO", - "sDescriptionShort": "Cutting Strategy", + "sDescriptionShort": "Drilling Mode", "sDescriptionLong": "", "sType": "combo", "sMinUserLevel": "1", diff --git a/Strategies/Standard/STR0011/STR0011.lua b/Strategies/Standard/STR0011/STR0011.lua index 6559591..fe6d6c9 100644 --- a/Strategies/Standard/STR0011/STR0011.lua +++ b/Strategies/Standard/STR0011/STR0011.lua @@ -105,14 +105,12 @@ function GetDrillingStrategy( Proc, Part) Drilling.ToolInfo.dResidualDepth + Drilling2.ToolInfo.dResidualDepth < Proc.FeatureInfo.dDrillLen then local dExtraDrill = ( Proc.FeatureInfo.dDrillLen - BeamData.MILL_OVERLAP - ( Drilling.ToolInfo.dResidualDepth + Drilling2.ToolInfo.dResidualDepth)) / 2 - Drilling.nType = MCH_MY.DRILLING Drilling.nToolIndex = Drilling.ToolInfo.nToolIndex Drilling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion Drilling.sDepth = Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth - dExtraDrill table.insert( Machining, Drilling) - Drilling2.nType = MCH_MY.DRILLING Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling2.bInvert = true @@ -146,7 +144,6 @@ function GetDrillingStrategy( Proc, Part) elseif Drilling2.ToolInfo.nToolIndex and Drilling2.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL and ( Strategy.Parameters.sDrillingMode == 'PREFER_ONE' or ( not Drilling.ToolInfo.nToolIndex and Strategy.Parameters.sDrillingMode == 'AUTO')) then Drilling2.sDepth = 'TH' - Drilling2.nType = MCH_MY.DRILLING Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling2.bInvert = true @@ -167,7 +164,6 @@ function GetDrillingStrategy( Proc, Part) Drilling.sDepth = Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth table.insert( Machining, Drilling) - Drilling2.nType = MCH_MY.DRILLING Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling2.bInvert = true @@ -208,7 +204,6 @@ function GetDrillingStrategy( Proc, Part) -- se utensile 2 non completo elseif Drilling2.ToolInfo.nToolIndex and Strategy.Parameters.sDrillingMode ~= 'FORCE_TWO' then Drilling2.sDepth = Proc.FeatureInfo.dDrillLen - Drilling2.ToolInfo.dResidualDepth - Drilling2.nType = MCH_MY.DRILLING Drilling2.nToolIndex = Drilling2.ToolInfo.nToolIndex Drilling2.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, 0}} Drilling2.bInvert = true @@ -255,6 +250,7 @@ function STR0011.Make( bAddMachining, Proc, Part, CustomParameters) if bAddMachining and Strategy.Result.sStatus ~= 'Not-Applicable' then -- aggiunge lavorazione for j = 1, #Strategy.Machinings do + Strategy.Machinings[j].Steps.dStep = TOOLS[Strategy.Machinings[j].ToolInfo.nToolIndex].dStep bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Strategy.Machinings[j]) end end