diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 5719ac6..37db86a 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -299,6 +299,7 @@ function BeamLib.CreateTempGroup() if not idTempGroup then idTempGroup = EgtGroup( GDB_ID.ROOT) EgtSetName( idTempGroup, "#TEMP_GROUP#") + EgtSetColor( idTempGroup, Color3d( 80, 160, 160, 1)) EgtSetLevel( idTempGroup, GDB_LV.TEMP) end return idTempGroup diff --git a/LuaLibs/PreCollisionLib.lua b/LuaLibs/PreCollisionLib.lua index 63bf790..381fc78 100644 --- a/LuaLibs/PreCollisionLib.lua +++ b/LuaLibs/PreCollisionLib.lua @@ -86,11 +86,11 @@ local function GetMachiningPoints( Edge, dDepthToMachine) -- aggiunta punti -- inizio e fine solo se lato obliquo - if bIsEdgeParallelToMainDirection then + if not bIsEdgeParallelToMainDirection then table.insert( MachiningPoints, ptStart) end table.insert( MachiningPoints, ptMid) - if bIsEdgeParallelToMainDirection then + if not bIsEdgeParallelToMainDirection then table.insert( MachiningPoints, ptEnd) end @@ -133,10 +133,6 @@ function PreCollisionLib.CheckCollisionAxisZ( Edge, vtNFace, vtHead, Part, Tool, { vtDirectionX = X_AX(), vtDirectionY = Y_AX(), vtDirectionZ = Z_AX(), sDirectionName = 'Z'} } - -- TEST - local Color = Color3d( math.random(0, 255), math.random(0, 255), math.random(0, 255)) - -- TEST - local bMoveAfterSplit = false -- nel singolo punto notevole si ha collisione se si trova intersezione in tutte le direzioni @@ -162,9 +158,6 @@ function PreCollisionLib.CheckCollisionAxisZ( Edge, vtNFace, vtHead, Part, Tool, local CollisionCurvePoints = Tool.SetupInfo.GetAxisPoints( 'Z', sDirectionName) -- curva di collisione in riferimento locale local idCollisionCurve = EgtCurveCompoFromPoints( Part.idTempGroup, CollisionCurvePoints) - -- TEST - EgtSetColor( idCollisionCurve, Color) - -- TEST -- curva in riferimento globale local frReference = Frame3d( ptPivot, vtDirectionZ, vtDirectionX) EgtTransform( idCollisionCurve, frReference, GDB_RT.GLOB ) @@ -177,24 +170,16 @@ function PreCollisionLib.CheckCollisionAxisZ( Edge, vtNFace, vtHead, Part, Tool, local bCollisionFoundPiece = false if nCollisionCountPiece == j - 1 then local idPartSurfFr = GetPartSurfFrInPlane( Part, vtDirectionZ) - local bIntersectSuccess = EgtSurfFrIntersect( idPartSurfFr, idCollisionSurfFr) - if not bIntersectSuccess then - error( 'CheckCollision : intersect fail') - end - bCollisionFoundPiece = EgtExistsObj( idPartSurfFr) + bCollisionFoundPiece = not EgtSurfFrTestExternal( idPartSurfFr, idCollisionSurfFr) end -- check collisione con grezzo restante, se con il pezzo non c'è collisione local bCollisionFoundRestLength = false if not bCollisionFoundPiece then local idRestLengthSurfFr = GetRestlengthSurfFrInPlane( Part, vtDirectionZ) - local bIntersectSuccess = EgtSurfFrIntersect( idRestLengthSurfFr, idCollisionSurfFr) - if not bIntersectSuccess then - error( 'CheckCollision : intersect fail') - end - bCollisionFoundRestLength = EgtExistsObj( idRestLengthSurfFr) + bCollisionFoundRestLength = not EgtSurfFrTestExternal( idRestLengthSurfFr, idCollisionSurfFr) end -- se non trovata collisione si passa al punto successivo @@ -262,31 +247,13 @@ function PreCollisionLib.CheckCollisionAxisAB( Edge, vtNFace, vtHead, Part, Tool -- flat region dal rettangolo local idHeadSurfFr = EgtSurfFlatRegion( Part.idTempGroup, idHeadRectangle) - -- intersezione tra pezzo e motore (se fallisce si inverte la flat region del motore, probabile normale opposta) - local bIntersectSuccess = EgtSurfFrIntersect( idPartSurfFr, idHeadSurfFr) - if not bIntersectSuccess then - EgtInvertSurf( idHeadSurfFr) - bIntersectSuccess = EgtSurfFrIntersect( idPartSurfFr, idHeadSurfFr) - end - if not bIntersectSuccess then - error( 'Check2DBladeCollision : intersect fail') - end - - local bCollisionFoundPiece = EgtExistsObj( idPartSurfFr) + -- intersezione tra pezzo e motore + local bCollisionFoundPiece = not EgtSurfFrTestExternal( idPartSurfFr, idHeadSurfFr) -- intersezione tra grezzo restante e motore, se con il pezzo non c'è collisione local bCollisionFoundRestLength if not bCollisionFoundPiece then - bIntersectSuccess = EgtSurfFrIntersect( idRestlengthSurfFr, idHeadSurfFr) - if not bIntersectSuccess then - EgtInvertSurf( idHeadSurfFr) - bIntersectSuccess = EgtSurfFrIntersect( idRestlengthSurfFr, idHeadSurfFr) - end - if not bIntersectSuccess then - error( 'Check2DBladeCollision : intersect fail') - end - - bCollisionFoundRestLength = EgtExistsObj( idRestlengthSurfFr) + bCollisionFoundRestLength = not EgtSurfFrTestExternal( idRestlengthSurfFr, idHeadSurfFr) end return bCollisionFoundPiece, bCollisionFoundRestLength