DataWall 2.5d2 :
- in gestione batch TS3v7 aggiunta gestione flag per taglio feature con outline (da parametro macchina WD.CUT_WITH_OUTLINE) - in FreeContour e assimilati aggiunta pulitura spigoli Q05=1 anche su sole fresature - in LapJoint e assimilati corretta scelta tipo lavorazione 'SideGroove' aggiungendo massimo spessore - in LapJoint con lavorazione di lato se MCH_SCC.ADIR_NEAR fa fallire Apply si riprova con MCH_SCC.ADIR_FAR.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2023/03/08
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2023/04/14
|
||||
-- Gestione calcolo profilo libero per Pareti
|
||||
-- 2021/11/15 Penna e chiodature sono sempre riportate sulla faccia sopra anche se nel progetto sono sotto.
|
||||
-- 2021/12/10 In taglio con lama aggiunta gestione SCC per testa Gearbox.
|
||||
@@ -16,6 +16,7 @@
|
||||
-- 2022/12/14 Aggiunto l'accorciamento della lama in caso di facce vicine orientate verso il basso
|
||||
-- 2023/02/28 In lavorazioni con sega a catena per invertire lato mandrino ora Invert + Left invece di MCH_SCC.OPPOSITE.
|
||||
-- 2023/03/08 In lavorazione con fresa, se imposto Tool_ID non si controlla più possa lavorare di testa.
|
||||
-- 2023/04/14 Aggiunta pulitura spigoli Q05=1 anche su sole fresature.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WPF = {}
|
||||
@@ -2013,8 +2014,7 @@ local function MakeByCut( Proc, nRawId, b3Raw)
|
||||
if ( nConeCut == 1 and nMlOk == 1 and dThick <= ( WD.MAX_CLEAN_CRN60 + 20 * GEO.EPS_SMALL)) or
|
||||
( nConeCut == 2 and dThick <= ( WD.MAX_CLEAN_CRN30 + 20 * GEO.EPS_SMALL)) then
|
||||
local bMcok, sMcErr = AddMillCorner( nConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
sMlErr, nAddGrpId, dThick, nNewProc, 0,
|
||||
true)
|
||||
sMlErr, nAddGrpId, dThick, nNewProc, 0, true)
|
||||
if not bMcok then return bMcok, sMcErr end
|
||||
else
|
||||
-- messaggi nel log
|
||||
@@ -2044,8 +2044,7 @@ local function MakeByCut( Proc, nRawId, b3Raw)
|
||||
-- se abilitata la lavorazione corner con stop macchina e lavorazione precedente passante e spessore sotto il limite
|
||||
if nConeCut == 1 and nCsOk == 1 and dThick <= ( WD.MAX_CLEAN_CRN60 + 20 * GEO.EPS_SMALL) then
|
||||
local bMcok, sMcErr = AddMillCorner( nConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
sCSErr, nAddGrpId, nil, nNewProc, 0,
|
||||
true)
|
||||
sCSErr, nAddGrpId, nil, nNewProc, 0, true)
|
||||
if not bMcok then return bMcok, sMcErr end
|
||||
else
|
||||
if nConeCut == 1 then
|
||||
@@ -2075,8 +2074,7 @@ local function MakeByCut( Proc, nRawId, b3Raw)
|
||||
if ( nConeCut == 1 and nMlOk == 1 and dThick <= ( WD.MAX_CLEAN_CRN60 + 20 * GEO.EPS_SMALL)) or
|
||||
( nConeCut == 2 and dThick <= ( WD.MAX_CLEAN_CRN30 + 20 * GEO.EPS_SMALL)) then
|
||||
local bMcok, sMcErr = AddMillCorner( nConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
sMlErr, nAddGrpId, dThick, nNewProc, 0,
|
||||
true)
|
||||
sMlErr, nAddGrpId, dThick, nNewProc, 0, true)
|
||||
if not bMcok then return bMcok, sMcErr end
|
||||
else
|
||||
-- messaggi nel log
|
||||
@@ -2125,6 +2123,8 @@ local function MakeByMill( Proc, nRawId, b3Raw)
|
||||
local b3Aux = EgtGetBBoxGlob( AuxId, GDB_BB.STANDARD)
|
||||
local bToolInv = ( vtExtr:getZ() < -0.1)
|
||||
local nTool_ID = EgtGetInfo( Proc.Id, 'CNT_DATA', 'i')
|
||||
-- lettura parametri (probabile/i parametro/i Q)
|
||||
local nConeCut = VerifyCornerType( Proc)
|
||||
-- recupero la lavorazione
|
||||
local bTipFeed = EgtIf( nTool_ID, false, true)
|
||||
local sMilling = WM.FindMilling( 'FreeContour', nil, nil, nTool_ID, nil, nil, bTipFeed)
|
||||
@@ -2135,23 +2135,23 @@ local function MakeByMill( Proc, nRawId, b3Raw)
|
||||
return false, sErr
|
||||
end
|
||||
-- recupero i dati dell'utensile
|
||||
local dMillDiam = 20
|
||||
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
|
||||
dMaxDepth = EgtIf( WD.MILL_MAX_DEPTH_AS_MAT, EgtTdbGetCurrToolParam( MCH_TP.MAXMAT), EgtTdbGetCurrToolMaxDepth()) or dMaxDepth
|
||||
end
|
||||
end
|
||||
-- eventuale spezzatura sul tratto più lungo se curva chiusa
|
||||
--BL.PutStartOnLonger( AuxId)
|
||||
-- verifiche per affondamento
|
||||
if b3Aux:getDimZ() > b3Raw:getDimZ() - 1.0 then
|
||||
dDepth = min( dDepth, b3Raw:getDimZ()) + WD.CUT_EXTRA
|
||||
dDepth = min( dDepth, b3Raw:getDimZ())
|
||||
end
|
||||
if dDepth > dMaxDepth then
|
||||
-- lo limito e tolgo eventuali Tabs
|
||||
dDepth = dDepth + WD.CUT_EXTRA
|
||||
local bReducedDepth = ( dDepth > dMaxDepth)
|
||||
if bReducedDepth then
|
||||
dDepth = dMaxDepth
|
||||
EgtSetMachiningParam( MCH_MP.LEAVETAB, false)
|
||||
end
|
||||
-- inserisco la lavorazione
|
||||
local sName = 'Free_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
@@ -2170,6 +2170,8 @@ local function MakeByMill( Proc, nRawId, b3Raw)
|
||||
if bToolInv then
|
||||
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
|
||||
end
|
||||
-- tolgo i Tabs se non passante o devo rimuovere lo sfrido
|
||||
if bReducedDepth or nConeCut == 1 then EgtSetMachiningParam( MCH_MP.LEAVETAB, false) end
|
||||
-- assegno affondamento
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, dDepth)
|
||||
-- assegno lato di lavoro
|
||||
@@ -2192,6 +2194,32 @@ local function MakeByMill( Proc, nRawId, b3Raw)
|
||||
EgtSetOperationMode( nMchId, false)
|
||||
return false, sErr
|
||||
end
|
||||
-- se abilitata la lavorazione corner con stop macchina, ci sono almeno due facce e fresata passante per consentire eliminazione sfrido
|
||||
if nConeCut == 1 and Proc.Fct >= 2 and not bReducedDepth then
|
||||
-- gruppo ausiliario
|
||||
local nAddGrpId = WL.GetAddGroup( Proc.PartId)
|
||||
-- recupero i dati di tutte le facce
|
||||
local vFace, dMaxWidth, nNewProc = GetFacesData( Proc, bOpposite, false, dMillDiam, dMaxDepth, (dMillDiam/2), nAddGrpId, b3Raw)
|
||||
-- se affondamento non superiore al limite
|
||||
if dDepth <= ( WD.MAX_CLEAN_CRN60 + 20 * GEO.EPS_SMALL) then
|
||||
local bMcok, sMcErr = AddMillCorner( nConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
dMillDiam, nAddGrpId, nil, nNewProc, 0, true)
|
||||
if not bMcok then return bMcok, sMcErr end
|
||||
else
|
||||
EgtErase( nNewProc)
|
||||
if nConeCut == 1 then
|
||||
local sErr = 'Clean corner 60° not applid because thickness: ' .. EgtNumToString( dThick, 2) ..
|
||||
' is bigger than parameter MAX_CLEAN_CRN60: ' .. EgtNumToString( WD.MAX_CLEAN_CRN60 , 2)
|
||||
EgtOutLog( sErr)
|
||||
end
|
||||
end
|
||||
elseif nConeCut == 2 then
|
||||
local sErr = 'Clean corner 30° is not applied on milling'
|
||||
EgtOutLog( sErr)
|
||||
elseif nConeCut == 3 then
|
||||
local sErr = 'Clean corner with undercut is not applied on milling'
|
||||
EgtOutLog( sErr)
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user