DataBeam :

- a ProfileHead aggiunta rifinitura di tutti gli angoli interni.
This commit is contained in:
Dario Sassi
2019-04-11 15:39:27 +00:00
parent 9d4336a8a9
commit 055968ca9f
+91 -64
View File
@@ -1,4 +1,4 @@
-- ProcessProfHead.lua by Egaltech s.r.l. 2019/04/10
-- ProcessProfHead.lua by Egaltech s.r.l. 2019/04/11
-- Gestione calcolo profilo caudato per Travi
-- Tabella per definizione modulo
@@ -76,11 +76,14 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
elseif vtN:getZ() < -0.1 then
nSide = -1
end
-- verifico se necessari ripassi agli estremi negli angoli
local _, _, _, dFirstAng = EgtSurfTmFacetsContact( Proc.Id, nFirstFacet, nFirstFacet + 1, GDB_ID.ROOT)
local bFirstTrim = ( dFirstAng and dFirstAng < -30)
local _, _, _, dLastAng = EgtSurfTmFacetsContact( Proc.Id, nLastFacet, nLastFacet - 1, GDB_ID.ROOT)
local bLastTrim = ( dLastAng and dLastAng < -30)
-- verifico se necessari ripassi negli angoli
local vAngs = {}
for i = 1, Proc.Fct do
local _, _, _, dAng = EgtSurfTmFacetsContact( Proc.Id, i-1, i, GDB_ID.ROOT)
if ( dAng and dAng < -30) then
table.insert( vAngs, i - 1)
end
end
-- recupero gruppo per geometria addizionale
local nAddGrpId = BL.GetAddGroup( nPartId)
if not nAddGrpId then
@@ -198,65 +201,89 @@ function ProcessProfHead.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
return false, sErr
end
end
-- eventuale finitura faccia finale (ortogonale alla trave)
if nSide ~= -1 and bLastTrim then
sName = 'ProfV_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
local nMchVId = EgtAddMachining( sName, sMilling)
if not nMchVId then
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
EgtOutLog( sErr)
return false, sErr
end
-- aggiungo geometria
EgtSetMachiningGeometry( {{ Proc.Id, nLastFacet}})
-- aggiusto i parametri
if vtN:getZ() > 0.1 then
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN)
elseif vtN:getY() > 0.1 then
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_FRONT)
-- eventuali finiture
if nSide ~= -1 and #vAngs > 0 then
-- dimensioni feature
local dLen = Proc.Box:getDimX()
local dDep = EgtIf( nSide == 1, Proc.Box:getDimZ(), Proc.Box:getDimY())
-- se più alta che lunga
if dDep > dLen then
for i = 1, #vAngs do
sName = 'ProfV'.. tostring( i)..'_'..( EgtGetName( Proc.Id) or tostring( Proc.Id))
local nMchV2Id = EgtAddMachining( sName, sMilling)
if not nMchV2Id then
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
EgtOutLog( sErr)
return false, sErr
end
-- calcolo massima elevazione
local _, _, _, _, _, _, dElev = EgtSurfTmFacetOppositeSide( Proc.Id, vAngs[i], EgtIf( bHead, X_AX(), -X_AX()), GDB_ID.ROOT)
-- aggiungo geometria
EgtSetMachiningGeometry( {{ Proc.Id, vAngs[i]}})
-- aggiusto i parametri
if bHead then
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_LEFT)
else
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_RIGHT)
end
EgtSetMachiningParam( MCH_MP.INVERT, false)
EgtSetMachiningParam( MCH_MP.DEPTH_STR, 'TH')
EgtSetMachiningParam( MCH_MP.STEP, 0)
EgtSetMachiningParam( MCH_MP.OFFSR, 0)
EgtSetMachiningParam( MCH_MP.USERNOTES, 'MaxElev=' .. EgtNumToString( dElev, 1))
-- imposto posizione braccio
local nSCC = MCH_SCC.ADIR_YM
if nSide == 0 then
nSCC = EgtIf( vtN:getY() > 0, MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM)
end
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
-- eseguo
if not EgtApplyMachining( true, false) then
local _, sErr = EgtGetLastMachMgrError()
EgtSetOperationMode( nMchV2Id, false)
return false, sErr
end
end
-- altrimenti
else
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_BACK)
end
EgtSetMachiningParam( MCH_MP.INVERT, false)
EgtSetMachiningParam( MCH_MP.DEPTH_STR, 'TH')
EgtSetMachiningParam( MCH_MP.STEP, 0)
EgtSetMachiningParam( MCH_MP.OFFSR, 0)
-- eseguo
if not EgtApplyMachining( true, false) then
local _, sErr = EgtGetLastMachMgrError()
EgtSetOperationMode( nMchVId, false)
return false, sErr
end
end
-- eventuale finitura faccia iniziale (parallela alla trave)
if nSide ~= -1 and bFirstTrim then
sName = 'ProfV2_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
local nMchV2Id = EgtAddMachining( sName, sMilling)
if not nMchV2Id then
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
EgtOutLog( sErr)
return false, sErr
end
-- calcolo massima elevazione
local _, _, _, _, _, _, dWidth = EgtSurfTmFacetOppositeSide( Proc.Id, 0, EgtIf( bHead, X_AX(), - X_AX()), GDB_ID.ROOT)
-- aggiungo geometria
EgtSetMachiningGeometry( {{ Proc.Id, nFirstFacet}})
-- aggiusto i parametri
if bHead then
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_LEFT)
else
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_RIGHT)
end
EgtSetMachiningParam( MCH_MP.INVERT, false)
EgtSetMachiningParam( MCH_MP.DEPTH_STR, 'TH')
EgtSetMachiningParam( MCH_MP.STEP, 0)
EgtSetMachiningParam( MCH_MP.OFFSR, 0)
EgtSetMachiningParam( MCH_MP.USERNOTES, 'MaxElev=' .. EgtNumToString( dWidth, 1))
-- eseguo
if not EgtApplyMachining( true, false) then
local _, sErr = EgtGetLastMachMgrError()
EgtSetOperationMode( nMchV2Id, false)
return false, sErr
for i = 1, #vAngs do
sName = 'ProfV'.. tostring( i)..'_'..( EgtGetName( Proc.Id) or tostring( Proc.Id))
local nMchVId = EgtAddMachining( sName, sMilling)
if not nMchVId then
local sErr = 'Error adding machining ' .. sName .. '-' .. sMilling
EgtOutLog( sErr)
return false, sErr
end
-- calcolo massima elevazione
local _, _, _, _, _, _, dElev = EgtSurfTmFacetOppositeSide( Proc.Id, vAngs[i]+1, vtN, GDB_ID.ROOT)
-- aggiungo geometria
EgtSetMachiningGeometry( {{ Proc.Id, vAngs[i]+1}})
-- aggiusto i parametri
if vtN:getZ() > 0.1 then
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN)
elseif vtN:getY() > 0.1 then
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_FRONT)
else
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_BACK)
end
EgtSetMachiningParam( MCH_MP.INVERT, false)
EgtSetMachiningParam( MCH_MP.DEPTH_STR, 'TH')
EgtSetMachiningParam( MCH_MP.STEP, 0)
EgtSetMachiningParam( MCH_MP.OFFSR, 0)
EgtSetMachiningParam( MCH_MP.USERNOTES, 'MaxElev=' .. EgtNumToString( dElev, 1))
-- imposto posizione braccio
local nSCC = MCH_SCC.ADIR_YM
if nSide == 0 then
nSCC = EgtIf( bHead, MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM)
end
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
-- eseguo
if not EgtApplyMachining( true, false) then
local _, sErr = EgtGetLastMachMgrError()
EgtSetOperationMode( nMchVId, false)
return false, sErr
end
end
end
end
-- aggiorno ingombro testa o coda per presa