From 66013f5e076e8418943fe0cc49965131f377a7e1 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Thu, 9 Apr 2026 16:36:20 +0200 Subject: [PATCH] - in ProcessLapJoint MakePathsOnExtremePoints si costruisce il percorso solo per i punti sui bordi del grezzo --- LuaLibs/BeamLib.lua | 25 +++++++++++++++++++++++++ LuaLibs/ProcessLapJoint.lua | 27 ++++++++++++++++----------- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 5b39da5..0c19524 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -1158,6 +1158,31 @@ function BeamLib.Is3EdgesApprox( Proc, nFacet, nAddGrpId) return bResult end +------------------------------------------------------------------------------------------------------------- +function BeamLib.IsPointOnBoxLimits( ptPoint, b3Solid) + local dTol = 500 * GEO.EPS_SMALL + + local dMinX = b3Solid:getMin():getX() + local dMinY = b3Solid:getMin():getY() + local dMinZ = b3Solid:getMin():getZ() + + local dMaxX = b3Solid:getMax():getX() + local dMaxY = b3Solid:getMax():getY() + local dMaxZ = b3Solid:getMax():getZ() + + -- Check di ogni piano limite + if abs( ptPoint:getX() - dMinX) < dTol then return true, "Left" end + if abs( ptPoint:getX() - dMaxX) < dTol then return true, "Right" end + + if abs( ptPoint:getY() - dMinY) < dTol then return true, "Front" end + if abs( ptPoint:getY() - dMaxY) < dTol then return true, "Back" end + + if abs( ptPoint:getZ() - dMinZ) < dTol then return true, "Bottom" end + if abs( ptPoint:getZ() - dMaxZ) < dTol then return true, "Top" end + + return false +end + ------------------------------------------------------------------------------------------------------------- -- restituisce le facce della parte interessate dalla feature Proc function BeamLib.GetProcessAffectedFaces( Proc) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index ec49024..b3af308 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -4803,7 +4803,7 @@ local function ManageAntiSplintBySaw( Proc, b3Raw, b3Solid, bIsU, vtN, nFacInd, end --------------------------------------------------------------------- -local function MakePathsOnExtremPoints( nAddGrpId, nIdPath, pPaths, dTDiam) +local function MakePathsOnExtremePoints( nAddGrpId, nIdPath, pPaths, dTDiam, b3Solid) local dLength = 2 if not nIdPath then return pPaths end @@ -4819,15 +4819,20 @@ local function MakePathsOnExtremPoints( nAddGrpId, nIdPath, pPaths, dTDiam) local vtIni = EgtSV( nIdPath, GDB_RT.GLOB) local vtEnd = EgtEV( nIdPath, GDB_RT.GLOB) - local ptIniP = ptIni - local ptEndP = ptIniP + (vtIni * dLength) - local nAuxId = EgtLine( nAddGrpId, ptIniP, ptEndP, GDB_RT.GLOB) - table.insert( pPaths, { nAuxId, 1, ptIniP}) + -- si costruisce il percorso solo per i punti sui bordi del grezzo + if BL.IsPointOnBoxLimits( ptIni, b3Solid) then + local ptIniP = ptIni + local ptEndP = ptIniP + (vtIni * dLength) + local nAuxId = EgtLine( nAddGrpId, ptIniP, ptEndP, GDB_RT.GLOB) + table.insert( pPaths, { nAuxId, 1, ptIniP}) + end - ptIniP = ptEnd - ptEndP = ptEnd - ( vtEnd * dLength) - nAuxId = EgtLine( nAddGrpId, ptIniP, ptEndP, GDB_RT.GLOB) - table.insert( pPaths, { nAuxId, 2, ptIniP}) + if BL.IsPointOnBoxLimits( ptEnd, b3Solid) then + local ptIniP = ptEnd + local ptEndP = ptEnd - ( vtEnd * dLength) + local nAuxId = EgtLine( nAddGrpId, ptIniP, ptEndP, GDB_RT.GLOB) + table.insert( pPaths, { nAuxId, 2, ptIniP}) + end return pPaths end @@ -5081,7 +5086,7 @@ local function ManageAntiSplintByMill( Proc, nPhase, nRawId, nPartId, b3Raw, -- creo percorsi antisplint dagli estremi dei percorsi di contorno trovati for i = 1, nNumId do local nIdPath = nFirstId + i - 1 - pPaths = MakePathsOnExtremPoints( nAddGrpId, nIdPath, pPaths, dTDiam) + pPaths = MakePathsOnExtremePoints( nAddGrpId, nIdPath, pPaths, dTDiam, b3Solid) end end -- alrimenti ho la faccia aggiunta @@ -5116,7 +5121,7 @@ local function ManageAntiSplintByMill( Proc, nPhase, nRawId, nPartId, b3Raw, -- se non ho un percorso chiuso estraggo i percorsi if bOpenPath then -- creo percorsi antisplint dagli estremi dei percorsi di contorno trovati - pPaths = MakePathsOnExtremPoints( nAddGrpId, nFirstId, pPaths, dTDiam) + pPaths = MakePathsOnExtremePoints( nAddGrpId, nFirstId, pPaths, dTDiam, b3Solid) end EgtErase(nFirstId) end