diff --git a/LuaLibs/BasicCustomerStrategies.lua b/LuaLibs/BasicCustomerStrategies.lua index ae8b6c8..8b34f5e 100644 --- a/LuaLibs/BasicCustomerStrategies.lua +++ b/LuaLibs/BasicCustomerStrategies.lua @@ -245,7 +245,7 @@ local function GetStrategies_Essetre( Proc) --------------------------------------------------------------------- -- Feature : Drilling (0-40) elseif ID.IsDrilling( Proc) then - Strategies = { { sStrategyId = 'STR0011'}} + Strategies = { { sStrategyId = 'STR0011'}, { sStrategyId = 'STR0013'}} --------------------------------------------------------------------- -- Feature : Tenon (1-50) elseif ID.IsTenon( Proc) then @@ -393,7 +393,7 @@ end ---------------------------------------------------------------------------------- -- *** ESSETRE *** ---------------------------------------------------------------------------------- --- funzione che recupera i paraemtri custom della strategia. Per cliente Essetre, vengono salvati dei valori 'Q' sul processing del file NGE per modificare il comportamento delle macro +-- funzione che recupera i parametri custom della strategia. Per cliente Essetre, vengono salvati dei valori 'Q' sul processing del file NGE per modificare il comportamento delle macro local function GetParameters_Essetre( Proc, sStrategyIdToGet) local Parameters = {} @@ -435,6 +435,101 @@ local function GetParameters_Essetre( Proc, sStrategyIdToGet) return Parameters end +------------------------------------------------------------------------------------------------------------- +-- funzione che verifica se un item è contenuto in lista +local function Contains( List, Item) + for _, value in ipairs( List) do + if EgtStartsWith( Item, value) then + return true + end + end + return false +end + +------------------------------------------------------------------------------------------------------------- +-- funzione che ritorna lista utensili presenti in lista compatibili con i tag passati +local function GetToolsFromMachDataFile( MachiningDataList, TagListToGet) + local ToolList = {} + + if MachiningDataList and #MachiningDataList > 0 then + for nIndex = 1, #MachiningDataList do + -- se utensile attivo e compatibile con TAG + if MachiningDataList[nIndex].On and Contains( TagListToGet, MachiningDataList[nIndex].Type) then + -- se è nuova versione, prendo il tool + if MachiningDataList[nIndex].Tool then + table.insert( ToolList, MachiningDataList[nIndex].Tool) + -- altrimenti dalla lavorazione si ricava il tool + else + EgtMdbSetCurrMachining( MachiningDataList[nIndex].Name) + table.insert( ToolList, { sName = EgtMdbGetCurrMachiningParam( MCH_MP.TOOL)}) + end + end + end + end + return ToolList +end + +------------------------------------------------------------------------------------------------------------- +-- TODO da completare +-- funzione che recupera gli utensili disponibili per un certo tipo di lavorazione +local function GetTools_Essetre( Proc, sMachiningCategory) + local sMachDir = EgtGetCurrMachineDir() + local TagList = {} + local ToolList = {} + + -- CATEGORIE PREVISTE : + -- Cutting + -- Drill + -- Milling, MillingFinish, MillingAntiSplint + -- Pocketing + -- ChainSawing + + if sMachiningCategory == 'Cutting' then + if EgtExistsFile( sMachDir .. '\\Beam\\CutData.lua') then + local CutData = dofile( sMachDir .. '\\Beam\\CutData.lua') + TagList = { 'HeadSide', 'TailSide', 'LongCut'} + ToolList = GetToolsFromMachDataFile( CutData, TagList) + end + elseif sMachiningCategory == 'Drilling' or ID.IsDrilling( Proc) then + if EgtExistsFile( sMachDir .. '\\Beam\\DrillData.lua') then + local DrillData = dofile( sMachDir .. '\\Beam\\DrillData.lua') + if sMachiningCategory == 'Pocketing' or sMachiningCategory == 'Milling' then + TagList = { 'Pocket'} + else + TagList = { 'Drill', 'Predrill', 'AngleDrill', 'MultiDrill'} + end + ToolList = GetToolsFromMachDataFile( DrillData, TagList) + end + elseif sMachiningCategory == 'Milling' or sMachiningCategory == 'MillingFinish' or sMachiningCategory == 'MillingAntiSplint' then + if EgtExistsFile( sMachDir .. '\\Beam\\MillingData.lua') then + local MillingData = dofile( sMachDir .. '\\Beam\\MillingData.lua') + -- TODO da fare!! + TagList = { 'Prof', 'FreeContour', 'Tenon', 'DtTenon', 'DtMortise', 'BirdsMouth', 'Chamfer', 'Mark', 'Text', 'Long2Cut', + 'Long2CutDown', 'LongSmallCut', 'BHSideMill', 'CleanCorner', 'ProfTCone', 'Long2CutSide', 'SmallToolContour', + 'AntiSplintMillCut', 'SideMillAsBlade', 'Prof_end'} + ToolList = GetToolsFromMachDataFile( MillingData, TagList) + end + elseif sMachiningCategory == 'Pocketing' then + if EgtExistsFile( sMachDir .. '\\Beam\\PocketingData.lua') then + local PocketingData = dofile( sMachDir .. '\\Beam\\PocketingData.lua') + if ID.IsMortise( Proc) then + TagList = { 'Mortise', 'Mortise'} + else + TagList = { 'Pocket', 'OpenPocket'} + end + ToolList = GetToolsFromMachDataFile( PocketingData, TagList) + end + elseif sMachiningCategory == 'ChainSawing' then + if EgtExistsFile( sMachDir .. '\\Beam\\SawingData.lua') then + local SawingData = dofile( sMachDir .. '\\Beam\\SawingData.lua') + TagList = { 'Sawing', 'Mortising'} + ToolList = GetToolsFromMachDataFile( SawingData, TagList) + end + end + + return ToolList +end + ---------------------------------------------------------------------------------- -- *** Esecuzione *** ---------------------------------------------------------------------------------- @@ -445,13 +540,11 @@ function BasicCustomerStrategies.GetStrategiesFromBasicCustomerStrategies( Proc) local StrategiesFromScript = {} -- CLIENTE : ESSETRE - if BeamData.STRATEGIES_SCRIPT == 'Essetre' then + if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then StrategiesFromScript = GetStrategies_Essetre( Proc) - -- se nessuno script specifico in BeamData, si carica standard di default EGALWARE - elseif not BeamData.STRATEGIES_SCRIPT or BeamData.STRATEGIES_SCRIPT == 'Egalware' then - StrategiesFromScript = GetStrategies_Egalware( Proc) + -- per tutti gli altri clienti, si carica standard di default EGALWARE else - StrategiesFromScript = nil + StrategiesFromScript = GetStrategies_Egalware( Proc) end return StrategiesFromScript @@ -463,7 +556,7 @@ function BasicCustomerStrategies.GetParametersFromBasicCustomerStrategies( Proc, local ParametersFromScript = {} -- CLIENTE : ESSETRE - if BeamData.STRATEGIES_SCRIPT == 'Essetre' then + if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then ParametersFromScript = GetParameters_Essetre( Proc, sStrategyIdToGet) else ParametersFromScript = nil @@ -484,6 +577,21 @@ function BasicCustomerStrategies.UpdateStrategies( AvailableStrategies) return AvailableStrategies end +---------------------------------------------------------------------------------- +-- lettura utensili disponibili settati in lista machining data +function BasicCustomerStrategies.GetToolsFromMachiningDataFile( Proc, sToolType) + local ToolList = {} + + -- CLIENTE : ESSETRE + if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then + ToolList = GetTools_Essetre( Proc, sToolType) + -- l'ordine di come le lavorazioni sono state in lista deve essere rispettato + ToolList.bRespectListOrder = true + end + + return ToolList +end + ------------------------------------------------------------------------------------------------------------- return BasicCustomerStrategies \ No newline at end of file diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 9e98fc6..79336d7 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -12,6 +12,7 @@ require( 'EgtBase') local BeamData = require( 'BeamData') local BeamLib = require( 'BeamLib') local FeatureLib = require( 'FeatureLib') +local BCS = require( 'BasicCustomerStrategies') local FaceData = require ( 'FaceData') EgtOutLog( ' MachiningLib started', 1) @@ -230,16 +231,28 @@ function MachiningLib.GetSplitMachinings( Machinings, SplittingPoints, Part) end ------------------------------------------------------------------------------------------------------------- --- funzione per cercare utensile tipo FRESA con certe caratteristiche -local function IsToolInAvailableToolList( sToolName, AvailableToolList) - local ToolFound = false +-- funzione che ritorna la posizione nella quale si tyrova l'utensile cercato. Serve in caso l'utente voglia rispettare l'ordine degli utensili settato +local function GetIndexToolInAvailableToolList( AvailableToolList, sToolName) for nIndex = 1, #AvailableToolList do if sToolName == AvailableToolList[nIndex].sName then - ToolFound = true + return nIndex + end + end + -- se non trovato (dovrebbe essere impossibile dato che è già stato escluso dai controlli iniziali) ritorna un indice altissimo + return 9999 +end + +------------------------------------------------------------------------------------------------------------- +-- funzione per verifica se l'utensile è presente tra gli utensili disponibili per la strategia +local function IsToolInAvailableToolList( AvailableToolList, sToolName) + local bToolFound = false + for nIndex = 1, #AvailableToolList do + if sToolName == AvailableToolList[nIndex].sName then + bToolFound = true break end end - return ToolFound + return bToolFound end ------------------------------------------------------------------------------------------------------------- @@ -257,7 +270,7 @@ function MachiningLib.FindMill( Proc, ToolSearchParameters) if ToolSearchParameters.sName and ToolSearchParameters.sName ~= TOOLS[i].sName then bIsToolCompatible = false -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then bIsToolCompatible = false -- si cercano solo frese standard. Se utensile disegnato manualmente, si setta subito che è incompatibile elseif TOOLS[i].bIsProfiledTool then @@ -314,8 +327,15 @@ function MachiningLib.FindMill( Proc, ToolSearchParameters) else -- se entrambi completi if dBestToolResidualDepth <= 0 and dCurrentResidualDepth <= 0 then + -- se è presente una lista di utensili disponibili, si prende quello che arriva primo in quella lista + if ToolSearchParameters.AvailableToolList and ToolSearchParameters.AvailableToolList.bRespectListOrder then + if GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) < + GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[nBestToolIndex].sName) then + nBestToolIndex = i + dBestToolResidualDepth = dCurrentResidualDepth + end -- se il migliore era su aggregato e corrente montanto direttamente, prediligo utensile montato direttamente - if not TOOLS[i].SetupInfo.bToolOnAggregate and TOOLS[nBestToolIndex].SetupInfo.bToolOnAggregate then + elseif not TOOLS[i].SetupInfo.bToolOnAggregate and TOOLS[nBestToolIndex].SetupInfo.bToolOnAggregate then nBestToolIndex = i dBestToolResidualDepth = dCurrentResidualDepth -- se hanno stesso montaggio @@ -393,7 +413,7 @@ function MachiningLib.FindBlade( Proc, ToolSearchParameters) end -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then bIsToolCompatible = false end @@ -411,8 +431,15 @@ function MachiningLib.FindBlade( Proc, ToolSearchParameters) else -- entrambi completi if dBestToolResidualDepth <= 10 * GEO.EPS_SMALL and dCurrentResidualDepth <= 10 * GEO.EPS_SMALL then + -- se è presente una lista di utensili disponibili, si prende quello che arriva primo in quella lista + if ToolSearchParameters.AvailableToolList and ToolSearchParameters.AvailableToolList.bRespectListOrder then + if GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) < + GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[nBestToolIndex].sName) then + nBestToolIndex = i + dBestToolResidualDepth = dCurrentResidualDepth + end -- si sceglie quello con le performance migliori - if TOOLS[i].dPerformanceIndex > TOOLS[nBestToolIndex].dPerformanceIndex + 10 * GEO.EPS_SMALL then + elseif TOOLS[i].dPerformanceIndex > TOOLS[nBestToolIndex].dPerformanceIndex + 10 * GEO.EPS_SMALL then nBestToolIndex = i dBestToolResidualDepth = dCurrentResidualDepth end @@ -463,7 +490,7 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) elseif ToolSearchParameters.sName and ToolSearchParameters.sName ~= TOOLS[i].sName then bIsToolCompatible = false -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then bIsToolCompatible = false -- controlli standard elseif TOOLS[i].dDiameter > ToolSearchParameters.dMaxToolDiameter then @@ -515,7 +542,14 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) if abs( TOOLS[i].dDiameter - ToolSearchParameters.dToolDiameter) < abs( TOOLS[nBestToolIndex].dDiameter - ToolSearchParameters.dToolDiameter) then nBestToolIndex = i dBestToolResidualDepth = dCurrentResidualDepth - -- oppure utensile con performance maggiore + -- se è presente una lista di utensili disponibili, si prende quello che arriva primo in quella lista + elseif ToolSearchParameters.AvailableToolList and ToolSearchParameters.AvailableToolList.bRespectListOrder then + if GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) < + GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[nBestToolIndex].sName) then + nBestToolIndex = i + dBestToolResidualDepth = dCurrentResidualDepth + end + -- oppure utensile con performance maggiore elseif TOOLS[i].dPerformanceIndex > TOOLS[nBestToolIndex].dPerformanceIndex then nBestToolIndex = i BestToolResidualDepth = dCurrentResidualDepth @@ -589,7 +623,7 @@ function MachiningLib.FindChainSaw( Proc, ToolSearchParameters) end -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( TOOLS[i].sName, ToolSearchParameters.AvailableToolList) then + if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then bIsToolCompatible = false end @@ -608,8 +642,15 @@ function MachiningLib.FindChainSaw( Proc, ToolSearchParameters) else -- se entrambi completi if dBestToolResidualDepth <= 0 and dCurrentResidualDepth <= 0 then + -- se è presente una lista di utensili disponibili, si prende quello che arriva primo in quella lista + if ToolSearchParameters.AvailableToolList and ToolSearchParameters.AvailableToolList.bRespectListOrder then + if GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) < + GetIndexToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[nBestToolIndex].sName) then + nBestToolIndex = i + dBestToolResidualDepth = dCurrentResidualDepth + end -- scelgo utensile con rapporto lunghezza / diametro minore - if TOOLS[i].dPerformanceIndex > TOOLS[nBestToolIndex].dPerformanceIndex then + elseif TOOLS[i].dPerformanceIndex > TOOLS[nBestToolIndex].dPerformanceIndex then nBestToolIndex = i dBestToolResidualDepth = dCurrentResidualDepth end @@ -631,6 +672,30 @@ function MachiningLib.FindChainSaw( Proc, ToolSearchParameters) return ToolInfo end +------------------------------------------------------------------------------------------------------------- +function MachiningLib.GetAvailableToolList( Proc, sToolList, sType) + local ToolList = {} + -- se ci sono strategie disponibili (dovrebbe essere sempre vero dato che la funzione è chiamata proprio da una strategia) + if Proc.AvailableStrategies and #Proc.AvailableStrategies > 0 then + -- se è una strategia di base, ci deve essere per forza una lista utensili passata + if Proc.AvailableStrategies.bIsBasicStrategy then + ToolList = BCS.GetToolsFromMachiningDataFile( Proc, sType) + -- se arriva da JSON o NGE + else + if #sToolList > 0 then + local List = EgtSplitString( sToolList) + for i = 1, #List do + table.insert( ToolList, { sName = List[i]}) + end + -- se non ci sono utensili forzati, annullo lista per cercare tra tutti quelli disponibili in modo automatico + else + ToolList = nil + end + end + end + return ToolList +end + ------------------------------------------------------------------------------------------------------------- function MachiningLib.InitMachiningParameters( nMachiningType) local Machining = {} diff --git a/Strategies/Standard/STR0011/STR0011.json b/Strategies/Standard/STR0011/STR0011.json index 1a5192b..9464b8f 100644 --- a/Strategies/Standard/STR0011/STR0011.json +++ b/Strategies/Standard/STR0011/STR0011.json @@ -40,6 +40,17 @@ "sMessageId": "" } ] + }, + { + "sName": "sDrillBitList", + "sNameNge": "DRILL_TOOL_LIST", + "sValue": "", + "sDescriptionShort": "Available Drillbit list", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Drillbit", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0011/STR0011.lua b/Strategies/Standard/STR0011/STR0011.lua index 3863797..4daf7e6 100644 --- a/Strategies/Standard/STR0011/STR0011.lua +++ b/Strategies/Standard/STR0011/STR0011.lua @@ -31,6 +31,7 @@ local function GetDrillingStrategy( Proc, Part) ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion ToolSearchParameters.dToolDiameter = Proc.FeatureInfo.dDrillDiam ToolSearchParameters.dDiameterTolerance = Strategy.Parameters.dDiameterTolerance + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sDrillBitList, 'Drilling') Drilling.ToolInfo = {} Drilling.ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters) if Drilling.ToolInfo.nToolIndex then @@ -85,6 +86,7 @@ local function GetDrillingStrategy( Proc, Part) ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion ToolSearchParameters.dToolDiameter = Proc.FeatureInfo.dDrillDiam ToolSearchParameters.dDiameterTolerance = Strategy.Parameters.dDiameterTolerance + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sDrillBitList, 'Drilling') Drilling.ToolInfo = {} Drilling.ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters) -- si cerca utensile 2 @@ -95,6 +97,7 @@ local function GetDrillingStrategy( Proc, Part) ToolSearchParameters.dElevation = Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP ToolSearchParameters.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion ToolSearchParameters.dDiameterTolerance = Strategy.Parameters.dDiameterTolerance + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sDrillBitList, 'Drilling') Drilling2.ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters) end diff --git a/Strategies/Standard/STR0013/STR0013.json b/Strategies/Standard/STR0013/STR0013.json index 0dd54eb..a4af564 100644 --- a/Strategies/Standard/STR0013/STR0013.json +++ b/Strategies/Standard/STR0013/STR0013.json @@ -50,6 +50,17 @@ "sMessageId": "" } ] + }, + { + "sName": "sMillList", + "sNameNge": "DRILLPOCK_TOOL_LIST", + "sValue": "", + "sDescriptionShort": "Available mill to machine drills", + "sDescriptionLong": "", + "sType": "tool", + "sSubType": "Mill", + "sMessageId": " ", + "sMinUserLevel": "1" } ] } \ No newline at end of file diff --git a/Strategies/Standard/STR0013/STR0013.lua b/Strategies/Standard/STR0013/STR0013.lua index 78a2388..345891b 100644 --- a/Strategies/Standard/STR0013/STR0013.lua +++ b/Strategies/Standard/STR0013/STR0013.lua @@ -28,6 +28,7 @@ local function GetDrillingWithMillStrategy( Proc, Part) ToolSearchParameters.dMaxToolDiameter = Proc.FeatureInfo.dDrillDiam + Strategy.Parameters.dDiameterTolerance ToolSearchParameters.sType = 'MILL_STD' ToolSearchParameters.sMillShape = 'STANDARD' + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillList, 'Milling') Milling.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) @@ -39,6 +40,7 @@ local function GetDrillingWithMillStrategy( Proc, Part) ToolSearchParameters.dMaxToolDiameter = Proc.FeatureInfo.dDrillDiam + Strategy.Parameters.dDiameterTolerance ToolSearchParameters.sType = 'MILL_STD' ToolSearchParameters.sMillShape = 'STANDARD' + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillList, 'Milling') Milling2.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion Milling2.bInvert = true Milling2.bToolInvert = true @@ -60,11 +62,13 @@ local function GetDrillingWithMillStrategy( Proc, Part) ToolSearchParameters.dElevation = ( Proc.FeatureInfo.dDrillLen + BeamData.MILL_OVERLAP) / 2 ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion ToolSearchParameters.dMaxToolDiameter = Proc.FeatureInfo.dDrillDiam + Strategy.Parameters.dDiameterTolerance + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillList, 'Milling') local HalfMilling = {} HalfMilling.ToolInfo = {} HalfMilling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) ToolSearchParameters.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion + ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillList, 'Milling') local HalfMilling2 = {} HalfMilling2.ToolInfo = {} HalfMilling2.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) @@ -111,7 +115,7 @@ local function GetDrillingWithMillStrategy( Proc, Part) if BestMilling.ToolInfo.nToolIndex then dResidual = BestMilling.ToolInfo.dResidualDepth if dResidual < 0 then - BestMilling.sDepth = Proc.FeatureInfo.dDrillLen + EgtIf( Proc.FeatureInfo.bIsDrillOpen, MILL_OVERLAP, 0) + BestMilling.sDepth = Proc.FeatureInfo.dDrillLen + EgtIf( Proc.FeatureInfo.bIsDrillOpen, BeamData.MILL_OVERLAP, 0) else BestMilling.sDepth = Proc.FeatureInfo.dDrillLen - BestMilling.ToolInfo.dResidualDepth end @@ -175,7 +179,7 @@ function STR0013.Make( bAddMachining, Proc, Part, CustomParameters) -- il diametro deve essere almeno 1mm più grande del foro, altrimenti la macchina non riesce ad interpolare MachiningToAdd.dRadialOffset = min( 0, Proc.FeatureInfo.dDrillDiam - ( TOOLS[nIndexTool].dDiameter + 1)) MachiningToAdd.Steps.nStepType = MCH_MILL_ST.SPIRAL - MachiningToAdd.Steps.dStep = TOOLS[nIndexTool].dStep + MachiningToAdd.Steps.dStep = TOOLS[nIndexTool].dStep / 3 MachiningToAdd.LeadOut.nType = MCH_MILL_LI.TANGENT MachiningToAdd.LeadOut.dTangentDistance = 0.5 MachiningToAdd.LeadOut.dPerpDistance = 0.5