diff --git a/LuaLibs/PreSimulationLib.lua b/LuaLibs/PreSimulationLib.lua index c4c75d6..6e41ad7 100644 --- a/LuaLibs/PreSimulationLib.lua +++ b/LuaLibs/PreSimulationLib.lua @@ -403,6 +403,7 @@ local function CheckCollisionWithAxis( sAxis, MachiningParameters, OptionalParam local sRestLengthSideForPreSimulation = OptionalParameters.sRestLengthSideForPreSimulation or 'Tail' local bCannotSplitRestLength = OptionalParameters.bCannotSplitRestLength or false local vtAux = OptionalParameters.vtAux + local bCheckFlange = OptionalParameters.bCheckFlange -- se normale faccia non parallela a direzione testa c'รจ qualcosa che non va if not AreSameOrOppositeVectorApprox( vtNFace, vtHead) then @@ -426,7 +427,7 @@ local function CheckCollisionWithAxis( sAxis, MachiningParameters, OptionalParam -- se lama con flangia si aggiunge quest'ultima ai solidi di collisione, ipotizzandola grande fino al dMaxDepth + sicurezza local idAddedCollisionSurfTm - if Tool.sType == 'SAW_FLAT' then + if bCheckFlange and Tool.sType == 'SAW_FLAT' then local ptCenterFlange = PointsOnToolTipCenter[i] + vtHead * Tool.dThickness local frHead = Frame3d( ptCenterFlange, vtHead) local dExtraSafety = 2 -- valore empirico che serve nei casi molto inclinati, ci potrebbero essere casi in cui va aumentato @@ -532,7 +533,10 @@ function PreSimulationLib.CheckCollision( Parameters, OptionalParameters) local sR1 = AxesNames[4] -- ultimo asse lineare prima dei rotativi (solitamente Z) si controlla sempre + -- qui si controlla anche la collisione con flangia lama, se necessario + OptionalParametersCheckCollisionWithAxis.bCheckFlange = true bCollisionFound, bMoveAfterSplitL3 = CheckCollisionWithAxis( sL3, Parameters, OptionalParametersCheckCollisionWithAxis) + OptionalParametersCheckCollisionWithAxis.bCheckFlange = false if sR3 and not bCollisionFound then bCollisionFound, bMoveAfterSplitR3 = CheckCollisionWithAxis( sR3, Parameters, OptionalParametersCheckCollisionWithAxis)