From 7eff64d3bb58b2fff17fc07ae66553c4b6c9a2db Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Mon, 1 Sep 2025 13:30:16 +0200 Subject: [PATCH] Tutte le strategie standard tengono ora in considerazione le liste MachData con TAG per scelta utensile (per Essetre). Prima versione, da completare! !!TODO : fare lo stesso anche nelle strategie di base quando si cercano utensili --- LuaLibs/BasicCustomerStrategies.lua | 2 +- Strategies/Standard/STR0001/STR0001.json | 22 ++++++++++++++++++++++ Strategies/Standard/STR0001/STR0001.lua | 3 +++ Strategies/Standard/STR0002/STR0002.json | 11 +++++++++++ Strategies/Standard/STR0002/STR0002.lua | 4 ++++ Strategies/Standard/STR0006/STR0006.json | 11 +++++++++++ Strategies/Standard/STR0006/STR0006.lua | 1 + Strategies/Standard/STR0007/STR0007.json | 22 ++++++++++++++++++++++ Strategies/Standard/STR0007/STR0007.lua | 2 ++ Strategies/Standard/STR0008/STR0008.json | 22 ++++++++++++++++++++++ Strategies/Standard/STR0008/STR0008.lua | 3 +++ Strategies/Standard/STR0009/STR0009.json | 11 +++++++++++ Strategies/Standard/STR0009/STR0009.lua | 3 +++ 13 files changed, 116 insertions(+), 1 deletion(-) diff --git a/LuaLibs/BasicCustomerStrategies.lua b/LuaLibs/BasicCustomerStrategies.lua index 319b9dc..94b1624 100644 --- a/LuaLibs/BasicCustomerStrategies.lua +++ b/LuaLibs/BasicCustomerStrategies.lua @@ -559,7 +559,7 @@ local function GetTools_Essetre( Proc, sMachiningCategory) local PocketingData = dofile( sMachDir .. '\\Beam\\PocketingData.lua') -- si cercano TAG esclusivi if ID.IsMortise( Proc) then - TagList = { 'Mortise', 'Mortise'} + TagList = { 'Mortise'} else TagList = { 'Pocket', 'OpenPocket'} end diff --git a/Strategies/Standard/STR0001/STR0001.json b/Strategies/Standard/STR0001/STR0001.json index 2fa8317..ea8e1ec 100644 --- a/Strategies/Standard/STR0001/STR0001.json +++ b/Strategies/Standard/STR0001/STR0001.json @@ -106,6 +106,28 @@ "sMessageId": "" } ] + }, + { + "sName": "sPocketingList", + "sNameNge": "POCK_DTTENON_SURF_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the tenon cut surface", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" + }, + { + "sName": "sMillingList", + "sNameNge": "DOVETAIL_TOOL_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the dovetail tenon", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0001/STR0001.lua b/Strategies/Standard/STR0001/STR0001.lua index aaab70e..b53da60 100644 --- a/Strategies/Standard/STR0001/STR0001.lua +++ b/Strategies/Standard/STR0001/STR0001.lua @@ -72,6 +72,7 @@ local function GetTenonStrategy( Proc, Part) ToolSearchParameters.dElevation = EgtSurfTmFacetElevationInBBox( Strategy.idTenonCutPlane, 0, Part.b3Part, true, GDB_ID.ROOT) ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtTenonN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sPocketingList, 'Pocketing') Machining.Cutting.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) -- TODO anche il test sul ResidualDepth va tolto @@ -109,6 +110,7 @@ local function GetTenonStrategy( Proc, Part) ToolSearchParameters.dElevation = Proc.FeatureInfo.dTenonLength ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtTenonN ToolSearchParameters.sMillShape = 'DOVETAIL' + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Machining.Milling.ToolInfo = {} Machining.Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Milling.ToolInfo.nToolIndex then @@ -192,6 +194,7 @@ local function GetTenonStrategy( Proc, Part) ToolSearchParameters = {} ToolSearchParameters.dElevation = Proc.FeatureInfo.dTenonLength ToolSearchParameters.vtToolDirection = Proc.vtTenonN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Machining.Pocketing.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Pocketing.ToolInfo.nToolIndex then Machining.Pocketing.bIsApplicable = true diff --git a/Strategies/Standard/STR0002/STR0002.json b/Strategies/Standard/STR0002/STR0002.json index ad71276..4a99c40 100644 --- a/Strategies/Standard/STR0002/STR0002.json +++ b/Strategies/Standard/STR0002/STR0002.json @@ -31,6 +31,17 @@ "sType": "d", "sMessageId": " ", "sMinUserLevel": "1" + }, + { + "sName": "sPocketingList", + "sNameNge": "POCK_LAPJOINT", + "sValue": "", + "sDescriptionShort": "Available mill to pocket the feature", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0002/STR0002.lua b/Strategies/Standard/STR0002/STR0002.lua index ea2f763..cc88c13 100644 --- a/Strategies/Standard/STR0002/STR0002.lua +++ b/Strategies/Standard/STR0002/STR0002.lua @@ -151,6 +151,7 @@ local function GetBestPocketingStrategy( Proc) if Proc.Topology.sName ~= 'Tunnel-4-Through' then ToolSearchParameters.dElevation = Proc.MainFaces.BottomFaces[1].dElevation ToolSearchParameters.vtToolDirection = Proc.MainFaces.BottomFaces[1].vtN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sPocketingList, 'Pocketing') Milling.idFaceToMachine = Proc.MainFaces.BottomFaces[1].id Milling.idProc = Proc.id Milling.vtFaceNormal = Proc.MainFaces.BottomFaces[1].vtN @@ -176,6 +177,7 @@ local function GetBestPocketingStrategy( Proc) if Proc.Topology.sName == 'Rabbet-2-Through' or Proc.Topology.sName == 'DoubleBevel-2-Through' or Proc.Topology.sName == 'VGroove-2-Through' then ToolSearchParameters.dElevation = Proc.MainFaces.BottomFaces[2].dElevation ToolSearchParameters.vtToolDirection = Proc.MainFaces.BottomFaces[2].vtN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sPocketingList, 'Pocketing') Milling.vtFaceNormal = Proc.MainFaces.BottomFaces[2].vtN Milling.idFaceToMachine = Proc.MainFaces.BottomFaces[2].id Milling.idProc = Proc.id @@ -222,6 +224,7 @@ local function GetBestPocketingStrategy( Proc) Milling.dElevation = ( Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Faces[1].dElevation * 2) + BeamData.MILL_OVERLAP Milling.bMachAppliedToTunnelFace = true end + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sPocketingList, 'Pocketing') Milling.ToolInfo = {} Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Milling.ToolInfo.nToolIndex then @@ -260,6 +263,7 @@ local function GetBestPocketingStrategy( Proc) Milling.idProc = Proc.id Milling.dElevation = Proc.MainFaces.SideFaces[1].dElevation end + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sPocketingList, 'Pocketing') Milling.ToolInfo = {} Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Milling.ToolInfo.nToolIndex then diff --git a/Strategies/Standard/STR0006/STR0006.json b/Strategies/Standard/STR0006/STR0006.json index c19d2fd..6ae2819 100644 --- a/Strategies/Standard/STR0006/STR0006.json +++ b/Strategies/Standard/STR0006/STR0006.json @@ -96,6 +96,17 @@ "sMessageId": "" } ] + }, + { + "sName": "sMillingList", + "sNameNge": "TENON_TOOL_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the tenon", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0006/STR0006.lua b/Strategies/Standard/STR0006/STR0006.lua index 607e3a1..ffe0817 100644 --- a/Strategies/Standard/STR0006/STR0006.lua +++ b/Strategies/Standard/STR0006/STR0006.lua @@ -67,6 +67,7 @@ local function GetTenonStrategy( Proc, Part) ToolSearchParameters.dElevation = Proc.FeatureInfo.dTenonLength ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtTenonN ToolSearchParameters.sMillShape = 'STANDARD' + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Machining.Milling.ToolInfo = {} Machining.Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Milling.ToolInfo.nToolIndex then diff --git a/Strategies/Standard/STR0007/STR0007.json b/Strategies/Standard/STR0007/STR0007.json index 73e7ac6..a09c42d 100644 --- a/Strategies/Standard/STR0007/STR0007.json +++ b/Strategies/Standard/STR0007/STR0007.json @@ -116,6 +116,28 @@ "sMessageId": "" } ] + }, + { + "sName": "sPocketingList", + "sNameNge": "POCK_MORTISE_SURF_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the mortise cut surface", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" + }, + { + "sName": "sMillingList", + "sNameNge": "DOVETAIL_TOOL_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the dovetail mortise", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0007/STR0007.lua b/Strategies/Standard/STR0007/STR0007.lua index 2e8f81a..06a606e 100644 --- a/Strategies/Standard/STR0007/STR0007.lua +++ b/Strategies/Standard/STR0007/STR0007.lua @@ -71,6 +71,7 @@ function GetMortiseStrategy( Proc, Part) ToolSearchParameters = {} ToolSearchParameters.dElevation = 0 ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtMortiseN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sPocketingList, 'Pocketing') Machining.Cutting.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Cutting.ToolInfo.nToolIndex then Machining.Cutting.bIsApplicable = true @@ -90,6 +91,7 @@ function GetMortiseStrategy( Proc, Part) ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtMortiseN ToolSearchParameters.sMillShape = 'DOVETAIL' Machining.Milling.ToolInfo = {} + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Machining.Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Milling.ToolInfo.nToolIndex then Machining.Milling.bIsApplicable = true diff --git a/Strategies/Standard/STR0008/STR0008.json b/Strategies/Standard/STR0008/STR0008.json index c3c27b7..382146c 100644 --- a/Strategies/Standard/STR0008/STR0008.json +++ b/Strategies/Standard/STR0008/STR0008.json @@ -86,6 +86,28 @@ "sMessageId": "" } ] + }, + { + "sName": "sPocketingList", + "sNameNge": "POCK_MORTISE_SURF_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the mortise cut surface", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" + }, + { + "sName": "sMillingList", + "sNameNge": "MORTISE_TOOL_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the mortise", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0008/STR0008.lua b/Strategies/Standard/STR0008/STR0008.lua index 959fc1f..5b69c8d 100644 --- a/Strategies/Standard/STR0008/STR0008.lua +++ b/Strategies/Standard/STR0008/STR0008.lua @@ -84,6 +84,7 @@ local function GetBestPocketingStrategy( Proc, Part) ToolSearchParameters = {} ToolSearchParameters.dElevation = 0 ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtMortiseN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sPocketingList, 'Pocketing') ToolSearchParameters.sMillShape = 'STANDARD' Machining.Cutting.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Cutting.ToolInfo.nToolIndex then @@ -114,6 +115,7 @@ local function GetBestPocketingStrategy( Proc, Part) ToolSearchParameters.dMaxToolDiameter = Proc.FeatureInfo.dMortiseMinRadius * 2 ToolSearchParameters.dElevation = Proc.FeatureInfo.dMortiseDepth + EgtIf( Proc.Topology.sName == 'Pocket-Round-Through', BeamData.CUT_EXTRA, 0) ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtMortiseN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Pocketing') Milling.ToolInfo = {} -- si cerca prima utensile per lavorare in accordo con normale mortasa Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) @@ -135,6 +137,7 @@ local function GetBestPocketingStrategy( Proc, Part) ToolSearchParameters.dMaxToolDiameter = Proc.FeatureInfo.dMortiseMinRadius * 2 ToolSearchParameters.dElevation = Proc.FeatureInfo.dMortiseDepth + BeamData.CUT_EXTRA ToolSearchParameters.vtToolDirection = -Proc.FeatureInfo.vtMortiseN + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Pocketing') Milling.ToolInfo = {} -- si cerca prima utensile per lavorare in accordo con normale mortasa Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) diff --git a/Strategies/Standard/STR0009/STR0009.json b/Strategies/Standard/STR0009/STR0009.json index 541aaad..480719d 100644 --- a/Strategies/Standard/STR0009/STR0009.json +++ b/Strategies/Standard/STR0009/STR0009.json @@ -41,6 +41,17 @@ "sType": "d", "sMessageId": " ", "sMinUserLevel": "1" + }, + { + "sName": "sMillingList", + "sNameNge": "PROFILE_TOOL_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine the profile", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0009/STR0009.lua b/Strategies/Standard/STR0009/STR0009.lua index 382e671..cd6b301 100644 --- a/Strategies/Standard/STR0009/STR0009.lua +++ b/Strategies/Standard/STR0009/STR0009.lua @@ -65,6 +65,7 @@ local function GetArcStrategy( Proc, Part) ToolSearchParameters.sMillShape = 'STANDARD' ToolSearchParameters.dElevation = EgtIf( bExecStrip, ( dDepth - dDimStrip) / 2, dDepth + BeamData.MILL_OVERLAP) ToolSearchParameters.vtToolDirection = EgtIf( bToolInvert, -vtExtr, vtExtr) + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Milling.ToolInfo = {} Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) -- se posso lavorare in una passata, ma utensile trovato non completa la lavorazione, @@ -99,6 +100,7 @@ local function GetArcStrategy( Proc, Part) ToolSearchParameters.sMillShape = 'STANDARD' ToolSearchParameters.dElevation = dDepth + BeamData.MILL_OVERLAP ToolSearchParameters.vtToolDirection = EgtIf( bToolInvert, -vtExtr, vtExtr) + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Milling.ToolInfo = {} Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) -- si cerca utensile 2 @@ -108,6 +110,7 @@ local function GetArcStrategy( Proc, Part) ToolSearchParameters.sMillShape = 'STANDARD' ToolSearchParameters.dElevation = dDepth + BeamData.MILL_OVERLAP ToolSearchParameters.vtToolDirection = EgtIf( bToolInvert, vtExtr, -vtExtr) + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Milling2.ToolInfo = {} Milling2.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)