diff --git a/Common_FAST.mlpe b/Common_FAST.mlpe index 4fe9f6e..ba44c79 100644 --- a/Common_FAST.mlpe +++ b/Common_FAST.mlpe @@ -464,11 +464,10 @@ function OnSimulDispositionStart() EgtMove( nRawId, vtMove, GDB_RT.GLOB) EmtLinkRawPartToGroup( nRawId, 'Y') end - nRawId = nNextRawId end - --nRawId = nNextRawId - EMT.LB = b3Bar:getDimX() + nRawId = nNextRawId end + EMT.LB = b3Bar:getDimX() end -- Indicazione angolo rotazione pezzo EMT.ROT = EgtGetInfo( EMT.DISPID, 'ROT', 'i') or 0 @@ -1100,16 +1099,17 @@ end --------------------------------------------------------------------- function CheckClamping( sClampName) - nIndexClamp = EgtGetAxisId( sClampName) - local idClampPath = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nIndexClamp, 'CLAMP_CHECK') or GDB_ID.NULL) - local b3ClampingArea = EgtGetBBoxGlob( idClampPath or GDB_ID.NULL, GDB_BB.STANDARD) + + local nClampId = EgtGetAxisId( sClampName) or GDB_ID.NULL + local nClampPathId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nClampId, 'CLAMP_CHECK') or GDB_ID.NULL) + local b3ClampingArea = EgtGetBBoxGlob( nClampPathId or GDB_ID.NULL, GDB_BB.STANDARD) -- se non trovo percorso area di clamping, esco subito - if not idClampPath or not EMT.VMILL or not ClampingCoeffMin then + if not nClampPathId or not EMT.VMILL or not ClampingCoeffMin then return end local function GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth) - local idCurveList = {} + local vCurveListId = {} local vtIntersPlane -- piano di interpolazione if sIntersPlane == 'X' then @@ -1128,44 +1128,35 @@ function CheckClamping( sClampName) elseif sPosIntersPlane == 'MAX' then ptPosIntersPlane = b3VMill:getMax() - dDepth * vtIntersPlane end - - local idLoop, nLoopCnt = EgtPlaneVolZmapInters( ptPosIntersPlane, vtIntersPlane, EMT.VMILL[i], CLAMP_CHECK_INTERS, GDB_RT.GLOB) - -- se c'è almeno una curva - if idLoop then - for j = 1, nLoopCnt do - local idLoopTemp = idLoop + j - 1 - table.insert( idCurveList, idLoopTemp) - end - end + local nLoopId, nLoopCnt = EgtPlaneVolZmapInters( ptPosIntersPlane, vtIntersPlane, EMT.VMILL[i], CLAMP_CHECK_INTERS, GDB_RT.GLOB) + vCurveListId = EgtTableAdd( vCurveListId, nLoopId, nLoopCnt) end - return idCurveList + + return vCurveListId end local function CalculateIntersectionArea( sPosIntersPlane, sIntersPlane, dDepth) -- test piano frontale - local idCurveList = GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth) - + local vCurveListId = GetCurveListFromIntersection( sPosIntersPlane, sIntersPlane, dDepth) -- si copia curva intersezione e curva pinza in gruppo di confronto - local idFlatSurf, nFlatSurfCnt = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, idCurveList) - local idClampSurf = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, idClampPath) + local nFlatSurfId, nFlatSurfCnt = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, vCurveListId) + local vFlatSurfId = EgtTableFill( nFlatSurfId, nFlatSurfCnt) or {} + local nClampSurfId = EgtSurfFlatRegion( CLAMP_CHECK_GROUP, nClampPathId) - if idFlatSurf then - local dTotalArea = 0 - local dTotalXLenght = 0 - for k = 1, nFlatSurfCnt do - local idTempSurf = idFlatSurf + k - 1 - EgtSurfFrIntersect( idTempSurf, idClampSurf) - if idTempSurf then - dTotalArea = dTotalArea + ceil( EgtSurfArea( idTempSurf) or 0) - local b3BoxIntersectionBox = EgtGetBBoxGlob( idTempSurf, GDB_BB.STANDARD) - if b3BoxIntersectionBox then - dTotalXLenght = dTotalXLenght + ceil( b3BoxIntersectionBox:getDimX()) -- somma lunghezze (x) delle aree pinzate - end + local dTotalArea = 0 + local dTotalXLenght = 0 + for i = 1, #vFlatSurfId do + local nTempSurfId = vFlatSurfId[i] + EgtSurfFrIntersect( nTempSurfId, nClampSurfId) + if nTempSurfId then + dTotalArea = dTotalArea + ceil( EgtSurfArea( nTempSurfId) or 0) + local b3BoxIntersectionBox = EgtGetBBoxGlob( nTempSurfId, GDB_BB.STANDARD) + if b3BoxIntersectionBox then + dTotalXLenght = dTotalXLenght + ceil( b3BoxIntersectionBox:getDimX()) -- somma lunghezze (x) delle aree pinzate end end - return dTotalArea, dTotalXLenght end - return 0 + return dTotalArea, dTotalXLenght end -- minima area considerata per un corretto pinzaggio diff --git a/UpdateLog.txt b/UpdateLog.txt index a41b5e2..864bc48 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,9 @@ ==== Common_FAST Update Log ==== +Versione 3.1-- (-/--/2026) +- (SIM) Ottimizzata scrittura funzione ClampCheck post aggiornamento dll +- (SIM) Corretto problema della funzione OnSimulDispositionStart in caso di fase finale. + Versione 2.7l3 (22/12/2025) - (SIM) Eliminata MinJoin, utilizzata al suo posto funzione già esistente UpdateMinJoin nell'mlde - (SIM) Modificata formula calcolo Area minima diff --git a/Version.lua b/Version.lua index d3851bc..97828fb 100644 --- a/Version.lua +++ b/Version.lua @@ -3,7 +3,7 @@ local InfoCommon_STD_PP = { NAME = 'Common_FAST', -- nome script PP standard - VERSION = '2.7l3', -- versione script + VERSION = '3.1--', -- versione script MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel }