diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index 5798ef1..4c846ac 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -1,4 +1,4 @@ --- ProcessDrill.lua by Egaltech s.r.l. 2019/03/25 +-- ProcessDrill.lua by Egaltech s.r.l. 2019/04/01 -- Gestione calcolo forature per Travi -- Tabella per definizione modulo @@ -126,6 +126,8 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) EgtOutLog( sErr) return false, sErr end + if bToInvert then vtExtr = - vtExtr end + if Proc.Flg == -2 then bToInvert = true end -- recupero la lavorazione local nDri, sDrilling = FindDrilling( dDiam) if not sDrilling then @@ -133,8 +135,6 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) EgtOutLog( sErr) return false, sErr end - -- verifico se foro da fare al contrario - if Proc.Flg == -2 then bToInvert = true end -- inserisco la lavorazione local sName = 'Drill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) local nMchId = EgtAddMachining( sName, sDrilling) @@ -149,7 +149,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) EgtSetMachiningParam( MCH_MP.INVERT, bToInvert) -- imposto posizione braccio porta testa local nSCC = MCH_SCC.ADIR_YM - if abs( vtExtr:getY()) > 100 * GEO.EPS_ZERO and bToInvert ~= ( vtExtr:getY() > -GEO.EPS_ZERO) then + if vtExtr:getY() > 100 * GEO.EPS_ZERO then nSCC = MCH_SCC.ADIR_YP end EgtSetMachiningParam( MCH_MP.SCC, nSCC) diff --git a/LuaLibs/ProcessHeadCut.lua b/LuaLibs/ProcessHeadCut.lua index 74327f2..6f5b0ad 100644 --- a/LuaLibs/ProcessHeadCut.lua +++ b/LuaLibs/ProcessHeadCut.lua @@ -1,4 +1,4 @@ --- ProcessSplit.lua by Egaltech s.r.l. 2018/11/22 +-- ProcessSplit.lua by Egaltech s.r.l. 2019/04/08 -- Gestione calcolo tagli di testa per Travi -- Tabella per definizione modulo @@ -37,7 +37,8 @@ function ProcessHeadCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) local bHorizCut = ( b3Raw:getDimY() > b3Raw:getDimZ() + 10 * GEO.EPS_SMALL and b3Raw:getDimZ() < BD.MAX_DIM_HTCUT) - local bDoubleCut = ( not bHorizCut and b3Raw:getDimY() > BD.MAX_DIM_HTCUT+ 10 * GEO.EPS_SMALL) + local dDimYRef = EgtIf( b3Raw:getDimZ() < BD.MIN_DIM_HBEAM + 10 * GEO.EPS_SMALL, BD.MAX_DIM_HTCUT, BD.MAX_DIM_HTCUT_HBEAM) + local bDoubleCut = ( not bHorizCut and b3Raw:getDimY() > dDimYRef + 10 * GEO.EPS_SMALL) -- dati geometrici del taglio local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) -- se coincide con inizio grezzo, non va fatto diff --git a/LuaLibs/ProcessLongCut.lua b/LuaLibs/ProcessLongCut.lua index 563d045..03f4b25 100644 --- a/LuaLibs/ProcessLongCut.lua +++ b/LuaLibs/ProcessLongCut.lua @@ -49,7 +49,8 @@ end function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId) -- dati della faccia local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) - local dLen = EgtGetBBoxGlob( Proc.Id, GDB_BB.STANDARD):getDimX() + local dLen = Proc.Box:getDimX() + local dWidth = sqrt( Proc.Box:getDimY() * Proc.Box:getDimY() + Proc.Box:getDimZ() * Proc.Box:getDimZ()) -- limitazioni su inizio e fine derivanti da altre facce local bLimXmin = false local bLimXmax = false @@ -99,27 +100,46 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId) local dC = ( dLen - 2 * BD.LONGCUT_ENDLEN) / nC nC = nC + 2 -- si percorre il lato basso della faccia + local nM = 0 for i = 1, nC do - -- inserisco le parti di lavorazione - local sNameF = 'L2C_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) - local nMchFId = EgtAddMachining( sNameF, sMilling) - if not nMchFId then - local sErr = 'Error adding machining ' .. sNameF .. '-' .. sMilling - EgtOutLog( sErr) - return false, sErr + -- ciclo sulle passate + local nO = 1 + local dStep = 0 + if dWidth + 2 * BD.CUT_EXTRA > dToolDiam then + nO = ceil(( dWidth + 2 * BD.CUT_EXTRA) / dToolDiam) + if nO > 1 then + dStep = ( dWidth + 2 * BD.CUT_EXTRA - dToolDiam) / ( nO - 1) + end end - -- aggiungo geometria - EgtSetMachiningGeometry( {{ Proc.Id, 0}}) - -- limito opportunamente la lavorazione - local dSal = EgtIf( i == 1, -dStartDist, - BD.LONGCUT_ENDLEN - ( i - 2) * dC) - EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal) - local dEal = EgtIf( i == nC, -dEndDist, - BD.LONGCUT_ENDLEN - ( nC - i - 1) * dC) - EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal) - -- eseguo - if not EgtApplyMachining( true, false) then - local _, sErr = EgtGetLastMachMgrError() - EgtSetOperationMode( nMchFId, false) - return false, sErr + for k = nO, 1, -1 do + -- inserisco le parti di lavorazione + nM = nM + 1 + local sNameF = 'L2C_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) .. '_' .. tostring( nM) + local nMchFId = EgtAddMachining( sNameF, sMilling) + if not nMchFId then + local sErr = 'Error adding machining ' .. sNameF .. '-' .. sMilling + EgtOutLog( sErr) + return false, sErr + end + -- aggiungo geometria + EgtSetMachiningGeometry( {{ Proc.Id, 0}}) + -- limito opportunamente la lavorazione + local dSal = EgtIf( i == 1, -dStartDist, - BD.LONGCUT_ENDLEN - ( i - 2) * dC) + EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal) + local dEal = EgtIf( i == nC, -dEndDist, - BD.LONGCUT_ENDLEN - ( nC - i - 1) * dC) + EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal) + -- imposto offset radiale (nullo se concavo) + if k >1 then + EgtSetMachiningParam( MCH_MP.OFFSR, ( k - 1) * dStep) + else + EgtSetMachiningParam( MCH_MP.OFFSR, - BD.CUT_EXTRA) + end + -- eseguo + if not EgtApplyMachining( true, false) then + local _, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nMchFId, false) + return false, sErr + end end end -- altrimenti una o due parti diff --git a/LuaLibs/ProcessLongDoubleCut.lua b/LuaLibs/ProcessLongDoubleCut.lua index 824836b..52d3108 100644 --- a/LuaLibs/ProcessLongDoubleCut.lua +++ b/LuaLibs/ProcessLongDoubleCut.lua @@ -1,4 +1,4 @@ --- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2019/03/22 +-- ProcessLongDoubleCut.lua by Egaltech s.r.l. 2019/04/01 -- Gestione calcolo doppio taglio longitudinale per Travi -- Tabella per definizione modulo @@ -85,7 +85,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId) local vtDiff1 = ptC[vOrd[1]] - ptM vWidth[vOrd[1]] = 2 * sqrt( vtDiff1:getY() * vtDiff1:getY() + vtDiff1:getZ() * vtDiff1:getZ()) local vtDiff2 = ptC[vOrd[2]] - ptM - vWidth[vOrd[2]] = 2 * sqrt( vtDiff1:getY() * vtDiff1:getY() + vtDiff1:getZ() * vtDiff1:getZ()) + vWidth[vOrd[2]] = 2 * sqrt( vtDiff2:getY() * vtDiff2:getY() + vtDiff2:getZ() * vtDiff2:getZ()) -- recupero la lavorazione local nMill, sMilling = FindMilling( 'Long2Cut') if not sMilling then @@ -94,12 +94,12 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId) return false, sErr end -- recupero i dati dell'utensile - local dMillDiam = 0 + local dToolDiam = 0 local dMaxDepth = 0 if EgtMdbSetCurrMachining( sMilling) then local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then - dMillDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dMillDiam + dToolDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiam dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth end end @@ -126,9 +126,12 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId) -- ciclo sulle passate local nO = 1 local dStep = 0 - if vWidth[vOrd[i]] > 0.75 * dMillDiam then - nO = ceil( vWidth[vOrd[i]] * 2 / dMillDiam) - dStep = vWidth[vOrd[i]] / nO + local dAgg = EgtIf( bConvex, 2 * BD.CUT_EXTRA, BD.CUT_EXTRA) + if vWidth[vOrd[i]] + dAgg > dToolDiam then + nO = ceil(( vWidth[vOrd[i]] + dAgg) / dToolDiam) + if nO > 1 then + dStep = ( vWidth[vOrd[i]] + dAgg - dToolDiam) / ( nO - 1) + end end for k = 1, nO do -- determino direzione di movimento diff --git a/LuaLibs/ProcessProfConcave.lua b/LuaLibs/ProcessProfConcave.lua index 6ed3c79..e342d5b 100644 --- a/LuaLibs/ProcessProfConcave.lua +++ b/LuaLibs/ProcessProfConcave.lua @@ -1,4 +1,4 @@ --- ProcessProfConcave.lua by Egaltech s.r.l. 2019/04/01 +-- ProcessProfConcave.lua by Egaltech s.r.l. 2019/04/08 -- Gestione calcolo profilo caudato per Travi -- Tabella per definizione modulo @@ -48,7 +48,7 @@ local function GetSawCutData( AuxId, vtN) local ptStart = EgtMP( AuxId, GDB_ID.ROOT) local frOCS = Frame3d( ptStart, vtNP) ; local b3Box = EgtGetBBoxRef( AuxId, GDB_BB.STANDARD, frOCS) - ptStart = ptStart + vtNP * ( b3Box:getDimZ() + 10.0) + ptStart = ptStart + vtNP * ( b3Box:getMax():getZ() + 10.0) -- restituisco i dati del piano return ptStart, vtNP end @@ -67,7 +67,7 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) return false, sErr end -- recupero i dati della curva e del profilo - local dDepth = abs( EgtCurveThickness( AuxId)) + local dProfDepth = abs( EgtCurveThickness( AuxId)) local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB) local nFirstFacet = 0 -- faccia iniziale local nLastFacet = EgtSurfTmFacetCount( Proc.Id) - 1 -- faccia finale @@ -113,6 +113,17 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtOutLog( sErr) return false, sErr end + -- Recupero i dati dell'utensile + local dToolMaxDepth = 0 + if EgtMdbSetCurrMachining( sMilling) then + local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) + if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then + dToolMaxDepth = EgtTdbGetCurrToolMaxDepth() + end + end + -- verifico se necessario lavorare in doppio + local bDouble = ( nSide ~= 0 and dProfDepth > dToolMaxDepth) + local dDepth = min( dToolMaxDepth, dProfDepth / 2 + BD.MILL_OVERLAP ) -- inserisco la lavorazione local sName = 'Prof_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) local nMchId = EgtAddMachining( sName, sMilling) @@ -123,8 +134,8 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- se lavorazione da sopra - if nSide == 1 then + -- se lavorazione da sopra o da sotto + if nSide ~= 0 then -- se lavorazione a destra di fronte o sinistra da dietro, inverto if ( vtN:getX() > 0 and vtExtr:getY() < -0.1) or ( vtN:getX() < 0 and vtExtr:getY() > 0.1) then @@ -145,22 +156,64 @@ function ProcessProfConcave.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtSetMachiningParam( MCH_MP.INVERT, true) end end + -- se in doppio, imposto l'affondamento + if bDouble then + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) + end -- posizione braccio porta testa EgtSetMachiningParam( MCH_MP.SCC, EgtIf( bHead, MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)) -- imposto parametri di attacco e uscita - local bInvert = EgtGetMachiningParam( MCH_MP.INVERT) - local dLiPerp = 0 - if ( not bInvert and not bFirstTrim) or ( bInvert and not bLastTrim) then dLiPerp = 5 end - local dLoPerp = 0 - if ( not bInvert and not bLastTrim) or ( bInvert and not bFirstTrim) then dLoPerp = 5 end - EgtSetMachiningParam( MCH_MP.LIPERP, dLiPerp) - EgtSetMachiningParam( MCH_MP.LOPERP, dLoPerp) + EgtSetMachiningParam( MCH_MP.LIPERP, 5) + EgtSetMachiningParam( MCH_MP.LOPERP, 5) -- eseguo if not EgtApplyMachining( true, false) then local _, sErr = EgtGetLastMachMgrError() EgtSetOperationMode( nMchId, false) return false, sErr end + -- se lavorazione da due parti, aggiungo la seconda + if bDouble then + -- inserisco la lavorazione + local sName = 'ProfB_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local nMchId = EgtAddMachining( sName, sMilling) + if not nMchId then + local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling + EgtOutLog( sErr) + return false, sErr + end + -- aggiungo geometria + EgtSetMachiningGeometry( {{ AuxId, -1}}) + -- se lavorazione da sopra o da sotto + if nSide ~= 0 then + -- se lavorazione a destra di fronte o sinistra da dietro, inverto + if ( vtN:getX() > 0 and vtExtr:getY() > 0.1) or + ( vtN:getX() < 0 and vtExtr:getY() < -0.1) then + EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) + EgtSetMachiningParam( MCH_MP.INVERT, true) + end + -- altrimenti lavorazione da sotto + else + -- se lavorazione a destra da dietro o sinistra di fronte, inverto + if ( vtN:getX() > 0 and vtN:getY() > 0.1) or + ( vtN:getX() < 0 and vtN:getY() < -0.1) then + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) + EgtSetMachiningParam( MCH_MP.INVERT, true) + end + end + -- imposto l'affondamento + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) + -- posizione braccio porta testa + EgtSetMachiningParam( MCH_MP.SCC, EgtIf( bHead, MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)) + -- imposto parametri di attacco e uscita + EgtSetMachiningParam( MCH_MP.LIPERP, 5) + EgtSetMachiningParam( MCH_MP.LOPERP, 5) + -- eseguo + if not EgtApplyMachining( true, false) then + local _, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nMchId, false) + return false, sErr + end + end -- eventuale finitura faccia finale (ortogonale alla trave) if nSide ~= -1 and bLastTrim then sName = 'ProfV_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) diff --git a/LuaLibs/ProcessProfConvex.lua b/LuaLibs/ProcessProfConvex.lua index d4e491f..2e5c7fa 100644 --- a/LuaLibs/ProcessProfConvex.lua +++ b/LuaLibs/ProcessProfConvex.lua @@ -1,4 +1,4 @@ --- ProcessProfConvex.lua by Egaltech s.r.l. 2019/04/01 +-- ProcessProfConvex.lua by Egaltech s.r.l. 2019/04/08 -- Gestione calcolo profilo caudato per Travi -- Tabella per definizione modulo @@ -67,7 +67,7 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) return false, sErr end -- recupero i dati della curva e del profilo - local dDepth = abs( EgtCurveThickness( AuxId)) + local dProfDepth = abs( EgtCurveThickness( AuxId)) local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB) local nFirstFacet = 0 -- faccia iniziale local nLastFacet = EgtSurfTmFacetCount( Proc.Id) - 1 -- faccia finale @@ -113,6 +113,17 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtOutLog( sErr) return false, sErr end + -- Recupero i dati dell'utensile + local dToolMaxDepth = 0 + if EgtMdbSetCurrMachining( sMilling) then + local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) + if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then + dToolMaxDepth = EgtTdbGetCurrToolMaxDepth() + end + end + -- verifico se necessario lavorare in doppio + local bDouble = ( nSide ~= 0 and dProfDepth > dToolMaxDepth) + local dDepth = min( dToolMaxDepth, dProfDepth / 2 + BD.MILL_OVERLAP ) -- inserisco la lavorazione local sName = 'Prof_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) local nMchId = EgtAddMachining( sName, sMilling) @@ -123,8 +134,8 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end -- aggiungo geometria EgtSetMachiningGeometry( {{ AuxId, -1}}) - -- se lavorazione da sopra - if nSide == 1 then + -- se lavorazione da sopra o da sotto + if nSide ~= 0 then -- se lavorazione a destra di fronte o sinistra da dietro, inverto if ( vtN:getX() > 0 and vtExtr:getY() < -0.1) or ( vtN:getX() < 0 and vtExtr:getY() > 0.1) then @@ -145,22 +156,64 @@ function ProcessProfConvex.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) EgtSetMachiningParam( MCH_MP.INVERT, true) end end + -- se in doppio, imposto l'affondamento + if bDouble then + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) + end -- posizione braccio porta testa EgtSetMachiningParam( MCH_MP.SCC, EgtIf( bHead, MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)) -- imposto parametri di attacco e uscita - local bInvert = EgtGetMachiningParam( MCH_MP.INVERT) - local dLiPerp = 0 - if ( not bInvert and not bFirstTrim) or ( bInvert and not bLastTrim) then dLiPerp = 5 end - local dLoPerp = 0 - if ( not bInvert and not bLastTrim) or ( bInvert and not bFirstTrim) then dLoPerp = 5 end - EgtSetMachiningParam( MCH_MP.LIPERP, dLiPerp) - EgtSetMachiningParam( MCH_MP.LOPERP, dLoPerp) + EgtSetMachiningParam( MCH_MP.LIPERP, 5) + EgtSetMachiningParam( MCH_MP.LOPERP, 5) -- eseguo if not EgtApplyMachining( true, false) then local _, sErr = EgtGetLastMachMgrError() EgtSetOperationMode( nMchId, false) return false, sErr end + -- se lavorazione da due parti, aggiungo la seconda + if bDouble then + -- inserisco la lavorazione + local sName = 'ProfB_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) + local nMchId = EgtAddMachining( sName, sMilling) + if not nMchId then + local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling + EgtOutLog( sErr) + return false, sErr + end + -- aggiungo geometria + EgtSetMachiningGeometry( {{ AuxId, -1}}) + -- se lavorazione da sopra o da sotto + if nSide ~= 0 then + -- se lavorazione a destra di fronte o sinistra da dietro, inverto + if ( vtN:getX() > 0 and vtExtr:getY() > 0.1) or + ( vtN:getX() < 0 and vtExtr:getY() < -0.1) then + EgtSetMachiningParam( MCH_MP.TOOLINVERT, true) + EgtSetMachiningParam( MCH_MP.INVERT, true) + end + -- altrimenti lavorazione da sotto + else + -- se lavorazione a destra da dietro o sinistra di fronte, inverto + if ( vtN:getX() > 0 and vtN:getY() > 0.1) or + ( vtN:getX() < 0 and vtN:getY() < -0.1) then + EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT) + EgtSetMachiningParam( MCH_MP.INVERT, true) + end + end + -- imposto l'affondamento + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) + -- posizione braccio porta testa + EgtSetMachiningParam( MCH_MP.SCC, EgtIf( bHead, MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)) + -- imposto parametri di attacco e uscita + EgtSetMachiningParam( MCH_MP.LIPERP, 5) + EgtSetMachiningParam( MCH_MP.LOPERP, 5) + -- eseguo + if not EgtApplyMachining( true, false) then + local _, sErr = EgtGetLastMachMgrError() + EgtSetOperationMode( nMchId, false) + return false, sErr + end + end -- eventuale finitura faccia finale (ortogonale alla trave) if nSide ~= -1 and bLastTrim then sName = 'ProfV_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) diff --git a/LuaLibs/ProcessSplit.lua b/LuaLibs/ProcessSplit.lua index 9b137ee..e6a01a0 100644 --- a/LuaLibs/ProcessSplit.lua +++ b/LuaLibs/ProcessSplit.lua @@ -1,4 +1,4 @@ --- ProcessSplit.lua by Egaltech s.r.l. 2018/11/22 +-- ProcessSplit.lua by Egaltech s.r.l. 2019/04/08 -- Gestione calcolo tagli di separazione per Travi -- Tabella per definizione modulo @@ -37,7 +37,8 @@ function ProcessSplit.Make( Proc, nPhase, nRawId, nPartId) -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) local bHorizCut = ( b3Raw:getDimY() > b3Raw:getDimZ() + 10 * GEO.EPS_SMALL and b3Raw:getDimZ() < BD.MAX_DIM_HTCUT) - local bDoubleCut = ( not bHorizCut and b3Raw:getDimY() > BD.MAX_DIM_HTCUT+ 10 * GEO.EPS_SMALL) + local dDimYRef = EgtIf( b3Raw:getDimZ() < BD.MIN_DIM_HBEAM + 10 * GEO.EPS_SMALL, BD.MAX_DIM_HTCUT, BD.MAX_DIM_HTCUT_HBEAM) + local bDoubleCut = ( not bHorizCut and b3Raw:getDimY() > dDimYRef + 10 * GEO.EPS_SMALL) -- dati geometrici del taglio local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) -- flag di lavorazione faccia