Compare commits

..

2 Commits

2 changed files with 41 additions and 11 deletions
+25
View File
@@ -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)
+16 -11
View File
@@ -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