|
|
|
@@ -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
|
|
|
|
|