From 3ac926f694503a02cac3bd9bdb0e9e7ac2bc58cf Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 17 Nov 2020 16:40:22 +0000 Subject: [PATCH] DataWall : - corretto controllo foro sottosquadra - corretta gestione contorni liberi per lato di lavoro 3 e 4 - corretto LapJoint chiuso ma senza fondo lavorato come contorno libero. --- LuaLibs/WProcessDrill.lua | 2 +- LuaLibs/WProcessFreeContour.lua | 4 +++- LuaLibs/WProcessLapJoint.lua | 23 +++++++++++++++++++++++ Process.lua | 2 +- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/LuaLibs/WProcessDrill.lua b/LuaLibs/WProcessDrill.lua index 3494334..9692ea0 100644 --- a/LuaLibs/WProcessDrill.lua +++ b/LuaLibs/WProcessDrill.lua @@ -84,7 +84,7 @@ function WPD.Make( Proc, nRawId, b3Raw) local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB) local bOpen = ( Proc.Fcs ~= 0 and Proc.Fce ~= 0) -- verifico che il foro non sia fattibile solo da sotto - local bToInvert = ( vtExtr:getZ() < 0) + local bToInvert = ( vtExtr:getZ() < -0.1) if bToInvert and ( not bOpen or Proc.Flg ~= 1) then local sErr = 'Error : drilling from bottom impossible' EgtOutLog( sErr) diff --git a/LuaLibs/WProcessFreeContour.lua b/LuaLibs/WProcessFreeContour.lua index 76ec5bd..9d6f3c8 100644 --- a/LuaLibs/WProcessFreeContour.lua +++ b/LuaLibs/WProcessFreeContour.lua @@ -381,7 +381,9 @@ local function MakeByCut( Proc, nRawId, b3Raw) if AuxId then AuxId = AuxId + Proc.Id local vtExtr= EgtCurveExtrusion( AuxId, GDB_RT.GLOB) - bOpposite = ( vtExtr and vtExtr:getZ() < 0) + if vtExtr then + bOpposite = ( Proc.Grp == 4 and vtExtr:getZ() < 0) or ( Proc.Grp == 3 and vtExtr:getZ() > 0) + end end -- recupero la lavorazione di taglio con lama e i suoi parametri local sCutting, dSawDiam, dSawThick, dSawMaxDepth = WM.FindCutting( 'Standard') diff --git a/LuaLibs/WProcessLapJoint.lua b/LuaLibs/WProcessLapJoint.lua index bf4a43a..53a7ea7 100644 --- a/LuaLibs/WProcessLapJoint.lua +++ b/LuaLibs/WProcessLapJoint.lua @@ -375,6 +375,29 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw) local nFacInd, dElev, nFacInd2 = WL.GetFaceWithMostAdj( Proc.Id, Proc.PartId) -- se tunnel, applico lavorazione del contorno libero if nFacInd == - 1 then + -- riordino le facce come contorno libero da lavorare a destra + for i = 1, Proc.Fct - 2 do + local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, i - 1, GDB_ID.ROOT) + for j = i + 1, Proc.Fct do + local bAdj, ptAdj, _, _ = EgtSurfTmFacetsContact( Proc.Id, i - 1, j - 1, GDB_ID.ROOT) + if bAdj and ( vtN ^ ( ptAdj - ptC)) * Z_AX() > 0 then + if i ~= j - 1 then + EgtSurfTmSwapFacets( Proc.Id, i, j - 1) + end + break + end + end + end + -- applico riordinamento + --local vOrd = { 0, 2, 1, 3} + --for i = 1, #vOrd do + -- if vOrd[i] ~= i - 1 then + -- EgtSurfTmSwapFacets( Proc.Id, vOrd[i], i - 1) + -- vOrd[vOrd[i]+1] = vOrd[i] + -- vOrd[i] = i - 1 + -- end + --end + -- eseguo return FreeContour.Make( Proc, nRawId, b3Raw) end local vtN = EgtSurfTmFacetNormVersor( Proc.Id, nFacInd, GDB_ID.ROOT) diff --git a/Process.lua b/Process.lua index aa83447..40e35cf 100644 --- a/Process.lua +++ b/Process.lua @@ -5,7 +5,7 @@ -- Intestazioni require( 'EgtBase') _ENV = EgtProtectGlobal() -EgtEnableDebug( false) +EgtEnableDebug( true) -- Imposto direttorio libreria specializzata per Travi local sBaseDir = EgtGetSourceDir()