- Ottimizzazioni

This commit is contained in:
luca.bacis
2022-01-12 17:27:41 +01:00
parent b72cf7364b
commit 78f7ba6d20
+155 -148
View File
@@ -145,7 +145,6 @@ local function AssignQValues( Proc)
Q_CONTOUR_SMALL_TOOL = EgtGetInfo( Proc.Id, 'Q01', 'i') or 0
Q_ANTISPLINT_TYPE = EgtGetInfo( Proc.Id, 'Q06', 'i') or 0
end
end
---------------------------------------------------------------------
@@ -237,6 +236,36 @@ local function InitGlob( Proc, nPhase, nRawId, nPartId, dOvmHead)
return true, ''
end
---------------------------------------------------------------------
local function GetToolInfoForMachining( sMachiningName)
local toolInfo = { sTuuid = nil,
dLength = nil,
dDiam = nil,
dThDiam = nil,
dMaxMat = nil,
dMaxDepth = nil,
dSideDepth = nil,
dCornerRad = nil,
dThick = nil }
if EgtMdbSetCurrMachining( sMachiningName) then
toolInfo.sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( toolInfo.sTuuid) or '') then
toolInfo.dLength = EgtTdbGetCurrToolParam( MCH_TP.LEN)
toolInfo.dDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
toolInfo.dThDiam = EgtTdbGetCurrToolThDiam()
toolInfo.dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT)
toolInfo.dMaxDepth = EgtTdbGetCurrToolMaxDepth()
toolInfo.dSideDepth = EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd')
toolInfo.dCornerRad = EgtTdbGetCurrToolParam( MCH_TP.CORNRAD)
toolInfo.dThick = EgtTdbGetCurrToolParam( MCH_TP.THICK)
return toolInfo
end
end
return nil
end
---------------------------------------------------------------------
local function FormatWarning( sWarn, sWarn2)
if sWarn2 then
@@ -247,6 +276,7 @@ local function FormatWarning( sWarn, sWarn2)
end
---------------------------------------------------------------------
-- Restituisce solo gli indici delle facce adiacenti esistenti (no -1)
local function GetValidFacetAdjacencies( nSurfId, nFacet)
local vValidAdj
local vFacAdj = EgtSurfTmFacetAdjacencies( nSurfId, nFacet)[1]
@@ -320,6 +350,7 @@ local function TestElleShape4( Proc)
end
---------------------------------------------------------------------
--- Test per facce a forma di U o a forma di L
local function TestUL( Proc)
local bIsU = ( Proc.Fct == 3 and not TestElleShape3( Proc))
-- verifico se due facce o L con una o due facce di terminazione
@@ -362,7 +393,7 @@ end
local function VerifyChainSaw( Proc, dMinDim, dMaxDim)
local bUseChainSaw = false
local sMchFind = 'Sawing'
local sSawing = ML.FindSawing(sMchFind)
local sSawing = ML.FindSawing( sMchFind)
local dMaxMat = 0
local dSawCornerRad = 0
local dSawThick = 0
@@ -374,19 +405,17 @@ local function VerifyChainSaw( Proc, dMinDim, dMaxDim)
-- recupero i dati dell'utensile
local dToolLength = 0
local dSawWidth = 75
if EgtMdbSetCurrMachining( sSawing) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dToolLength = EgtTdbGetCurrToolParam( MCH_TP.LEN) or dToolLength
dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat
dSawWidth = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dSawWidth
dSawThick = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dSawThick
dSawCornerRad = EgtTdbGetCurrToolParam( MCH_TP.CORNRAD) or dSawCornerRad
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
end
local TI = GetToolInfoForMachining( sSawing)
if TI then
dToolLength = TI.dLength or dToolLength
dMaxMat = TI.dMaxMat or dMaxMat
dSawWidth = TI.dDiam or dSawWidth
dSawThick = TI.dThick or dSawThick
dSawCornerRad = TI.dCornerRad or dSawCornerRad
dMaxDepth = TI.dMaxDepth or dMaxDepth
if dSawThick < dMinDim + 10 * GEO.EPS_SMALL and dSawWidth < dMaxDim + 10 * GEO.EPS_SMALL then
bUseChainSaw = true
end
end
end
end
return bUseChainSaw, sSawing, dMaxMat, dSawCornerRad, dSawThick, dMaxDepth
@@ -414,12 +443,10 @@ local function VerifyPocket( Proc, dDiam, dDepth, dMaxTotLen, sMchFindMaster)
local bUsePocketing = false
local dMaxDepth = 0
local dToolDiam = 0
if EgtMdbSetCurrMachining( sPocketing) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dToolDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiam
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
end
local TI = GetToolInfoForMachining( sPocketing)
if TI then
dToolDiam = TI.dDiam or dToolDiam
dMaxDepth = TI.dMaxDepth or dMaxDepth
bUsePocketing = true
end
return bUsePocketing, sPocketing, dMaxDepth, dToolDiam
@@ -461,7 +488,7 @@ local function VerifyBHSideMill( Proc, bSinglePart, bPrevBhSideMill)
local bExit = false
for i = 1, Proc.Fct do
local _, vtN = EgtSurfTmFacetCenter( Proc.Id, i - 1, GDB_ID.ROOT)
if abs(vtN:getX()) > 0.001 and abs(vtN:getX()) < 0.999962 then
if abs( vtN:getX()) > 0.001 and abs( vtN:getX()) < 0.999962 then
bExit = true
break
end
@@ -484,14 +511,12 @@ local function VerifyBHSideMill( Proc, bSinglePart, bPrevBhSideMill)
-- recupero i dati dell'utensile
local dToolLength = 0
local dMaxDepth = 0
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dToolLength = EgtTdbGetCurrToolParam( MCH_TP.LEN) or dToolLength
dToolDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiam
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
dThickTool = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dThickTool
end
local TI = GetToolInfoForMachining( sMilling)
if TI then
dToolLength = TI.dLength or dToolLength
dToolDiam = TI.dDiam or dToolDiam
dMaxDepth = TI.dMaxDepth or dMaxDepth
dThickTool = TI.dThick or dThickTool
end
-- verifico se la feature è abbastanza vicino a testa/coda da permettere la lavorazione con questo utensile
if _b3Solid then
@@ -622,7 +647,6 @@ function ProcessLapJoint.IsHeadFeature( Proc, b3Raw, dCurrOvmH)
if not InitGlob( Proc) then
return false
end
-- se una sola faccia
if Proc.Fct == 1 then
local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
@@ -668,7 +692,6 @@ function ProcessLapJoint.IsTailFeature( Proc, b3Raw)
if not InitGlob( Proc) then
return false
end
-- se una sola faccia
if Proc.Fct == 1 then
local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
@@ -719,7 +742,6 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
if not InitGlob( Proc) then
return false
end
-- se 1 faccia
if Proc.Fct == 1 then
-- dati della faccia
@@ -968,9 +990,9 @@ local function MakeTwoFacesByMill( Proc, bDownHead)
end
-- recupero i dati dell'utensile
local dTDiam = 0
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
local TI = GetToolInfoForMachining( sMilling)
if TI then
dTDiam = TI.dDiam or dTDiam
end
-- dati delle facce
local ptC = {}
@@ -983,7 +1005,7 @@ local function MakeTwoFacesByMill( Proc, bDownHead)
local bFaceOk = {}
bFaceOk[1] = ( vtN[1]:getZ() >= BD.NZ_MINB)
bFaceOk[2] = ( vtN[2]:getZ() >= BD.NZ_MINB)
if not bDownHead and not bFaceOk[1] and not bFaceOk[2] then
if not bDownHead and not bFaceOk[1] and not bFaceOk[2] then
local sErr = 'Error : LapJoint from bottom impossible'
EgtOutLog( sErr)
return false, sErr
@@ -1138,12 +1160,10 @@ local function MakeByMill( Proc, nFacInd, rfFac, dH, dV, dElev, dCollSic, bSpeci
-- recupero i dati dell'utensile
local dTDiam = 50
local dMaxMat = 0
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat
end
local TI = GetToolInfoForMachining( sMilling)
if TI then
dTDiam = TI.dDiam or dTDiam
dMaxMat = TI.dMaxMat or dMaxMat
end
-- Se massimo materiale utensile è molto inferiore dell'elevazione non faccio la lavorazione e do un warning
if dMaxMat > 0 and dMaxMat + 15 < dElev + dCollSic then
@@ -1226,7 +1246,7 @@ local function ChooseCorner( Proc, nFacInd)
local tFacAdj = {}
for i = 1, #vAdj do
if vAdj[i] >= 0 then
for j = i+1, #vAdj do
for j = i + 1, #vAdj do
if vAdj[j] >= 0 then
local _, ptP1, ptP2, dAng = EgtSurfTmFacetsContact( Proc.Id, vAdj[i], vAdj[j], GDB_ID.ROOT)
if ptP1 and ptP2 and dAng < 0 then
@@ -1318,17 +1338,20 @@ local function CheckToInvert( AuxId, bPositive)
end
---------------------------------------------------------------------
local function TestPoints( nPathInt, i, dDiff, pPiniAxis, pPendAxis, b3SolidMinAxis, b3SolidMaxAxis)
if ( abs( pPiniAxis - b3SolidMaxAxis) < dDiff and abs( pPendAxis - b3SolidMaxAxis) < dDiff) or
( abs( pPiniAxis - b3SolidMinAxis) < dDiff and abs( pPendAxis - b3SolidMinAxis) < dDiff) then
local function TestPoints( nPathInt, idx, dDiff, pP1, pP2, sAxis)
local pPini = EgtIf( sAxis == 'X', pP1:getX(), EgtIf( sAxis == 'Y', pP1:getY(), pP1:getZ()))
local pPend = EgtIf( sAxis == 'X', pP2:getX(), EgtIf( sAxis == 'Y', pP2:getY(), pP2:getZ()))
local b3SolidMin = EgtIf( sAxis == 'X', _b3Solid:getMin():getX(), EgtIf( sAxis == 'Y', _b3Solid:getMin():getY(), _b3Solid:getMin():getZ()))
local b3SolidMax = EgtIf( sAxis == 'X', _b3Solid:getMax():getX(), EgtIf( sAxis == 'Y', _b3Solid:getMax():getY(), _b3Solid:getMax():getZ()))
if ( abs( pPini - b3SolidMax) < dDiff and abs( pPend - b3SolidMax) < dDiff) or
( abs( pPini - b3SolidMin) < dDiff and abs( pPend - b3SolidMin) < dDiff) then
-- setto l'entità open
local sActInfo = EgtGetInfo( nPathInt, 'OPEN', 's') or ''
if #sActInfo > 0 then
EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. (i - 1))
EgtSetInfo( nPathInt, 'OPEN', sActInfo .. ',' .. idx)
else
EgtSetInfo( nPathInt, 'OPEN', (i - 1))
EgtSetInfo( nPathInt, 'OPEN', idx)
end
-- prendo i punti per eventuale modifica del punto di inizio percorso
return true
else
return false
@@ -1347,47 +1370,47 @@ local function SetOpenSide( nPathInt, vtOrtho, nStartPoint)
if nStartIdEnt then
-- prendo i punti
for i = 1, nNumEnt do
local pPini = EgtUP( nPathInt, (i-1), GDB_RT.GLOB)
local pPini = EgtUP( nPathInt, (i - 1), GDB_RT.GLOB)
local pPend = EgtUP( nPathInt, EgtIf( i == nNumEnt, 0, i), GDB_RT.GLOB)
-- Se normale lungo la Z considero il box in X e Y
if abs(vtOrtho:getZ()) > 0.999 then
-- se corrisponde a X
if TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getX(), pPend:getX(), _b3Solid:getMin():getX(), _b3Solid:getMax():getX()) then
-- se corrisponde a X prendo i punti per eventuale modifica del punto di inizio percorso
if TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'X') then
pLastPIni = pPini
pLastPEnd = pPend
-- altrimenti se corrisponde a Y
elseif TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getY(), pPend:getY(), _b3Solid:getMin():getY(), _b3Solid:getMax():getY()) then
-- altrimenti se corrisponde a Y prendo i punti per eventuale modifica del punto di inizio percorso
elseif TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'Y') then
pLastPIni = pPini
pLastPEnd = pPend
end
-- altrimenti se normale lungo la Y considero il box in X e Z
elseif abs(vtOrtho:getZ()) < 0.001 and abs(vtOrtho:getY()) > 0.999 then
-- se corrisponde a X
if TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getX(), pPend:getX(), _b3Solid:getMin():getX(), _b3Solid:getMax():getX()) then
-- se corrisponde a X prendo i punti per eventuale modifica del punto di inizio percorso
if TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'X') then
pLastPIni = pPini
pLastPEnd = pPend
-- altrimenti se corrisponde a Z
elseif TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getZ(), pPend:getZ(), _b3Solid:getMin():getZ(), _b3Solid:getMax():getZ()) then
-- altrimenti se corrisponde a Z prendo i punti per eventuale modifica del punto di inizio percorso
elseif TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'Z') then
pLastPIni = pPini
pLastPEnd = pPend
end
-- caso che non dovrebbe mai capitare ma gestito per completezza
-- altrimenti se normale lungo la X considero il box in Y e Z
elseif abs(vtOrtho:getZ()) < 0.001 and abs(vtOrtho:getX()) > 0.999 then
-- se corrisponde a Y
if TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getY(), pPend:getY(), _b3Solid:getMin():getY(), _b3Solid:getMax():getY()) then
-- se corrisponde a Y prendo i punti per eventuale modifica del punto di inizio percorso
if TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'Y') then
pLastPIni = pPini
pLastPEnd = pPend
-- altrimenti se corrisponde a Z
elseif TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getZ(), pPend:getZ(), _b3Solid:getMin():getZ(), _b3Solid:getMax():getZ()) then
-- altrimenti se corrisponde a Z prendo i punti per eventuale modifica del punto di inizio percorso
elseif TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'Z') then
pLastPIni = pPini
pLastPEnd = pPend
end
-- se asse Z orizzontale verifico se si avvicina piú a Y
elseif abs(vtOrtho:getZ()) < 0.001 then
if abs(vtOrtho:getY()) > 0.75 then
-- se corrisponde a Z
if TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getZ(), pPend:getZ(), _b3Solid:getMin():getZ(), _b3Solid:getMax():getZ()) then
-- se corrisponde a Z prendo i punti per eventuale modifica del punto di inizio percorso
if TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'Z') then
pLastPIni = pPini
pLastPEnd = pPend
end
@@ -1395,8 +1418,8 @@ local function SetOpenSide( nPathInt, vtOrtho, nStartPoint)
-- se asse Y a 0 (fresa ne davanti ne dietro) verifico se si avvicina piú a Z+
elseif abs(vtOrtho:getY()) < 0.001 then
if abs(vtOrtho:getZ()) > 0.75 then
-- se corrisponde a Y
if TestPoints(nPathInt, i, 10 * GEO.EPS_SMALL, pPini:getY(), pPend:getY(), _b3Solid:getMin():getY(), _b3Solid:getMax():getY()) then
-- se corrisponde a Y prendo i punti per eventuale modifica del punto di inizio percorso
if TestPoints(nPathInt, i - 1, 10 * GEO.EPS_SMALL, pPini, pPend, 'Y') then
pLastPIni = pPini
pLastPEnd = pPend
end
@@ -1436,10 +1459,10 @@ local function MakeRoundCleanCorner( Proc, nFacInd, dDiam, bMillDown, bDoubleSid
-- recupero i dati dell'utensile
local dTDiam = 50
local dTMaxDepth = 0
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
dTMaxDepth = EgtTdbGetCurrToolMaxDepth() or dTMaxDepth
local TI = GetToolInfoForMachining( sMilling)
if TI then
dTDiam = TI.dDiam or dTDiam
dTMaxDepth = TI.dMaxDepth or dTMaxDepth
end
-- se il diametro trovato non è minore dei 3/4 del diametro utilizzato in precedenza, esco
@@ -1615,11 +1638,11 @@ local function MakeRoundCleanContour( Proc, nFacInd, dDiam, nFunction, bMillDown
-- recupero i dati dell'utensile
local dTDiam = 50
local dTMaxDepth = 0
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
dTMaxDepth = EgtTdbGetCurrToolMaxDepth() or dTMaxDepth
end
local TI = GetToolInfoForMachining( sMilling)
if TI then
dTDiam = TI.dDiam or dTDiam
dTMaxDepth = TI.dMaxDepth or dTMaxDepth
end
local sMillingDn = ML.FindMilling( 'SmallToolContour' .. EgtIf( bMillDown and bDoubleSide, '_H2', ''))
if not sMillingDn then
@@ -1630,11 +1653,11 @@ local function MakeRoundCleanContour( Proc, nFacInd, dDiam, nFunction, bMillDown
-- recupero i dati dell'utensile testa da sotto
local dTDiamDn = 50
local dTMaxDepthDn = 0
if EgtMdbSetCurrMachining( sMillingDn) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
dTDiamDn = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiamDn
dTMaxDepthDn = EgtTdbGetCurrToolMaxDepth() or dTMaxDepthDn
end
local TI = GetToolInfoForMachining( sMillingDn)
if TI then
dTDiamDn = TI.dDiam or dTDiamDn
dTMaxDepthDn = TI.dMaxDepth or dTMaxDepthDn
end
-- se il diametro trovato non è minore dei 3/4 del diametro utilizzato in precedenza, esco
if dTDiam > ( 0.75 * dDiam) then
@@ -1964,7 +1987,7 @@ local function MakeSharpCleanCorner( Proc, nFacInd, dDiam)
-- inserisco le prime tre linee
if nIdIniPoint and nIdEndPoint then
-- se fresatura da sotto salto la lavorazione
if vtExtr:getZ() < BD.DRILL_VZ_MIN then
if vtExtr:getZ() < BD.DRILL_VZ_MIN then
local sErr = 'Error : clean corner milling from bottom impossible'
EgtOutLog( sErr)
return false, sErr
@@ -1980,9 +2003,9 @@ local function MakeSharpCleanCorner( Proc, nFacInd, dDiam)
return false, sErr
end
-- recupero i dati dell'utensile ( temporaneo, per compensare errore nella lavorazione)
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
dMaxDepth = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxDepth
local TI = GetToolInfoForMachining( sMilling)
if TI then
dMaxDepth = TI.dMaxMat or dMaxDepth
end
-- l'altezza di taglio del tagliente corrisponde al raggio del raccordo che si riesce a coprire
-- quindi confronto l'elevazione con il raggio utensile utilizzato per la svuotatura
@@ -2159,18 +2182,16 @@ local function MakeDrillOnCorner( Proc, nFacInd, dDiam, bSpecialMach)
local dDiamTool = 20
local dDiamTh = 35
local bIsDrilling
if EgtMdbSetCurrMachining( sDrilling) then
local TI = GetToolInfoForMachining( sDrilling)
if TI then
bIsDrilling = ( EgtMdbGetCurrMachiningParam( MCH_MP.TYPE) == MCH_MY.DRILLING)
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
if bIsDrilling then
dMaxDepth = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxDepth
else
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
end
dDiamTool = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
dDiamTh = EgtTdbGetCurrToolThDiam()
if bIsDrilling then
dMaxDepth = TI.dMaxMat or dMaxDepth
else
dMaxDepth = TI.dMaxDepth or dMaxDepth
end
dDiamTool = TI.dDiam or dDiamTool
dDiamTh = TI.dThDiam or dDiamTh
end
-- se foro inclinato, limito il massimo affondamento
local CosB = abs( vtExtr:getX())
@@ -2187,7 +2208,7 @@ local function MakeDrillOnCorner( Proc, nFacInd, dDiam, bSpecialMach)
EgtSetGridFrame( Frame3d( tFacAdj[nIdLine][nIdIniPoint], vtExtr))
end
-- creo geometria
local AuxId = EgtCircle( _nAddGrpId, {0, 0, 0}, EgtIf( bIsDrilling, dDiamTool/2, ( dDiamTool/2) + 0.1), GDB_RT.GRID)
local AuxId = EgtCircle( _nAddGrpId, {0, 0, 0}, EgtIf( bIsDrilling, dDiamTool / 2, ( dDiamTool / 2) + 0.1), GDB_RT.GRID)
-- riporto la griglia a globale
EgtSetGridFrame()
-- calcolo spessore
@@ -2774,11 +2795,9 @@ local function MakeByChainOrSaw( Proc, nFacInd,
local dSawMaxDepth = 0
local sCutting = ML.FindCutting( 'HeadSide')
if sCutting then
if EgtMdbSetCurrMachining( sCutting) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dSawMaxDepth = EgtTdbGetCurrToolMaxDepth() or dSawMaxDepth
end
local TI = GetToolInfoForMachining( sCutting)
if TI then
dSawMaxDepth = TI.dMaxDepth or dSawMaxDepth
end
end
-- se lavorazione sulle teste e altezza trave supera il limite ( che causa collisione con la forcella) e direzione taglio lungo la Z
@@ -2799,12 +2818,10 @@ local function MakeByChainOrSaw( Proc, nFacInd,
-- recupero i dati dell'utensile
local dSawDiam = 400
local dSawThick = 4
if EgtMdbSetCurrMachining( sCutting) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dSawDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dSawDiam
dSawThick = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dSawThick
end
local TI = GetToolInfoForMachining( sCutting)
if TI then
dSawDiam = TI.dDiam or dSawDiam
dSawThick = TI.dThick
end
if dSawThick > dV + 10 * GEO.EPS_SMALL then
local sErr = 'Error : sawblade too thick'
@@ -2844,14 +2861,12 @@ local function MakeByChainOrSaw( Proc, nFacInd,
-- Recupero i dati dell'utensile
local dSawWidth = 75
local dSawThick = 8
local dMaxDepth = 200
if EgtMdbSetCurrMachining( sSawing) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dSawWidth = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dSawWidth
dSawThick = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dSawThick
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
end
local dMaxDepth = 200
local TI = GetToolInfoForMachining( sSawing)
if TI then
dSawWidth = TI.dDiam or dSawWidth
dSawThick = TI.dThick or dSawThick
dMaxDepth = TI.dMaxDepth or dMaxDepth
end
if dSawThick > dV + 10 * GEO.EPS_SMALL then
local sErr = 'Error : chainsaw too thick'
@@ -3079,13 +3094,11 @@ local function MakeAntiSplintBySaw( Proc, nFacet, vtN, nFacInd, bReduceDepth, bM
local dSawDiam = 400
local dSawThick = 0
local dMaxDepth = 0
if EgtMdbSetCurrMachining( sCutting) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dSawDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dSawDiam
dSawThick = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dSawThick
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
end
local TI = GetToolInfoForMachining( sCutting)
if TI then
dSawDiam = TI.dDiam or dSawDiam
dSawThick = TI.dThick or dSawThick
dMaxDepth = TI.dMaxDepth or dMaxDepth
end
local dExtraOffs = 0
-- se profondità superiore al massimo lama modifico elevazione
@@ -3334,11 +3347,9 @@ local function MachineByMill( Proc, tvtN, nBaseFace, nSideFace, ptPs, tDimAndRef
end
-- recupero i dati dell'utensile
local dTDiam = 50
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
end
local TI = GetToolInfoForMachining( sMilling)
if TI then
dTDiam = TI.dDiam or dTDiam
end
-- Calcolo uso faccia
local nFaceUse = BL.GetNearestParalOpposite( tDimAndRef[1][3]:getVersZ())
@@ -4061,10 +4072,10 @@ local function ManageAntiSplintByMill( Proc, nFacInd, bMillDown, dDiam, bDoubleS
-- recupero i dati dell'utensile
local dTDiam = 50
local dMaxDepth = 0
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
local TI = GetToolInfoForMachining( sMilling)
if TI then
dTDiam = TI.dDiam or dTDiam
dMaxDepth = TI.dMaxDepth or dMaxDepth
end
-- se non ho la faccia aggiunta
@@ -4110,7 +4121,7 @@ local function ManageAntiSplintByMill( Proc, nFacInd, bMillDown, dDiam, bDoubleS
end
end
end
-- cotruisco il/i percorso/i
-- costruisco il/i percorso/i
nFirstId, nNumId = EgtCurveCompoByReorder( _nAddGrpId, tPaths, ptIniPath, true, GDB_RT.GLOB)
local bOkPath = true
for i = 1, nNumId do
@@ -4179,10 +4190,10 @@ local function ManageAntiSplintByMill( Proc, nFacInd, bMillDown, dDiam, bDoubleS
ML.FindMilling( 'AntiSplintMillCut_H2')
sMilling = sMillingDn
-- controllo dati lavorazione
if EgtMdbSetCurrMachining( sMilling) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dTDiam
dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth
local TI = GetToolInfoForMachining( sMilling)
if TI then
dTDiam = TI.dDiam or dTDiam
dMaxDepth = TI.dMaxDepth or dMaxDepth
end
end
-- se lavorazione valida
@@ -4907,14 +4918,12 @@ local function MakePocketingOrMilling( Proc, nFacInd, nFacInd2, bSinglePart, dFa
if sMillingOnSide then
-- recupero i dati dell'utensile
local dToolLength = 0
if EgtMdbSetCurrMachining( sMillingOnSide) then
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
dToolLength = EgtTdbGetCurrToolParam( MCH_TP.LEN) or dToolLength
dToolDiamOnSide = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiamOnSide
dThickMillOnSide = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dThickMillOnSide
dMaxDepthOnSide = EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd') or dMaxDepthOnSide
end
local TI = GetToolInfoForMachining( sMillingOnSide)
if TI then
dToolLength = TI.dLength or dToolLength
dToolDiamOnSide = TI.dDiam or dToolDiamOnSide
dThickMillOnSide = TI.dMaxMat or dThickMillOnSide
dMaxDepthOnSide = TI.dSideDepth or dMaxDepthOnSide
end
-- 2021.09.17 Su conferma di Fabio Squaratti, se la gola è più stretta dell'utensile o la profondità della gole è maggiore
-- del valore parametro SIDEDEPTH (preso dalle note utente dell'utensile) allora si prosegue come se non fosse abilitata
@@ -5115,7 +5124,7 @@ local function MakeThreeFaces( Proc, bSinglePart, bPrevBhSideMill)
end
-- altrimenti lavoro con svuotatura
else
local bSpecial3faces = false
local bSpecial3faces = false
local bBoxF = EgtGetBBoxRef( Proc.Id, GDB_BB.STANDARD, rfFac)
if dH * dV < 0.9 * ( bBoxF:getDimX() * bBoxF:getDimY()) then
@@ -5271,7 +5280,7 @@ end
---------------------------------------------------------------------
function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
-- inizializzo variabili globali al modulo
local bOk, sErr = InitGlob( Proc, nPhase, nRawId, nPartId, dOvmHead)
local bOk, sErr = InitGlob( Proc, nPhase, nRawId, nPartId, dOvmHead)
if not bOk then
return bOk, sErr
@@ -5321,9 +5330,7 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
local b3Fac2 = EgtSurfTmGetFacetBBoxGlob( Proc.Id, 1, GDB_BB.STANDARD)
if abs( b3Fac1:getDimX() - b3Fac2:getDimX()) < 50 then
-- leggo i parametri Q per utilizzare la fresa di fianco e/o lama
local nUseSideTool = Q_SIDE_ROUGH_TOOL
local bUseBlade = Q_ANTISPLINT_TYPE == 1
return Long2Cut.Make( Proc, _nPhase, _nRawId, _nPartId, bUseBlade, nUseSideTool)
return Long2Cut.Make( Proc, _nPhase, _nRawId, _nPartId, Q_ANTISPLINT_TYPE == 1, Q_SIDE_ROUGH_TOOL)
elseif b3Fac1:getDimX() < 1 then
-- la faccia 0 deve essere quella lunga
EgtSurfTmSwapFacets( Proc.Id, 0, 1)
@@ -5436,7 +5443,7 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
elseif Proc.Fct == 3 then
return MakeThreeFaces( Proc, true)
-- o più facce
else
else
return MakeMoreFaces( Proc, true)
end
end