From 3a29f273c9cdcd6220365542cf9bb3281cf27daf Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Thu, 16 Apr 2026 17:02:39 +0200 Subject: [PATCH] - in PreSimulationLib alcune correzioni --- LuaLibs/PreSimulationLib.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/LuaLibs/PreSimulationLib.lua b/LuaLibs/PreSimulationLib.lua index 247cac2..7afead4 100644 --- a/LuaLibs/PreSimulationLib.lua +++ b/LuaLibs/PreSimulationLib.lua @@ -368,6 +368,7 @@ local function CheckCollisionPoint( sAxis, ptOnToolTipCenter, vtHead, vtAux, Par local bCollisionFoundRestLength = false if not ( bCollisionFoundPiece or bCannotSplitRestLength) then local idRestLengthSurfFr = GetRestlengthSurfTm( Part, sRestLengthSideForPreSimulation) + EgtMove( idRestLengthSurfFr, Vector3d( dDeltaXBeamOffset, 0, 0), GDB_RT.GLOB) if idRestLengthSurfFr then for i = 1, #CollisionSurfTmId do bCollisionFoundRestLength = EgtCDeSolidSolid( idRestLengthSurfFr, CollisionSurfTmId[i], BeamData.COLL_SIC) @@ -377,6 +378,9 @@ local function CheckCollisionPoint( sAxis, ptOnToolTipCenter, vtHead, vtAux, Par if EgtGetDebugLevel() >= 3 and bCollisionFoundRestLength then EgtSetColor( CollisionSurfTmId[i], ORANGE()) end + if bCollisionFoundRestLength then + break + end end end end @@ -448,7 +452,7 @@ end function PreSimulationLib.CheckCollision( sBladeEngagement, Parameters, OptionalParameters) local bCollisionFound - local bMoveAfterSplitZ, bMoveAfterSplitC, bMoveAfterSplitAB + local bMoveAfterSplitL3, bMoveAfterSplitR3, bMoveAfterSplitR2, bMoveAfterSplitR1 -- parametri obbligatori local Edge = Parameters.Edge @@ -520,24 +524,24 @@ function PreSimulationLib.CheckCollision( sBladeEngagement, Parameters, Optional local sR1 = AxesNames[4] -- ultimo asse lineare prima dei rotativi (solitamente Z) si controlla sempre - bCollisionFound, bMoveAfterSplitZ = CheckCollisionWithAxis( sL3, Parameters, OptionalParametersCheckCollisionWithAxis) + bCollisionFound, bMoveAfterSplitL3 = CheckCollisionWithAxis( sL3, Parameters, OptionalParametersCheckCollisionWithAxis) -- assi rotativi: se richiesto si controlla la collisione solo col grezzo OptionalParametersCheckCollisionWithAxis.bCheckOnlyRestlength = bCheckOnlyRestlengthForAxisABC if sR3 and not bCollisionFound then - bCollisionFound, bMoveAfterSplitAB = CheckCollisionWithAxis( sR3, Parameters, OptionalParametersCheckCollisionWithAxis) + bCollisionFound, bMoveAfterSplitR3 = CheckCollisionWithAxis( sR3, Parameters, OptionalParametersCheckCollisionWithAxis) end if not bCollisionFound then - bCollisionFound, bMoveAfterSplitAB = CheckCollisionWithAxis( sR2, Parameters, OptionalParametersCheckCollisionWithAxis) + bCollisionFound, bMoveAfterSplitR2 = CheckCollisionWithAxis( sR2, Parameters, OptionalParametersCheckCollisionWithAxis) end if not bCollisionFound then - bCollisionFound, bMoveAfterSplitC = CheckCollisionWithAxis( sR1, Parameters, OptionalParametersCheckCollisionWithAxis) + bCollisionFound, bMoveAfterSplitR1 = CheckCollisionWithAxis( sR1, Parameters, OptionalParametersCheckCollisionWithAxis) end - local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB + local bMoveAfterSplit = bMoveAfterSplitL3 or bMoveAfterSplitR3 or bMoveAfterSplitR2 or bMoveAfterSplitR1 return bCollisionFound, bMoveAfterSplit end