From 61f69ad50a58f795153fe294988bef695207b550 Mon Sep 17 00:00:00 2001 From: DarioS Date: Tue, 28 Mar 2023 19:02:33 +0200 Subject: [PATCH] DataBeam : - in lavorazione DtMortise corretto calcolo larghezza della mortasa per derivare numero e step passate. --- LuaLibs/ProcessDtMortise.lua | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/LuaLibs/ProcessDtMortise.lua b/LuaLibs/ProcessDtMortise.lua index 3094959..1af80b6 100644 --- a/LuaLibs/ProcessDtMortise.lua +++ b/LuaLibs/ProcessDtMortise.lua @@ -1,4 +1,4 @@ --- ProcessDtMortise.lua by Egaltech s.r.l. 2023/03/06 +-- ProcessDtMortise.lua by Egaltech s.r.l. 2023/03/28 -- Gestione calcolo mortase a coda di rondine per Travi -- 2021/04/08 Aggiunto controllo massimo materiale lavorabile dalla fresa. -- 2021/04/08 Miglioria scelta lavorazione in presenza di testa da sotto. @@ -10,6 +10,7 @@ -- 2022/09/29 Aggiunto riconoscimento della sola feature laterale. -- 2022/12/28 Aggiunta gestione lavorazione in doppio. -- 2023/03/06 Aggiunta forzatura ingresso fuori dal grezzo con pocket. +-- 2023/03/28 Corretto calcolo larghezza mortasa quando più larga che lunga. -- Tabella per definizione modulo local ProcessDtMortise = {} @@ -177,13 +178,17 @@ function ProcessDtMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtOutLog( sErr) return false, sErr end - -- determino l'altezza della mortasa (0=faccia di fondo) - local rfDtMrt, dLenMrt, dWidthMrt = EgtSurfTmFacetMinAreaRectangle( Proc.Id, 0, GDB_RT.GLOB) - local b3DtMrt = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, rfDtMrt) - local dAltMort = b3DtMrt:getDimZ() - -- ne determino l'asse (valido se non pocket) + -- ne determino l'asse local vtAx = EgtEV( AuxId, GDB_RT.GLOB) - EgtSV( AuxId, GDB_RT.GLOB) vtAx:normalize() + -- determino l'altezza della mortasa (0=faccia di fondo) + local rfDtMrt, dLenMrt, dWidthMrt = EgtSurfTmFacetMinAreaRectangle( Proc.Id, 0, GDB_RT.GLOB) + if abs( rfDtMrt:getVersY() * vtAx) > abs( rfDtMrt:getVersX() * vtAx) then + rfDtMrt:rotate( rfDtMrt:getOrigin(), rfDtMrt:getVersZ(), 90) + dLenMrt, dWidthMrt = dWidthMrt, dLenMrt + end + local b3DtMrt = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, rfDtMrt) + local dAltMort = b3DtMrt:getDimZ() -- verifico se di tipo pocket local bPocket = ( EgtGetInfo( Proc.Id, 'P05', 'i') == 1) if bPocket then bMakeAntiSplitPath = false end