From 917bf5ec4bff7817ef89c768ef40f3b802a621d2 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 26 Jun 2024 14:13:37 +0200 Subject: [PATCH] - in MachiningLib miglioramenti a scelta testa ottimizzata - in ProcessDtTenon correzione in scelta testa - in MakeAntiSplintBySaw se non si trova adiacenza tra le facce si restituisce errore --- LuaLibs/MachiningLib.lua | 16 +++++++++------- LuaLibs/ProcessDtTenon.lua | 2 +- LuaLibs/ProcessLapJoint.lua | 5 +++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 8ab21d7..f2b58f6 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -384,8 +384,8 @@ local function FindMachining( MachiningType, sType, Params, bTopHead, bDownHead, return ReturnParams( MachiningType, Machining.Name, Machining.Type, ToolParams) -- verifico se posso usare lo stesso utensile della testa attiva elseif ( nActiveHead == 1 and not bH2 and sToolName == H1_TOOL) or ( nActiveHead == 2 and bH2 and sToolName == H2_TOOL) then - -- se l'utensile sulla testa attiva è molto più piccolo rispetto a quelli salvati non lo scelgo - if ( not sH1Param or not sH1Param.TDiam or sH1Param.TDiam < dBiggerToolTolerance * ToolParams.TDiam) and ( not sH2Param or not sH2Param.TDiam or sH2Param.TDiam < 1.25 * ToolParams.TDiam) then + -- se l'utensile sulla testa attiva è molto più piccolo rispetto a quelli salvati non lo scelgo, a meno che non siano entrambi grandi (truciolatori) + if ( not sH1Param or not sH1Param.TDiam or ( sH1Param.TDiam < 75 and ToolParams.TDiam < 75 and sH1Param.TDiam < dBiggerToolTolerance * ToolParams.TDiam)) and ( not sH2Param or not sH2Param.TDiam or ( sH2Param.TDiam < 75 and ToolParams.TDiam < 75 and sH2Param.TDiam < 1.25 * ToolParams.TDiam)) then return ReturnParams( MachiningType, Machining.Name, Machining.Type, ToolParams) end end @@ -414,12 +414,14 @@ local function FindMachining( MachiningType, sType, Params, bTopHead, bDownHead, end end if MachineHeadUse == TWO_EQUAL_HEADS then - -- se uno dei due utensili è molto più grande dell'altro scelgo quello senza fare altre analisi + -- se entrambi gli utensili sono piccoli (no truciolatori) e uno dei due è molto più grande dell'altro scelgo quello senza fare altre analisi if sH1Mach ~= "" and sH1Param.TDiam and sH2Mach ~= "" and sH2Param.TDiam then - if sH1Param.TDiam > dBiggerToolTolerance * sH2Param.TDiam then - return ReturnParams( MachiningType, sH1Mach, sType, sH1Param) - elseif sH2Param.TDiam > dBiggerToolTolerance * sH1Param.TDiam then - return ReturnParams( MachiningType, sH2Mach, sType, sH2Param) + if sH1Param.TDiam < 75 or sH2Param.TDiam < 75 then + if sH1Param.TDiam > dBiggerToolTolerance * sH2Param.TDiam then + return ReturnParams( MachiningType, sH1Mach, sType, sH1Param) + elseif sH2Param.TDiam > dBiggerToolTolerance * sH1Param.TDiam then + return ReturnParams( MachiningType, sH2Mach, sType, sH2Param) + end end end -- verifico se cambiare testa o cambiare utensile su quella corrente diff --git a/LuaLibs/ProcessDtTenon.lua b/LuaLibs/ProcessDtTenon.lua index 1735c8f..a9123bc 100644 --- a/LuaLibs/ProcessDtTenon.lua +++ b/LuaLibs/ProcessDtTenon.lua @@ -216,7 +216,7 @@ function ProcessDtTenon.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) end -- recupero la lavorazione local sMillType = 'DtTenon' - local sMilling = ML.FindMilling( sMillType .. EgtIf( bMillDown, '_H2', ''), nil, nil, nil, nil, bMillUp, bMillDown) + local sMilling = ML.FindMilling( sMillType .. EgtIf( bMillDown and not bMillUp, '_H2', ''), nil, nil, nil, nil, bMillUp, bMillDown) if not sMilling then local sErr = 'Error : milling not found in library' EgtOutLog( sErr) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 87570b6..8c2e070 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -3178,6 +3178,11 @@ local function MakeAntiSplintBySaw( Proc, nFacet, vtN, b3Raw, nFacInd, bReduceDe end -- valuto l'angolo tra le due facce local bAdj, ptP1, ptP2, dAng = EgtSurfTmFacetsContact( Proc.Id, nFacInd, nFacet, GDB_ID.ROOT) + if not bAdj then + local sErr = 'Error : Faces not adjacent' + EgtOutLog( sErr) + return false, sErr + end local ptPm = (ptP1+ptP2)/2 -- ottengo il boundingBox e prendo le dimensioni lungo la normale (Z locale) che rappresenta l'elevazione della faccia -- laterale sul punto medio della linea in comune