DataBeam :
- aggiunta gestione feature senza geometria - migliorato calcolo attacchi/uscite lama con angoli 45deg - in foratura si tiene conto anche della profondità del foro per scegliere la punta più adatta - in tagli corretto problema con tagli orizzontali (da sotto o sopra) con taglio più alto dell'utile lama - in LapJoint e simili migliorati antischeggia con lama - in Tenoni migliorata lavorazione faccia di testa con fresa.
This commit is contained in:
+34
-38
@@ -1,4 +1,4 @@
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/09/03
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/09/19
|
||||
-- Gestione calcolo mezzo-legno per Travi
|
||||
-- 2019/10/08 Agg. gestione OpenPocket.
|
||||
|
||||
@@ -317,9 +317,16 @@ local function GetTunnelDimension( Proc, nPartId)
|
||||
-- se faccia pari alla larghezza fessura
|
||||
if abs(DimH - dDimMax) < GEO.EPS_SMALL or abs(DimV - dDimMax) < GEO.EPS_SMALL then
|
||||
nLongIdFace = nFacCnt-1
|
||||
-- altrimenti faccia pari allo spessore fessura
|
||||
-- altrimenti verifico anche con la faccia precedente
|
||||
else
|
||||
nLongIdFace = nFacCnt-2
|
||||
-- prendo le dimensioni della faccia e poi confronto con il minimo
|
||||
_, DimH, DimV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFacCnt-2, GDB_ID.ROOT)
|
||||
-- se trovato con il minimo, questa seconda faccia non è la più lunga
|
||||
if abs(DimH - dDimMin) < GEO.EPS_SMALL or abs(DimV - dDimMin) < GEO.EPS_SMALL then
|
||||
nLongIdFace = nFacCnt-1
|
||||
else
|
||||
nLongIdFace = nFacCnt-2
|
||||
end
|
||||
end
|
||||
if not dDimMax then
|
||||
return dDimMin, dDimMax, dDepth, nil, nil
|
||||
@@ -2179,7 +2186,7 @@ local function MakeAntiSplintBySaw( Proc, nFacet, vtN, b3Raw)
|
||||
end
|
||||
end
|
||||
-- eseguo il taglio
|
||||
local bMadeASbyBld, sWarn, nIdMach = BL.MakeOneFaceBySaw( Proc.Id, nFacet, sCutting, dSawDiam, vtN, nil, 0, BD.CUT_SIC, 0, 0, nil, b3Raw)
|
||||
local bMadeASbyBld, sWarn, nIdMach = BL.MakeOneFaceBySaw( Proc.Id, nFacet, sCutting, dSawDiam, vtN, nil, -0.5, BD.CUT_SIC, 0, 0, nil, b3Raw)
|
||||
return bMadeASbyBld, sWarn, nIdMach, dSawThick
|
||||
end
|
||||
|
||||
@@ -3433,8 +3440,14 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSinglePart)
|
||||
end
|
||||
end
|
||||
-- va eseguito sulle facce diverse dalla principale
|
||||
local nPrevSCC = nil
|
||||
for nFacet = 0, nNumFac do
|
||||
if nFacet ~= nFacInd then
|
||||
-- lavoro
|
||||
local dSawThick = 0
|
||||
bMadeASbyBld, sWarn, nIdMach, dSawThick = MakeAntiSplintBySaw( Proc, nFacet, vtN, b3Raw)
|
||||
if not bMadeASbyBld then return false, sWarn end
|
||||
-- verifico se da invertire
|
||||
local bInvertMach = false
|
||||
if bIsU then
|
||||
if abs(vtN:getZ()) > 0.7 or abs(vtN:getY()) > 0.7 then
|
||||
@@ -3467,49 +3480,32 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSinglePart)
|
||||
end
|
||||
end
|
||||
end
|
||||
local dSawThick = 0
|
||||
bMadeASbyBld, sWarn, nIdMach, dSawThick = MakeAntiSplintBySaw( Proc, nFacet, vtN, b3Raw)
|
||||
if not bMadeASbyBld then return false, sWarn end
|
||||
-- eseguo inversione
|
||||
if bInvertMach then
|
||||
local bInvert = EgtGetMachiningParam( MCH_MP.INVERT)
|
||||
local bToolInvert = EgtGetMachiningParam( MCH_MP.TOOLINVERT)
|
||||
local nSCC = EgtGetMachiningParam( MCH_MP.SCC)
|
||||
local nInvSCC
|
||||
if nSCC == MCH_SCC.ADIR_XP then
|
||||
nInvSCC = MCH_SCC.ADIR_XM
|
||||
elseif nSCC == MCH_SCC.ADIR_XM then
|
||||
nInvSCC = MCH_SCC.ADIR_XP
|
||||
elseif nSCC == MCH_SCC.ADIR_YP then
|
||||
if abs( vtN:getY()) < 0.707 then
|
||||
nInvSCC = MCH_SCC.ADIR_YM
|
||||
else
|
||||
nInvSCC = nSCC
|
||||
end
|
||||
elseif nSCC == MCH_SCC.ADIR_YM then
|
||||
if abs( vtN:getY()) < 0.707 then
|
||||
nInvSCC = MCH_SCC.ADIR_YP
|
||||
else
|
||||
nInvSCC = nSCC
|
||||
end
|
||||
else
|
||||
nInvSCC = nSCC
|
||||
end
|
||||
local nWS = EgtGetMachiningParam( MCH_MP.WORKSIDE)
|
||||
local nInvWS = EgtIf( nWS == MCH_MILL_WS.RIGHT, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT)
|
||||
local nFaceUse = EgtGetMachiningParam( MCH_MP.FACEUSE)
|
||||
local bOrtUp = ( nFaceUse >= MCH_MILL_FU.ORTUP_DOWN and nFaceUse <= MCH_MILL_FU.ORTUP_RIGHT)
|
||||
if not bOrtUp then
|
||||
-- inverto i parametri
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, not bInvert)
|
||||
-- assegno i parametri invertiti
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, nInvWS)
|
||||
EgtSetMachiningParam( MCH_MP.TOOLINVERT, not bToolInvert)
|
||||
EgtSetMachiningParam( MCH_MP.SCC, nInvSCC)
|
||||
-- setto l'offset pari allo spessore lama
|
||||
EgtSetMachiningParam( MCH_MP.OFFSL, -dSawThick)
|
||||
end
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nIdMach, false)
|
||||
return false, sErr
|
||||
end
|
||||
end
|
||||
-- posizione del braccio : se primo taglio la recupero, altrimenti la imposto
|
||||
if not nPrevSCC then
|
||||
nPrevSCC = EgtGetMachiningParam( MCH_MP.SCC)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.SCC, nPrevSCC)
|
||||
end
|
||||
-- rieseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nIdMach, false)
|
||||
return false, sErr
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user