- in MachiningLib e PreCollision correzioni per controllare collisione con grezzo nei cubetti
This commit is contained in:
+13
-18
@@ -75,8 +75,8 @@ local function GetMachiningPoints( Edge, dDepthToMachine)
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- si controlla la collisione con il carro Z nei 3 piani principali dell'asse sAxis. Se c'è collisione in tutti i piani, l'asse sarà in collisione.
|
||||
function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, Part, Tool, dDepthToMachine)
|
||||
-- controllo collisione con verifica intersezione trimesh e geometrie da macchina
|
||||
function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, Part, Tool, dDepthToMachine, bCheckOnlyRestlength)
|
||||
|
||||
-- se normale faccia non parallela a direzione testa c'è qualcosa che non va
|
||||
if not AreSameOrOppositeVectorApprox( vtNFace, vtHead) then
|
||||
@@ -102,7 +102,7 @@ function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, P
|
||||
ToolExitPoints[i] = Point3d( MachiningPoints[i] + Edge.vtN * Tool.dDiameter / 2) + vtHead * EgtIf( bIsDownUp, ( Tool.dLength - Tool.dThickness), Tool.dLength)
|
||||
end
|
||||
|
||||
-- vtC punta sempre verso il corpo dell'asse C
|
||||
-- vtC punta sempre verso il corpo dell'asse C o verso l'aggregato
|
||||
local vtEdge = Edge.ptEnd - Edge.ptStart
|
||||
vtEdge:normalize()
|
||||
local nSCC = Tool.SetupInfo.GetSCC( Edge.vtN, vtEdge, vtNFace)
|
||||
@@ -119,7 +119,6 @@ function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, P
|
||||
|
||||
local bMoveAfterSplit = false
|
||||
|
||||
-- nel singolo punto notevole si ha collisione se si trova intersezione in tutte le direzioni
|
||||
-- se almeno in un punto c'è collisione con il pezzo si ritorna collisione
|
||||
-- se non si trova collisione si ritorna se è necessario separare prima di effettuare la lavorazione (ossia non c'è collisione con il pezzo ma c'è con il grezzo restante)
|
||||
for i = 1, #ToolExitPoints do
|
||||
@@ -152,30 +151,26 @@ function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, P
|
||||
|
||||
-- check collisione con pezzo
|
||||
local bCollisionFoundPiece = false
|
||||
|
||||
bCollisionFoundPiece = EgtTestSurfaceSurface( Part.idBoxTm, idCollisionSurfTm, BeamData.COLL_SIC)
|
||||
if not type( bCollisionFoundPiece) == "boolean" then
|
||||
error( 'EgtTestSurfaceSurface fail')
|
||||
end
|
||||
|
||||
if EgtGetDebugLevel() >= 3 and bCollisionFoundPiece then
|
||||
EgtSetColor( idCollisionSurfTm, RED())
|
||||
if not bCheckOnlyRestlength then
|
||||
bCollisionFoundPiece = EgtTestSurfaceSurface( Part.idBoxTm, idCollisionSurfTm, BeamData.COLL_SIC)
|
||||
if not type( bCollisionFoundPiece) == "boolean" then
|
||||
error( 'EgtTestSurfaceSurface fail')
|
||||
end
|
||||
if EgtGetDebugLevel() >= 3 and bCollisionFoundPiece then
|
||||
EgtSetColor( idCollisionSurfTm, RED())
|
||||
end
|
||||
end
|
||||
|
||||
-- check collisione con grezzo restante, se con il pezzo non c'è collisione
|
||||
local bCollisionFoundRestLength = false
|
||||
if not bCollisionFoundPiece then
|
||||
local idRestLengthSurfFr = GetRestlengthSurfTm( Part)
|
||||
|
||||
bCollisionFoundRestLength = EgtTestSurfaceSurface( idRestLengthSurfFr, idCollisionSurfTm, BeamData.COLL_SIC)
|
||||
local bCollisionFoundRestLength = EgtTestSurfaceSurface( idRestLengthSurfFr, idCollisionSurfTm, BeamData.COLL_SIC)
|
||||
if not type( bCollisionFoundRestLength) == "boolean" then
|
||||
error( 'EgtTestSurfaceSurface fail')
|
||||
end
|
||||
|
||||
if EgtGetDebugLevel() >= 3 and bCollisionFoundRestLength then
|
||||
EgtSetColor( idCollisionSurfTm, ORANGE())
|
||||
end
|
||||
|
||||
if bCollisionFoundRestLength then
|
||||
bMoveAfterSplit = true
|
||||
end
|
||||
@@ -193,7 +188,7 @@ end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- nel piano perpendicolare alla direzione di taglio, se c'è intersezione tra motore e trave c'è collisione
|
||||
-- TODO da integrare in funzione sopra
|
||||
-- ATTENZIONE NON PIU' USATA, verificare ed eliminare
|
||||
function PreCollisionLib.CheckCollisionAxisAB( Edge, vtNFace, vtHead, Part, Tool, dDepthToMachine)
|
||||
|
||||
-- se direzione utensile parallela ad uno degli assi principali non serve alcuna verifica
|
||||
|
||||
Reference in New Issue
Block a user