diff --git a/LuaLibs/WallLib.lua b/LuaLibs/WallLib.lua index ac1b5b7..491ba3a 100644 --- a/LuaLibs/WallLib.lua +++ b/LuaLibs/WallLib.lua @@ -377,25 +377,29 @@ end --------------------------------------------------------------------- -- Funzione per determinare se la faccia ha lati molto corti (trascurabili) ed è quindi approssimabile ad una 3 facce -function WallLib.Is3EdgesApprox( Proc, nFacet, nAddGrpId) +function Is3EdgesApprox( Proc, nFacet, nAddGrpId) nAddGrpId = nAddGrpId or WallLib.GetAddGroup( Proc.PartId) - local bResult = false - local nContourId = EgtExtractSurfTmFacetLoops( Proc.Id, nFacet, nAddGrpId) + -- recupero il contorno della faccia + local nContourId, nContourCnt = EgtExtractSurfTmFacetLoops( Proc.Id, nFacet, nAddGrpId) + if not nContourId then return false end EgtMergeCurvesInCurveCompo( nContourId) - -- recupero il numero effettivo di lati + -- recupero il numero di lati del contorno local _, nEntityCount = EgtCurveDomain( nContourId) + if not nEntityCount then return false end + -- se sono già tre, ho finito + if nEntityCount == 3 then return true end + -- rimuovo i lati molto corti dal conteggio totale local nEdges = nEntityCount - if nContourId then - if nEntityCount and nEntityCount == 3 then - bResult = true - -- rimuovo i lati molto corti dal conteggio totale - elseif nEntityCount then - for i = 1, nEntityCount do - local dLength = EgtCurveCompoLength( nContourId, i - 1) - if dLength < 15 then nEdges = nEdges - 1 end - end - end - if nEdges == 3 then bResult = true end + for i = 1, nEntityCount do + local dLength = EgtCurveCompoLength( nContourId, i - 1) + if dLength < 15 then nEdges = nEdges - 1 end + end + -- verifico il numero significativo di lati + local bResult = ( nEdges == 3) + -- cancello tutti i contorni appena creati + EgtErase( EgtTableFill( nContourId, nContourCnt)) + if bResult then + EgtOutLog( 'FreeContour : Face with ' .. tostring( nEntityCount) .. ' edges skipped (approx 3 edges)') end return bResult end