- aggiunto parametro dSawCornerRad a DoSideChainSaw
This commit is contained in:
+26
-25
@@ -35,6 +35,7 @@
|
||||
-- 2021/12/17 Lettura parametri Q una volta sola all'inizio.
|
||||
-- 2022/01/13 Estrapolazione da MakeMoreFaces() di MakeTwoFaces() e MakeThreeFaces(), e varie ottimizzazioni.
|
||||
-- 2022/01/19 Cambiata % lunghezza pezzo per spezzatura. Tolta correzione spessore fresa a disco con superficie da lavorare verso Z-.
|
||||
-- 2022/01/28 Aggiunte funzioni DoClean, DoPocketing, DoHeadChainSaw, DoSideChainSaw e DoHeadCut.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessLapJoint = {}
|
||||
@@ -552,7 +553,7 @@ local function VerifyBHSideMill( Proc, bSinglePart, bPrevBhSideMill)
|
||||
if bIsU or bIsL then
|
||||
local bExit = false
|
||||
for i = 1, Proc.Fct do
|
||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, i - 1, GDB_ID.ROOT)
|
||||
local _, vtN = EgtSurfTmFacetCenter( Proc.Id, i - 1, GDB_ID.ROOT)
|
||||
if abs( vtN:getX()) > 0.001 and abs( vtN:getX()) < 0.999962 then
|
||||
bExit = true
|
||||
break
|
||||
@@ -713,7 +714,7 @@ function ProcessLapJoint.IsHeadFeature( Proc, b3Raw, dCurrOvmH)
|
||||
end
|
||||
-- se una sola faccia
|
||||
if Proc.Fct == 1 then
|
||||
local ptC, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
if vtN0:getX() > 0.1 then
|
||||
return true
|
||||
end
|
||||
@@ -757,7 +758,7 @@ function ProcessLapJoint.IsTailFeature( Proc, b3Raw)
|
||||
end
|
||||
-- se una sola faccia
|
||||
if Proc.Fct == 1 then
|
||||
local ptC, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
if vtN0:getX() < -0.1 then
|
||||
return true
|
||||
end
|
||||
@@ -814,9 +815,10 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
|
||||
-- se 2 facce
|
||||
elseif Proc.Fct == 2 then
|
||||
-- dati delle facce
|
||||
local ptC = {}
|
||||
local vtN = {}
|
||||
_, vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
_, vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
ptC[2], vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
-- verifico se è lavorabile solo dal basso
|
||||
local bSmall = ( ( Proc.Head or Proc.Tail) and Proc.Box:getDimX() <= BD.GetMaxLenRidgeLapFromBottom( b3Raw:getDimZ())) or
|
||||
( not ( Proc.Head or Proc.Tail) and Proc.Box:getDimY() <= BD.GetMaxLenRidgeLapFromBottom( b3Raw:getDimZ()))
|
||||
@@ -902,17 +904,17 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
|
||||
-- se verso il basso, verifico se utilizzabile seconda faccia
|
||||
if bDown then
|
||||
if tFData.nFacInd2 and tFData.dFacElev2 < 2 * tFData.dFacElev then
|
||||
local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFData.nFacInd2, GDB_ID.ROOT)
|
||||
local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFData.nFacInd2, GDB_ID.ROOT)
|
||||
bDown = ( vtN2:getZ() < BD.NZ_MINB)
|
||||
elseif not tFData.nFacInd2 and bIsL and nFaceAdj >= 0 then
|
||||
local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT)
|
||||
local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT)
|
||||
bDown = ( vtN2:getZ() < BD.NZ_MINB)
|
||||
end
|
||||
-- verifico se la faccia principale è sottosquadra, ha forma L ed esiste la faccia adiacente
|
||||
elseif vtN:getZ() < -0.2589 and bIsL and nFaceAdj >= 0 then
|
||||
-- se il numero di facce > 2 o il box della feature supera una certa distanza dalle teste allora controllo la z della faccia ausiliaria
|
||||
if Proc.Fct > 2 or ( Proc.Box:getMax():getX() < _b3Solid:getMin():getX() - 150) or ( Proc.Box:getMin():getX() > _b3Solid:getMax():getX() + 150) then
|
||||
local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT)
|
||||
local ptC2, vtN2 = EgtSurfTmFacetCenter( Proc.Id, nFaceAdj, GDB_ID.ROOT)
|
||||
bDown = ( vtN2:getZ() < BD.NZ_MINB)
|
||||
end
|
||||
end
|
||||
@@ -926,7 +928,6 @@ end
|
||||
-- Lavorazione con fresa
|
||||
---------------------------------------------------------------------
|
||||
local function MakeOneFaceByMill( Proc)
|
||||
|
||||
-- verifico il numero di facce della tacca
|
||||
assert( ( Proc.Fct == 1), 'Error : MakeOneFaceByMill in LapJoint with ' .. tostring( Proc.Fct) .. ' faces')
|
||||
-- dati della faccia
|
||||
@@ -1112,7 +1113,6 @@ local function MakeTwoFacesByMill( Proc, bDownHead)
|
||||
sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
bOk, sErr = DoMill( Proc, sName, sMilling, 0, nFacInd, nOthInd, vtN)
|
||||
if not bOk then return bOk, sErr end
|
||||
|
||||
-- eventuale segnalazione ingombro di testa o coda
|
||||
local dMinHIng = min( 0.5 * BD.VICE_MINH, 0.5 * _b3Raw:getDimZ())
|
||||
if Proc.Box:getDimZ() > dMinHIng and Proc.Box:getMin():getZ() < _b3Raw:getMin():getZ() + dMinHIng then
|
||||
@@ -1363,7 +1363,7 @@ local function CheckToInvert( AuxId, bPositive)
|
||||
local nNewEntId = EgtCopyGlob( AuxId, sParnt)
|
||||
-- chiudo il percorso
|
||||
if EgtCloseCurveCompo( nNewEntId) then
|
||||
local vtMPlane, _, dArea = EgtCurveArea( nNewEntId)
|
||||
local vtMPlane, dDist, dArea = EgtCurveArea( nNewEntId)
|
||||
-- cancello percorso copia
|
||||
EgtErase( nNewEntId)
|
||||
if dArea and abs(dArea) > 1 then
|
||||
@@ -2041,9 +2041,9 @@ local function MakeDrillOnCorner( Proc, nFacInd, dDiam, bSpecialMach)
|
||||
if nIdIniPoint and nIdEndPoint then
|
||||
local vtExtr
|
||||
if bSpecialMach then
|
||||
local ptC, vtN0 = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
local ptC, vtN1 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][1], GDB_ID.ROOT)
|
||||
local ptC, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][2], GDB_ID.ROOT)
|
||||
local _, vtN0 = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
local _, vtN1 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][1], GDB_ID.ROOT)
|
||||
local _, vtN2 = EgtSurfTmFacetCenter( Proc.Id, tFacAdj[nIdLine][2], GDB_ID.ROOT)
|
||||
vtExtr = vtN0 + vtN1 + vtN2
|
||||
else
|
||||
-- versore direzione
|
||||
@@ -2460,7 +2460,7 @@ local function MakeByMillAsSaw( Proc, tFData, nBottomFace, sMillingOnSide, dSawD
|
||||
return false, sErr
|
||||
end
|
||||
-- Riordino le dimensioni per avere dH come lato lungo e dV come perpendicolare
|
||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT)
|
||||
local _, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT)
|
||||
if abs( vtN * tFData.rfFac:getVersX()) > abs( vtN * tFData.rfFac:getVersY()) then
|
||||
tFData.dH, tFData.dV = tFData.dV, tFData.dH
|
||||
end
|
||||
@@ -2622,8 +2622,8 @@ local function DoHeadChainSaw( Proc, sName, sSawing, tFData, nFaceUse, nFacAdj,
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function DoSideChainSaw( Proc, sName, sSawing, tFData, vtN, vtOrtho,
|
||||
nLundIdFace, dOffs, dMaxMat, bOpenStart, bOpenEnd)
|
||||
local function DoSideChainSaw( Proc, sName, sSawing, tFData, vtN, vtOrtho, nLundIdFace,
|
||||
dOffs, dMaxMat, dSawCornerRad, bOpenStart, bOpenEnd)
|
||||
local nMchFId = EgtAddMachining( sName, sSawing)
|
||||
if not nMchFId then
|
||||
local sErr = 'Error adding machining ' .. sName .. '-' .. sSawing
|
||||
@@ -2673,8 +2673,8 @@ local function DoSideChainSaw( Proc, sName, sSawing, tFData, vtN, vtOrtho,
|
||||
-- altrimenti vero tunnel (solo sopra-sotto o davanti-dietro)
|
||||
else
|
||||
-- se possibile aumento l'affondamento pari al raggio corner + 1
|
||||
if dMaxMat > ( dDepth + dSawCornerRad2 + 1) then
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, ( dDepth + dSawCornerRad2 + 1))
|
||||
if dMaxMat > ( dDepth + dSawCornerRad + 1) then
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, ( dDepth + dSawCornerRad + 1))
|
||||
-- se massimo affondamento supera altezza fessura, uso massimo affondamento
|
||||
elseif dMaxMat > ( dDepth + 1) then
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, ( dMaxMat - 1))
|
||||
@@ -2723,7 +2723,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI
|
||||
local dDistToNextPiece = EgtGetInfo( _nRawId, 'BDST', 'd') or 5.4
|
||||
if bIs3Faces then
|
||||
-- recupero la faccia con il maggior numero di adiacenze e l'elevazione relativa
|
||||
local nFacInd1, _, nFacInd2, _ = BL.GetFaceWithMostAdj( Proc.Id, _nPartId, bIs3Faces)
|
||||
local nFacInd1, dFacElev1, nFacInd2, dFacElev2 = BL.GetFaceWithMostAdj( Proc.Id, _nPartId, bIs3Faces)
|
||||
if not nFacInd1 or nFacInd1 < 0 then
|
||||
if nFacInd1 == -1 then
|
||||
bOrthoFaces = nFacInd2
|
||||
@@ -2739,7 +2739,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI
|
||||
|
||||
if bOrthoFaces then
|
||||
-- ottengo le dimensioni del tunnel
|
||||
dDimMin, dDimMax, _, vtOrtho, _, nSurfInt = GetTunnelDimension( Proc)
|
||||
dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, nSurfInt = GetTunnelDimension( Proc)
|
||||
-- verifico la direzione
|
||||
-- se devo inserire il chamfer
|
||||
if _nChamfer > 0 then
|
||||
@@ -2773,7 +2773,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI
|
||||
return false, sErr
|
||||
end
|
||||
-- Riordino le dimensioni per avere dH come lato lungo e dV come perpendicolare
|
||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT)
|
||||
local _, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacAdj, GDB_ID.ROOT)
|
||||
if abs( vtN * tFData.rfFac:getVersX()) > abs( vtN * tFData.rfFac:getVersY()) then
|
||||
tFData.dH, tFData.dV = tFData.dV, tFData.dH
|
||||
end
|
||||
@@ -2934,7 +2934,7 @@ local function MakeByChainOrSaw( Proc, tFData, dDimMin, dDimMax, vtOrtho, nLundI
|
||||
-- inserisco la lavorazione di sawing
|
||||
local sName = sName .. 'Csaw_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) .. '_' .. tostring( i)
|
||||
local dOffs = ( i - 1) * dStep
|
||||
local bOk, sErr = DoSideChainSaw(Proc, sName, sSawing2, tFData, vtN, vtOrtho, nLundIdFace, dOffs, dMaxMat2, bOpenStart, bOpenEnd)
|
||||
local bOk, sErr = DoSideChainSaw(Proc, sName, sSawing2, tFData, vtN, vtOrtho, nLundIdFace, dOffs, dMaxMat2, dSawCornerRad2, bOpenStart, bOpenEnd)
|
||||
if not bOk then
|
||||
return false, sErr
|
||||
end
|
||||
@@ -5117,9 +5117,10 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
-- verifico se da lavorare con testa da sotto
|
||||
local bDownHead = false
|
||||
if BD.DOWN_HEAD then
|
||||
local ptC = {}
|
||||
local vtN = {}
|
||||
_, vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
_, vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
ptC[2], vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
local vtNm = ( vtN[1] + vtN[2])
|
||||
vtNm:normalize()
|
||||
bDownHead = ( vtNm:getZ() < -0.5)
|
||||
|
||||
Reference in New Issue
Block a user