Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 647eb6e09f |
+28
-8
@@ -20,6 +20,21 @@ pcall( require, 'EmtGenMachining') -- si fa una require con PCALL perchè la li
|
||||
-----------------------------------------------------------------------------------------
|
||||
function OnSpecialLink()
|
||||
|
||||
-- non gestite lame con rinvio offsettate. da testare sega a catena
|
||||
local function GetZRotAx()
|
||||
local ZSIC = 100 / cos( ClampFrontAngle)
|
||||
local dToolRadius = EgtIf( EMC.HEAD == 'H1', EgtTdbGetCurrToolParam( MCH_TP.DIAM) / 2, EgtTdbGetCurrToolParam( MCH_TP.LEN))
|
||||
local dToolLen = EgtIf( EMC.HEAD == 'H1', EgtTdbGetCurrToolParam( MCH_TP.LEN), ChSawLen)
|
||||
local dRotCenter_ToolTip_Distance = dToolLen + MillOffs
|
||||
-- calcolo massimo ingombro utensile rispetto al centro di rotazione del mandrino (in caso di lama o utensili con diametro grande)
|
||||
local dMaxEncumbrance = sqrt( pow( dRotCenter_ToolTip_Distance, 2) + pow( dToolRadius, 2) )
|
||||
-- calcolo delta Z minimo rispetto alla pinza chiusa (angolo) con utensile che ingombra dMaxEncumbrance
|
||||
local dClampEncumbrance = ( dMaxEncumbrance / cos( ClampFrontAngle)) - ( MinX1 * tan( ClampFrontAngle)) + ClampSmallH
|
||||
-- sottrazione mandrino e aggiunta sicurezza
|
||||
local dZRotAx = ( dClampEncumbrance - MillOffs) + ZSIC
|
||||
return dZRotAx
|
||||
end
|
||||
|
||||
-- se fresa su testa 1
|
||||
if EMC.HEAD == 'H1' then
|
||||
-- se inizio lavorazione con prelievo utensile
|
||||
@@ -31,17 +46,22 @@ function OnSpecialLink()
|
||||
local nClId = EgtGetFirstNameInGroup( EMC.NEXTMCHID, 'CL') -- recupero Id del gruppo CL della lavorazione corrente
|
||||
local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL) -- Id del primo gruppo nella lavorazione (P1)
|
||||
local dAuxMoveCount = EgtGetInfo( nPathId, 'AS#', 'd') or 0 -- numero di movimenti ausiliari
|
||||
-- recupero quota massima di collegamento
|
||||
local vtFinalAxLink = EmtGetFinalAxesPos( EMC.PREVMCHID, false) or { 0, 0, 0, 0, 0}
|
||||
local vtInitAxLink = EmtGetInitialAxesPos( EMC.NEXTMCHID, false) or { 0, 0, 0, 0, 0}
|
||||
-- se ci sono stati movimenti di pinze vado a una quota sicura
|
||||
if dAuxMoveCount > 3 then
|
||||
-- recupero quota massima di collegamento
|
||||
local dZSecRotAx = 500
|
||||
-- retrazione
|
||||
EmtRemoveRise( EMC.PREVMCHID)
|
||||
EmtAddRise( EMC.PREVMCHID, { EMC.L1p, EMC.L2p, dZSecRotAx, EMC.R1p, EMC.R2p}, 30, 3, 2, 'UniqueRise=1;')
|
||||
-- approccio
|
||||
EmtRemoveClimb( EMC.NEXTMCHID)
|
||||
EmtAddClimb( EMC.NEXTMCHID, { EMC.L1, EMC.L2, dZSecRotAx, EMC.R1, EMC.R2}, 31, 2, 2, 'FirstClimb=1;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2}, 30, 2, 2, 'LastClimb=1;')
|
||||
local dZSecRotAx = GetZRotAx()
|
||||
if vtFinalAxLink[3] < dZSecRotAx or vtInitAxLink[3] < dZSecRotAx then
|
||||
-- retrazione
|
||||
EmtRemoveRise( EMC.PREVMCHID)
|
||||
EmtAddRise( EMC.PREVMCHID, { EMC.L1p, EMC.L2p, dZSecRotAx, EMC.R1p, EMC.R2p}, 30, 3, 2, 'UniqueRise=1;')
|
||||
-- approccio
|
||||
EmtRemoveClimb( EMC.NEXTMCHID)
|
||||
EmtAddClimb( EMC.NEXTMCHID, { EMC.L1, EMC.L2, dZSecRotAx, EMC.R1, EMC.R2}, 31, 2, 2, 'FirstClimb=1;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2}, 30, 2, 2, 'LastClimb=1;')
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se motosega
|
||||
|
||||
Reference in New Issue
Block a user