DataBeam :
- correzione a GetFaceElevation - modifiche a lavorazione LapJoint per passare i parametri Q quando si fa LongDoubleCut - modifiche a LongDoubleCut per poter ricevere parametri Q invece di leggerli più alcune migliorie - aggiunto antischggia in testa a profilo arcuato ma poi disabilitato.
This commit is contained in:
+60
-11
@@ -1,4 +1,4 @@
|
||||
-- ProcessProfCamb.lua by Egaltech s.r.l. 2020/10/30
|
||||
-- ProcessProfCamb.lua by Egaltech s.r.l. 2020/11/17
|
||||
-- Gestione calcolo profilo caudato per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
@@ -22,6 +22,9 @@ local sDepthChamferMill = 'Q03' -- d
|
||||
local sOverMaterialForFinish = 'Q04' -- d
|
||||
local sPreemptiveChamfer = 'Q05' -- i
|
||||
|
||||
-- abilitazioni extra
|
||||
dMakeAntiSplintOnHead = 0 -- valore impronta antischeggia, per disattivare settare = nil o = 0
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Riconoscimento della feature
|
||||
function ProcessProfCamb.Identify( Proc)
|
||||
@@ -94,15 +97,15 @@ local function GetSawCutData( AuxId, vtNF)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function ModifySideAndInvert( Proc, bHead, dToolDiam)
|
||||
local function ModifySideAndInvert( Proc, bHead, bForceInvert, nCutLengthMach)
|
||||
-- confronto il punto iniziale e finale della lavorazione con il box della feature
|
||||
-- e se è vicino alla parte esterna della trave inverto la lavorazione
|
||||
ptSP = EgtGetMachiningStartPoint()
|
||||
ptEp = EgtGetMachiningEndPoint()
|
||||
local nMachMode = EgtGetMachiningParam( MCH_MP.STEPTYPE)
|
||||
if nMachMode == 1 and ptSP and ptEp then
|
||||
if abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptSP:getX()) <
|
||||
abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptEp:getX()) then
|
||||
if bForceInvert or ( nMachMode == 1 and ptSP and ptEp) then
|
||||
if bForceInvert or ( abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptSP:getX()) <
|
||||
abs( EgtIf( bHead, Proc.Box:getMax():getX(), Proc.Box:getMin():getX()) - ptEp:getX())) then
|
||||
-- ottengo il lato lavoro e lo inverto
|
||||
local nSideWork = EgtGetMachiningParam( MCH_MP.WORKSIDE)
|
||||
if nSideWork > 0 then
|
||||
@@ -111,6 +114,12 @@ local function ModifySideAndInvert( Proc, bHead, dToolDiam)
|
||||
-- ottengo l'inversione e setto il contrario
|
||||
local bInvertMode = EgtGetMachiningParam( MCH_MP.INVERT)
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, not bInvertMode)
|
||||
-- se devo tagliare il percorso setto anche i parametri per l'antischeggia
|
||||
if nCutLengthMach then
|
||||
EgtSetMachiningParam( MCH_MP.OFFSR, 0.5)
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, 0)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, nCutLengthMach)
|
||||
end
|
||||
-- riapplico la lavorazione
|
||||
EgtApplyMachining( true, false)
|
||||
end
|
||||
@@ -335,7 +344,7 @@ function ProcessProfCamb.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
else
|
||||
-- applico controllo del punto entrata lavorazione e se non è distante dall'esterno
|
||||
-- della feature inverto il punto di inizio della lavorazione
|
||||
ModifySideAndInvert( Proc, bHead, dMillDiam)
|
||||
ModifySideAndInvert( Proc, bHead)
|
||||
end
|
||||
-- se lavorazione da due parti, aggiungo la seconda
|
||||
if bDoubleCham then
|
||||
@@ -372,7 +381,7 @@ function ProcessProfCamb.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
else
|
||||
-- applico controllo del punto entrata lavorazione e se non è distante dall'esterno
|
||||
-- della feature inverto il punto di inizio della lavorazione
|
||||
ModifySideAndInvert( Proc, bHead, dMillDiam)
|
||||
ModifySideAndInvert( Proc, bHead)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -382,7 +391,12 @@ function ProcessProfCamb.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
local bDouble = ( nSide ~= 0 and dProfDepth + BD.CUT_EXTRA > dToolMaxDepth)
|
||||
local dDepth = min( dToolMaxDepth, dProfDepth / 2 + BD.MILL_OVERLAP)
|
||||
-- inserisco la lavorazione
|
||||
local sName = 'Prof_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
local sName
|
||||
if dMakeAntiSplintOnHead and abs(dMakeAntiSplintOnHead) > 0 then
|
||||
sName = 'Prof_As_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
else
|
||||
sName = 'Prof_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
end
|
||||
local nMchId = EgtAddMachining( sName, sMilling)
|
||||
if not nMchId then
|
||||
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
|
||||
@@ -446,7 +460,22 @@ function ProcessProfCamb.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
else
|
||||
-- applico controllo del punto entrata lavorazione e se non è distante dall'esterno
|
||||
-- della feature inverto il punto di inizio della lavorazione
|
||||
ModifySideAndInvert( Proc, bHead, dMillDiam)
|
||||
ModifySideAndInvert( Proc, bHead)
|
||||
end
|
||||
-- se devo fare l'antischeggia in testa
|
||||
if dMakeAntiSplintOnHead and abs(dMakeAntiSplintOnHead) > 0 then
|
||||
local sNewName = 'Prof_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
-- copio lavorazione per ingresso antischeggia (la copia è la lavorazione finale)
|
||||
local nMch2Id = EgtCopyMachining( sNewName, EgtGetName( nMchId))
|
||||
-- rendo corrente la precedente, la inverto e modifico il parametri di uscita
|
||||
EgtSetCurrMachining( nMchId)
|
||||
local dCrvLen = EgtCurveLength( AuxId)
|
||||
if dCrvLen > abs(dMakeAntiSplintOnHead) then
|
||||
ModifySideAndInvert( Proc, bHead, true, ( abs(dMakeAntiSplintOnHead) - dCrvLen))
|
||||
end
|
||||
-- rendo corrente la copia (cioè la lavorazione completa)
|
||||
EgtSetCurrMachining( nMch2Id)
|
||||
nMchId = nMch2Id
|
||||
end
|
||||
-- se abilitata, aggiungo lavorazione di finitura
|
||||
if bFinish then
|
||||
@@ -472,7 +501,12 @@ function ProcessProfCamb.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
-- 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 sName
|
||||
if dMakeAntiSplintOnHead and abs(dMakeAntiSplintOnHead) > 0 then
|
||||
sName = 'ProfB_As_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
else
|
||||
sName = 'ProfB_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
end
|
||||
local nMchId = EgtAddMachining( sName, sMilling)
|
||||
if not nMchId then
|
||||
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
|
||||
@@ -504,7 +538,22 @@ function ProcessProfCamb.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
else
|
||||
-- applico controllo del punto entrata lavorazione e se non è distante dall'esterno
|
||||
-- della feature inverto il punto di inizio della lavorazione
|
||||
ModifySideAndInvert( Proc, bHead, dMillDiam)
|
||||
ModifySideAndInvert( Proc, bHead)
|
||||
end
|
||||
-- se devo fare l'antischeggia in testa
|
||||
if dMakeAntiSplintOnHead and abs(dMakeAntiSplintOnHead) > 0 then
|
||||
local sNewName = 'ProfB_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
-- copio lavorazione per ingresso antischeggia (la copia è la lavorazione finale)
|
||||
local nMch2Id = EgtCopyMachining( sNewName, EgtGetName( nMchId))
|
||||
-- rendo corrente la precedente, la inverto e modifico il parametri di uscita
|
||||
EgtSetCurrMachining( nMchId)
|
||||
local dCrvLen = EgtCurveLength( AuxId)
|
||||
if dCrvLen > abs(dMakeAntiSplintOnHead) then
|
||||
ModifySideAndInvert( Proc, bHead, true, ( abs(dMakeAntiSplintOnHead) - dCrvLen))
|
||||
end
|
||||
-- rendo corrente la copia (cioè la lavorazione completa)
|
||||
EgtSetCurrMachining( nMch2Id)
|
||||
nMchId = nMch2Id
|
||||
end
|
||||
-- se abilitata, aggiungo lavorazione di finitura
|
||||
if bFinish then
|
||||
|
||||
Reference in New Issue
Block a user