From 52206183ed2f714a2d31fe42816a437e441a0063 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 26 Sep 2020 16:15:19 +0000 Subject: [PATCH] =?UTF-8?q?DataBeam=20:=20-=20in=20ProcessLapJoint=20corre?= =?UTF-8?q?tto=20riconoscimento=20caso=204=20facce=20che=20non=20sono=20L?= =?UTF-8?q?=20con=20estremit=C3=A0=20chiuse.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/BeamLib.lua | 2 +- LuaLibs/ProcessLapJoint.lua | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 860c176..1c6e827 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -415,7 +415,7 @@ function BeamLib.GetFaceWithMostAdj( nSurfId, nPartId, bCompare3Fc, dCosSideAng) -- recupero le normali delle facce local vvtN = {} for i = 1, nFacCnt do - local _, vtN = EgtSurfTmFacetCenter( nSurfId, i - 1, GDB_ID.ROOT) + local vtN = EgtSurfTmFacetNormVersor( nSurfId, i - 1, GDB_ID.ROOT) vvtN[i] = vtN ; end -- adiacenze e sottosquadra delle facce diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 368764c..2fbde57 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -129,8 +129,8 @@ local function TestElleShape4( Proc) -- valida solo nel caso di quattro facce if Proc.Fct ~= 4 then return false end -- determino se L con due facce terminali o O - local bIsL = false - local dMinArea3 = GEO.INFINITO + local nFac3Adj = 0 + local dMinArea3 = GEO.INFINITO * GEO.INFINITO local dMaxArea2 = 0 for i = 1, 4 do local vFacAdj = EgtSurfTmFacetAdjacencies( Proc.Id, i - 1)[1] @@ -147,11 +147,11 @@ local function TestElleShape4( Proc) dMaxArea2 = max( dMaxArea2, dArea) elseif nCount == 3 then dMinArea3 = min( dMinArea3, dArea) - bIsL = true + nFac3Adj = nFac3Adj + 1 end end - if not bIsL then return false end - -- verifico se L profona oppure lunga + if nFac3Adj ~= 2 then return false end + -- verifico se L profonda oppure lunga if dMinArea3 < dMaxArea2 then return 1 else @@ -491,7 +491,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw) -- se più di 2 facce else local bClosedOrthoFaces - local nDeletedface + local nDeletedFace -- recupero la faccia con il maggior numero di adiacenze e minor elevazione local nPartId = EgtGetParent( EgtGetParent( Proc.Id) or GDB_ID.NULL) local nFacInd, dElev, nFacInd2, dElev2 = BL.GetFaceWithMostAdj( Proc.Id, nPartId) @@ -513,8 +513,8 @@ function ProcessLapJoint.Classify( Proc, b3Raw) for i = 1, Proc.Fct do local nNewProc = EgtCopyGlob( Proc.Id, nAddGrpId) or GDB_ID.NULL -- elimino una faccia - nDeletedface = i-1 - if EgtSurfTmRemoveFacet( nNewProc, nDeletedface) then + nDeletedFace = i - 1 + if EgtSurfTmRemoveFacet( nNewProc, nDeletedFace) then -- recupero la faccia con il maggior numero di adiacenze e l'elevazione relativa nFacInd, dElev, nFacInd2, dElev2 = BL.GetFaceWithMostAdj( nNewProc, nPartId) if not nFacInd or nFacInd < 0 then @@ -535,7 +535,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw) end -- se riconosciuta fessura ricalcolo l'elevazione dalla faccia di fondo if bClosedOrthoFaces then - nFacInd = nDeletedface + nFacInd = nDeletedFace -- rendo nulla la faccia opzionale perchè si tratta di una fessura nFacInd2 = nil dElev = BL.GetFaceElevation( Proc.Id, nFacInd) @@ -575,7 +575,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw) if nFacInd2 and dElev2 < 2 * dElev then local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFacInd2, GDB_ID.ROOT) bDown = ( vtN2:getZ() < BD.NZ_MINB) - elseif not nFacInd2 and bIsL and nFaceAdj > 0 then + elseif not nFacInd2 and bIsL and nFaceAdj >= 0 then local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT) bDown = ( vtN2:getZ() < BD.NZ_MINB) end