Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 91414cf313 | |||
| 530b03c5d0 | |||
| 296f55042e | |||
| a858f6785d | |||
| 01435f40ea | |||
| 8c19fd7c7f | |||
| d75fd52179 | |||
| 893f695633 | |||
| 148c226479 | |||
| 98ae212816 | |||
| e246bd329f | |||
| 4100624c08 | |||
| 91fb6887e2 | |||
| 1f888528d1 | |||
| aba14fa0e4 | |||
| a3255c957b | |||
| 4a7fa2bfa8 | |||
| 3aba6374cf | |||
| 016ccf0224 | |||
| b3e7cefd0c | |||
| 5979f55c01 | |||
| 9d50af71c6 | |||
| f5d33f780a | |||
| b771a537d6 | |||
| 19cd08c362 | |||
| 5fb8a51a25 | |||
| 4c09b35eab | |||
| 7998af903c | |||
| 30d119fecf | |||
| cf698a25be | |||
| 7db43a20e3 | |||
| 2374bbd96a | |||
| 9a6de02364 | |||
| 0ac498e17b | |||
| 0a24d14e8c | |||
| 9c6694d5ef | |||
| ad46345b8e | |||
| 0fc1fd89d1 | |||
| 09d5c3c152 | |||
| cc9f676866 | |||
| be9c6305fb | |||
| f54320bf30 | |||
| 04c4b8f756 | |||
| 027094d67e | |||
| f0385c5558 | |||
| 4b35bf714e | |||
| c2d4489879 | |||
| d0f062ab32 | |||
| 26b673fc83 | |||
| 5a681e3d60 | |||
| 948ea31698 | |||
| 7ba2d56749 | |||
| f2816185cd | |||
| 205a44075d | |||
| f876850772 | |||
| 2a60d00f61 | |||
| 4d7297c498 | |||
| 9c358734ba | |||
| 88691bddcc | |||
| b633dc4349 | |||
| c443adc95b | |||
| 0f18e03948 | |||
| d8793d5a7a | |||
| deccc61aa1 | |||
| d609a50996 | |||
| 8d01762144 | |||
| ea4c237ab9 | |||
| dc31cfba27 |
+43
-27
@@ -42,6 +42,7 @@ local BeamData = {
|
|||||||
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
|
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
|
||||||
DRILL_VZ_MIN = - 0.51, -- componente limite in Z del versore di un foro
|
DRILL_VZ_MIN = - 0.51, -- componente limite in Z del versore di un foro
|
||||||
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
|
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
|
||||||
|
MAX_ANGLE_DRILL_CUT = 15, -- delta angolo massimo tra foro e taglio che lo attraversa
|
||||||
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
||||||
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
||||||
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
|
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
|
||||||
@@ -68,6 +69,9 @@ local BeamData = {
|
|||||||
KIOTP = 5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
KIOTP = 5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||||
MAXDIAM_POCK_CORNER = 201, -- diametro massimo utensile ammesso per tasche con angoli interni
|
MAXDIAM_POCK_CORNER = 201, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||||
USE_LONGCUT = true, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
|
USE_LONGCUT = true, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
|
||||||
|
HEAD_DIM_FOR_BH = 125, -- dimensione di ingombro della testa per block haus
|
||||||
|
MAX_LEN_BH_FROM_BOTTOM = 210, -- massima lunghezza lavorabile da un lato di block haus da sotto
|
||||||
|
MAX_DIST_BH_FROM_BOTTOM = 600, -- massima distanza tra naso mandrino e sopra della trave senza collisione
|
||||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
||||||
ADVANCE_TAIL_OFFS = 10, -- accorciamento taglio di coda avanzato (minimo 1)
|
ADVANCE_TAIL_OFFS = 10, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||||
DOUBLE_HEAD_DOVETAIL = false, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
DOUBLE_HEAD_DOVETAIL = false, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
||||||
@@ -108,6 +112,17 @@ if EgtExistsFile( sData) then
|
|||||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||||
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
||||||
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||||
|
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
|
||||||
|
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
|
||||||
|
BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS
|
||||||
|
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
|
||||||
|
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
|
||||||
|
BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID
|
||||||
|
if Machine.Offsets.MAX_ANGLE_DRILL_CUT then BeamData.MAX_ANGLE_DRILL_CUT = EgtClamp( Machine.Offsets.MAX_ANGLE_DRILL_CUT, 1, 89) end
|
||||||
|
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||||
|
if Machine.Offsets.CUT_SIC then BeamData.CUT_SIC = EgtClamp( Machine.Offsets.CUT_SIC, 15, 50) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_S then BeamData.MIN_JOIN_S = EgtClamp( Machine.Offsets.MIN_JOIN_S, 80, 150) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_L then BeamData.MIN_JOIN_L = EgtClamp( Machine.Offsets.MIN_JOIN_L, 300, 450) end
|
||||||
end
|
end
|
||||||
if Machine.Trave then
|
if Machine.Trave then
|
||||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||||
@@ -216,48 +231,49 @@ local function GetSetupInfo( sHead)
|
|||||||
local SetupInfo = {}
|
local SetupInfo = {}
|
||||||
|
|
||||||
-- dati comuni
|
-- dati comuni
|
||||||
SetupInfo.bIsCSymmetric = true
|
SetupInfo.bIsCSymmetrical = true
|
||||||
SetupInfo.dCAxisEncumbrance = 180
|
SetupInfo.dCAxisEncumbrance = 180
|
||||||
SetupInfo.bToolOnAggregate = false
|
SetupInfo.bToolOnAggregate = false
|
||||||
|
SetupInfo.Head = {}
|
||||||
|
|
||||||
-- testa 5 assi da sopra, dietro
|
-- testa 5 assi da sopra, dietro
|
||||||
if sHead == 'H11' then
|
if sHead == 'H11' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = false, bBack = true}
|
||||||
SetupInfo.bIsFrontHead = false
|
SetupInfo.dMinNz = sin( -45)
|
||||||
SetupInfo.bIsBackHead = not SetupInfo.bIsFrontHead
|
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
|
||||||
-- testa 5 assi da sopra, davanti
|
-- testa 5 assi da sopra, davanti
|
||||||
elseif sHead == 'H21' then
|
elseif sHead == 'H21' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = true, bBack = false}
|
||||||
SetupInfo.bIsFrontHead = true
|
SetupInfo.dMinNz = sin( -45)
|
||||||
SetupInfo.bIsBackHead = not SetupInfo.bIsFrontHead
|
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
|
||||||
-- lama su testa 5 assi da sopra, dietro
|
-- lama su testa 5 assi da sopra, dietro
|
||||||
elseif sHead == 'H12' then
|
elseif sHead == 'H12' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = false, bBack = true}
|
||||||
SetupInfo.bIsFrontHead = false
|
SetupInfo.dMinNz = sin( -45)
|
||||||
SetupInfo.bIsBackHead = not SetupInfo.bIsFrontHead
|
-- se con aggregato si considera non simmetrico
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
SetupInfo.bIsCSymmetrical = false
|
||||||
|
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||||
|
SetupInfo.dMaxMatDecrease = 20
|
||||||
-- lama su testa 5 assi da sopra, davanti
|
-- lama su testa 5 assi da sopra, davanti
|
||||||
elseif sHead == 'H22' then
|
elseif sHead == 'H22' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = true, bBack = false}
|
||||||
SetupInfo.bIsFrontHead = true
|
SetupInfo.dMinNz = sin( -45)
|
||||||
SetupInfo.bIsBackHead = not SetupInfo.bIsFrontHead
|
-- se con aggregato si considera non simmetrico
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
SetupInfo.bIsCSymmetrical = false
|
||||||
|
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||||
|
SetupInfo.dMaxMatDecrease = 20
|
||||||
-- motosega 1
|
-- motosega 1
|
||||||
elseif sHead == 'H13' or sHead == 'H23' then
|
elseif sHead == 'H13' or sHead == 'H23' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = {}
|
||||||
SetupInfo.dMaxNegativeAngle = 0
|
SetupInfo.dMinNz = 0
|
||||||
-- motosega 2
|
-- motosega 2
|
||||||
elseif sHead == 'H15' then
|
elseif sHead == 'H15' then
|
||||||
SetupInfo.bIsBottomHead = true
|
SetupInfo.HeadType = { bTop = false, bBottom = true}
|
||||||
SetupInfo.bIsTopHead = not SetupInfo.bIsBottomHead
|
SetupInfo.PreferredSide = {}
|
||||||
SetupInfo.dMaxPositiveAngle = 0
|
SetupInfo.dMaxNz = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
return SetupInfo
|
return SetupInfo
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
22=Long2CutSide
|
22=Long2CutSide
|
||||||
23=SmallToolContour
|
23=SmallToolContour
|
||||||
24=AntiSplintMillCut
|
24=AntiSplintMillCut
|
||||||
|
25=Prof_end
|
||||||
|
26=SideMillAsBlade
|
||||||
|
|
||||||
[Pocketing]
|
[Pocketing]
|
||||||
1=Pocket
|
1=Pocket
|
||||||
|
|||||||
+628
-289
File diff suppressed because it is too large
Load Diff
+549
-84
File diff suppressed because it is too large
Load Diff
+169
-14
@@ -4,9 +4,74 @@
|
|||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Generic Machinings ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
require( 'EmtGenMachining')
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
-- Carico libreria
|
-- Carico libreria
|
||||||
local BD = require( 'BeamData')
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Generic Machinings ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
require( 'EmtGenMachining')
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Special GetPrevMachiningOffset ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-----------------------------------------------------------------------------------------
|
||||||
|
function OnSpecialGetPrevMachiningOffset()
|
||||||
|
-- Aggiorno posizione della testa della trave a seguito di movimenti delle pinze non previsti tra le fasi
|
||||||
|
local function TPosUpdate()
|
||||||
|
local nClId = EgtGetFirstNameInGroup( EMC.CURRMCHID, 'CL') -- recupero Id del gruppo CL della lavorazione corrente
|
||||||
|
local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL) -- Id del primo gruppo nella lavorazione (P1)
|
||||||
|
if not nPathId then
|
||||||
|
EMC.ERR = 12
|
||||||
|
EMC.MSG = ' Error : CL group path not found'
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local dAuxMoveCount = EgtGetInfo( nPathId, 'AS#', 'd') or 0 -- numero di movimenti ausiliari
|
||||||
|
local dTRepos = nil
|
||||||
|
-- controlla ogni gruppo di movimenti ausiliari
|
||||||
|
for i = 1, dAuxMoveCount do
|
||||||
|
local aAuxMove = EgtGetInfo( nPathId, 'AS' .. tostring( i), 'vs') or {} -- array contenete i parametri di ogni gruppo
|
||||||
|
-- controlla solo i movimenti della testa trave e salva l'ultimo
|
||||||
|
if aAuxMove[1] == '2' or aAuxMove[1] == '3' then
|
||||||
|
for j = 2, #aAuxMove do
|
||||||
|
if aAuxMove[j] == 'T' then
|
||||||
|
dTRepos = aAuxMove[j+1]
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return dTRepos
|
||||||
|
end
|
||||||
|
|
||||||
|
-- default
|
||||||
|
EMC.ERR = 0
|
||||||
|
EMC.PREVOFFSX = 0
|
||||||
|
-- se c'è cambio di fase tra le lavorazioni (quindi la precedente è l'ultima della sua fase e la corrente la prima)
|
||||||
|
if EMC.PREVPHASE ~= EMC.CURRPHASE then
|
||||||
|
-- se la fase corrente è di inizio lavorazione di nuova trave
|
||||||
|
if IsStartOrRestPhase( EMC.CURRPHASE) then
|
||||||
|
-- recupero la posizione finale della lavorazione precedente
|
||||||
|
local vPrevAx = EmtGetFinalAxesPos( EMC.PREVMCHID)
|
||||||
|
-- ricava se e quanto la trave viene spostata tra le due fasi dai movimenti ausiliari e corregge l'offset di fine fase
|
||||||
|
local dNewTPos = TPosUpdate()
|
||||||
|
-- se ci sono dei movimenti della testa trave tra le due fasi ricava il delta tra la vecchia e la nuova posizione
|
||||||
|
if dNewTPos then
|
||||||
|
EMC.PREVOFFSX = dNewTPos - vPrevAx[1]
|
||||||
|
-- oppure la X (L1) di questa corrisponde alla posizione iniziale della nuova trave, se ne deduce l'offset
|
||||||
|
else
|
||||||
|
EMC.PREVOFFSX = ParkV1 - vPrevAx[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
---------------------- OnSpecialGetMaxZ -----------------------------
|
---------------------- OnSpecialGetMaxZ -----------------------------
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function CalcExtraZ( vtTp, vtT, vMZ)
|
local function CalcExtraZ( vtTp, vtT, vMZ)
|
||||||
@@ -72,7 +137,7 @@ function OnSpecialGetMaxZ()
|
|||||||
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
||||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||||
end
|
end
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||||
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||||
@@ -173,7 +238,7 @@ function OnSpecialMoveZup()
|
|||||||
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
||||||
;
|
;
|
||||||
-- se lama posizionata su CU prossimo a testa 1
|
-- se lama posizionata su CU prossimo a testa 1
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||||
-- se inclinata oltre 90 gradi e interferisce con la trave
|
-- se inclinata oltre 90 gradi e interferisce con la trave
|
||||||
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
||||||
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
||||||
@@ -208,6 +273,13 @@ function OnSpecialMoveZup()
|
|||||||
EMC.MODIF = true
|
EMC.MODIF = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif HeadIsChainSaw( EMC.HEAD) then
|
||||||
|
EMC.TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||||
|
if EMC.TDIR[3] < -0.15 and EMC.L3 > - EMC.TTOTLEN then
|
||||||
|
EMC.L3 = EMC.TTOTLEN * EMC.TDIR[3]
|
||||||
|
-- dichiaro modificato
|
||||||
|
EMC.MODIF = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -223,7 +295,7 @@ local MIN_BACK_ENG_V = 115 -- ingombro asse Z a sinistra
|
|||||||
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
||||||
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
||||||
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
||||||
local MAX_BACK_CLAMP_5 = 320 -- massima sporgenza posteriore del pezzo da pinza speciale
|
local MAX_BACK_CLAMP_5 = EgtClamp( MaxBackClamp5 or 320, 200, 380) -- massima sporgenza posteriore del pezzo da pinza speciale
|
||||||
|
|
||||||
----------------------- Variabili -----------------------------------
|
----------------------- Variabili -----------------------------------
|
||||||
local Test = false
|
local Test = false
|
||||||
@@ -654,14 +726,72 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnPostApplyMachining()
|
function OnPostApplyMachining()
|
||||||
|
-- Inizializzo codice di errore
|
||||||
|
EMC.ERR = 0
|
||||||
|
-- Verifico se ultima lavorazione della fase
|
||||||
|
local nNextOpeId = EgtGetNextActiveOperation( EMC.MCHID)
|
||||||
|
local bMchLast = ( not nNextOpeId or EgtGetOperationPhase( nNextOpeId) ~= EMC.PHASE) -- Agisco sui diversi percorsi della lavorazione
|
||||||
|
local nPathId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( EMC.MCHID, 'CL') or GDB_ID.NULL)
|
||||||
|
while nPathId do
|
||||||
|
-- recupero id del successivo
|
||||||
|
nPathId = EgtGetNext( nPathId)
|
||||||
|
-- verifico se ultimo percorso di ultima lavorazione della fase
|
||||||
|
local bLast = ( bMchLast and ( not nPathId))
|
||||||
|
-- se ultimo, elimino ritorno in home
|
||||||
|
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function OnSpecialApplyMachining()
|
||||||
|
|
||||||
EgtOutLog( ' Lavorazione : ' .. EgtGetName( EMC.MCHID), 1)
|
EgtOutLog( ' Lavorazione : ' .. EgtGetName( EMC.MCHID), 1)
|
||||||
|
|
||||||
-- Inizializzo codice di errore
|
-- Inizializzo codice di errore
|
||||||
EMC.ERR = 0
|
EMC.ERR = 0
|
||||||
|
|
||||||
-- Recupero la posizione della trave e dei carrelli al termine della precedente operazione
|
-- Recupero la precedente operazione
|
||||||
local nPrevOpeId = EgtGetPrevActiveOperation( EMC.MCHID)
|
local nPrevOpeId = EgtGetPrevActiveOperation( EMC.MCHID)
|
||||||
|
|
||||||
|
-- Se esiste lavorazione precedente ed è una tastatura
|
||||||
|
if nPrevOpeId and EgtGetOperationType( nPrevOpeId) == MCH_OY.PROBING then
|
||||||
|
-- se stessa testa e montato già utensile corretto
|
||||||
|
-- recupero valori assi alla fine della lavorazione precedente e all'inizio della corrente
|
||||||
|
local vPrevAxes = EmtGetFinalAxesPos( nPrevOpeId, true)
|
||||||
|
local vCurrAxes = EmtGetInitialAxesPos( EMC.MCHID, true)
|
||||||
|
-- info lavorazione precedente
|
||||||
|
EgtSetCurrMachining( nPrevOpeId)
|
||||||
|
local sPrevTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
local sPrevHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
local nSetHead = GetHeadSet( sPrevHead)
|
||||||
|
local bPrevIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||||
|
-- info lavorazione corrente
|
||||||
|
EgtSetCurrMachining( EMC.MCHID)
|
||||||
|
local sCurrTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
local sCurrHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
nSetHead = GetHeadSet( sCurrHead)
|
||||||
|
local bCurrIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||||
|
|
||||||
|
-- se utensile corrente è compatibile (significa che è già stato precaricato) se stessa testa e con stessa configurazioen assi rotanti, annullo risalita
|
||||||
|
if IsToolCompatibleWithProbe( sCurrTool, sPrevTool) and bPrevIsFirstHead == bCurrIsFirstHead and abs( vCurrAxes[4] - vPrevAxes[4]) < 1 and abs( vCurrAxes[5] - vPrevAxes[5]) < 1 then
|
||||||
|
-- in lavorazione precedente elimino eventuale retrazione a Zmax
|
||||||
|
EmtRemoveRise( nPrevOpeId)
|
||||||
|
-- in lavorazione corrente elimino eventuale approccio da Zmax
|
||||||
|
EmtRemoveClimb( EMC.MCHID)
|
||||||
|
-- prendo sempre la Z massima tra le due
|
||||||
|
local vClimbPoint
|
||||||
|
if vCurrAxes[3] - 1.0 < vPrevAxes[3] then
|
||||||
|
vClimbPoint = vCurrAxes
|
||||||
|
vCurrAxes[3] = vPrevAxes[3]
|
||||||
|
elseif vPrevAxes[3] - 1.0 < vCurrAxes[3] then
|
||||||
|
vClimbPoint = vPrevAxes
|
||||||
|
vPrevAxes[3] = vCurrAxes[3]
|
||||||
|
end
|
||||||
|
EmtAddClimb( EMC.MCHID, vClimbPoint, 4, 1, 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Recupero la posizione della trave e dei carrelli al termine della precedente operazione
|
||||||
-- se precedente operazione non esiste, errore
|
-- se precedente operazione non esiste, errore
|
||||||
if not nPrevOpeId then
|
if not nPrevOpeId then
|
||||||
EMC.ERR = 1
|
EMC.ERR = 1
|
||||||
@@ -761,7 +891,7 @@ function OnPostApplyMachining()
|
|||||||
-- verifico se ultimo percorso di ultima lavorazione della fase
|
-- verifico se ultimo percorso di ultima lavorazione della fase
|
||||||
local bLast = ( bMchLast and ( not nPathId))
|
local bLast = ( bMchLast and ( not nPathId))
|
||||||
-- se ultimo, elimino ritorno in home
|
-- se ultimo, elimino ritorno in home
|
||||||
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
-- if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
||||||
-- salvo lo stato dei carrelli
|
-- salvo lo stato dei carrelli
|
||||||
local OriTPos = EMC.TPOS
|
local OriTPos = EMC.TPOS
|
||||||
local OriY1Delta = EMC.Y1DELTA
|
local OriY1Delta = EMC.Y1DELTA
|
||||||
@@ -819,7 +949,6 @@ function OnPostApplyMachining()
|
|||||||
local vAxes = EmtGetAxesPos( nLastEntId)
|
local vAxes = EmtGetAxesPos( nLastEntId)
|
||||||
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
|
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -1097,6 +1226,17 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
|||||||
end
|
end
|
||||||
-- Recupero testa
|
-- Recupero testa
|
||||||
local sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
local sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
local sToolName = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
local nSetHead = GetHeadSet( sHead)
|
||||||
|
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||||
|
|
||||||
|
-- se lavorazione di tastatura, si considera montato utensile di default
|
||||||
|
if HeadIsProbe( sHead) then
|
||||||
|
local sOtherToolName = GetToolNameFromTcPos( EgtIf( bIsFirstHead, DefTcPos1, DefTcPos2))
|
||||||
|
local sOtherHeadTool, _ = GetToolHead( sOtherToolName)
|
||||||
|
EgtLoadTool( sOtherHeadTool, 1, sOtherToolName)
|
||||||
|
end
|
||||||
|
|
||||||
-- Recupero valore assi macchina
|
-- Recupero valore assi macchina
|
||||||
local nSecId = EgtGetNext( EgtGetFirstInGroup( nPathId))
|
local nSecId = EgtGetNext( EgtGetFirstInGroup( nPathId))
|
||||||
local vAxes = EmtGetAxesPos( nSecId)
|
local vAxes = EmtGetAxesPos( nSecId)
|
||||||
@@ -1108,7 +1248,7 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
|||||||
-- Calcolo dell'ingombro della testa rispetto allo Zero Macchina
|
-- Calcolo dell'ingombro della testa rispetto allo Zero Macchina
|
||||||
local b3Enc
|
local b3Enc
|
||||||
|
|
||||||
if sHead ~= 'H21' and sHead ~= 'H22' and sHead ~= 'H23' then
|
if bIsFirstHead then
|
||||||
EgtSetAxisPos( 'C1', vAxes[4])
|
EgtSetAxisPos( 'C1', vAxes[4])
|
||||||
EgtSetAxisPos( 'B1', vAxes[5])
|
EgtSetAxisPos( 'B1', vAxes[5])
|
||||||
if sHead == 'H13' or sHead == 'H15' then
|
if sHead == 'H13' or sHead == 'H15' then
|
||||||
@@ -1142,6 +1282,7 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
|||||||
local dDistFront = - ptMax:getX() - LoadT - dHeadFront
|
local dDistFront = - ptMax:getX() - LoadT - dHeadFront
|
||||||
local dDistBack = ptMin:getX() + LoadT + EMC.LB - dHeadBack
|
local dDistBack = ptMin:getX() + LoadT + EMC.LB - dHeadBack
|
||||||
EgtOutLog( ' DistFront = ' .. EgtNumToString( dDistFront, 1) .. ' DistBack = ' .. EgtNumToString( dDistBack, 1), 3)
|
EgtOutLog( ' DistFront = ' .. EgtNumToString( dDistFront, 1) .. ' DistBack = ' .. EgtNumToString( dDistBack, 1), 3)
|
||||||
|
|
||||||
return dDistFront, dDistBack, dRollFront, dRollBack
|
return dDistFront, dDistBack, dRollFront, dRollBack
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1423,7 +1564,14 @@ function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
|||||||
local vCmd = {}
|
local vCmd = {}
|
||||||
EgtOutLog( ' *[S]', 1)
|
EgtOutLog( ' *[S]', 1)
|
||||||
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
|
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
|
||||||
local ParkT = EgtIf( bSplit and dMaxLenLeft > ParkV1 - 50, LoadT, ParkV1)
|
local ParkT = ParkV1
|
||||||
|
if bSplit then
|
||||||
|
if dMaxLenLeft + 100 > LoadT then
|
||||||
|
ParkT = dMaxLenLeft + 300
|
||||||
|
elseif dMaxLenLeft + 100 > ParkV1 then
|
||||||
|
ParkT = LoadT
|
||||||
|
end
|
||||||
|
end
|
||||||
local sType = EgtIf( EMC.Y2DELTA, 'Split', EgtIf( EMC.W2DELTA, 'SpecSplit', 'Fall'))
|
local sType = EgtIf( EMC.Y2DELTA, 'Split', EgtIf( EMC.W2DELTA, 'SpecSplit', 'Fall'))
|
||||||
table.insert( vCmd, { 0, sType})
|
table.insert( vCmd, { 0, sType})
|
||||||
if not bSplit then EnsureZmax( false, vCmd) end
|
if not bSplit then EnsureZmax( false, vCmd) end
|
||||||
@@ -1546,8 +1694,11 @@ function SpecCalcUnload()
|
|||||||
EgtOutLog( ' *[U1]', 1)
|
EgtOutLog( ' *[U1]', 1)
|
||||||
end
|
end
|
||||||
local vCmd = {}
|
local vCmd = {}
|
||||||
|
-- Tipo di scarico
|
||||||
|
local bStdUl = ( not MaxUnloadLen or MaxUnloadLen < 1 or EMC.LB - EMC.HOVM < MaxUnloadLen + 1)
|
||||||
|
|
||||||
-- Commento
|
-- Commento
|
||||||
table.insert( vCmd, { 0, 'Unloading'})
|
table.insert( vCmd, { 0, 'Unloading', EgtIf( bStdUl, 'Unloading', 'Manual Unloading')})
|
||||||
-- posizionamento sicuro teste e rulli (non serve ?)
|
-- posizionamento sicuro teste e rulli (non serve ?)
|
||||||
--table.insert( vCmd, { 4, 0})
|
--table.insert( vCmd, { 4, 0})
|
||||||
-- Se pinza Y chiusa, la apro
|
-- Se pinza Y chiusa, la apro
|
||||||
@@ -1555,11 +1706,15 @@ function SpecCalcUnload()
|
|||||||
table.insert( vCmd, { 11, 0})
|
table.insert( vCmd, { 11, 0})
|
||||||
EMC.CNT = nil
|
EMC.CNT = nil
|
||||||
end
|
end
|
||||||
-- Sposto il pezzo in posizione di scarico
|
-- Se non supero la lunghezza massima di scarico, sposto il pezzo in posizione di scarico
|
||||||
local dFinT = UnloadT - EMC.LB
|
if bStdUl then
|
||||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
local dFinT = UnloadT - EMC.LB
|
||||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||||
|
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||||
|
else
|
||||||
|
table.insert( vCmd, { 1, 'Y2', MaxY2})
|
||||||
|
end
|
||||||
-- apro la morsa
|
-- apro la morsa
|
||||||
table.insert( vCmd, { 12, 0})
|
table.insert( vCmd, { 12, 0})
|
||||||
-- riporto il carrello in home
|
-- riporto il carrello in home
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ Active=1
|
|||||||
H11.1=Standard.nge
|
H11.1=Standard.nge
|
||||||
H11.1:MILL_NOTIP=MillNoTip.nge
|
H11.1:MILL_NOTIP=MillNoTip.nge
|
||||||
H12.1=Saw.nge
|
H12.1=Saw.nge
|
||||||
|
H17.1=AngTransmBH.nge
|
||||||
H21.1=Standard.nge
|
H21.1=Standard.nge
|
||||||
H21.1:MILL_NOTIP=MillNoTip.nge
|
H21.1:MILL_NOTIP=MillNoTip.nge
|
||||||
H22.1=Saw.nge
|
H22.1=Saw.nge
|
||||||
@@ -130,6 +131,8 @@ ExitScript=ExitMach.lua
|
|||||||
H11=6608
|
H11=6608
|
||||||
; 5 axis saw
|
; 5 axis saw
|
||||||
H12=6615
|
H12=6615
|
||||||
|
; Angular transmission
|
||||||
|
H17=6617
|
||||||
; Second 5 axis head
|
; Second 5 axis head
|
||||||
H21=6620
|
H21=6620
|
||||||
; Second 5 axis saw
|
; Second 5 axis saw
|
||||||
|
|||||||
+82
-12
@@ -32,10 +32,10 @@
|
|||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
PP_VER = '2.7b2'
|
PP_VER = '3.1f2'
|
||||||
PP_NVER = '2.7.2.2'
|
PP_NVER = '3.1.6.1'
|
||||||
MIN_MACH_VER = '2.5k1'
|
MIN_MACH_VER = '2.5k1'
|
||||||
MACH_NAME = 'Essetre-PF'
|
MACH_NAME = EgtGetCurrMachineName()
|
||||||
|
|
||||||
|
|
||||||
-- Carico i dati globali
|
-- Carico i dati globali
|
||||||
@@ -104,6 +104,7 @@ SawC2Offs = 0
|
|||||||
SawB2Offs = 0
|
SawB2Offs = 0
|
||||||
MinX1 = 700
|
MinX1 = 700
|
||||||
MaxX1 = 2735
|
MaxX1 = 2735
|
||||||
|
Limit_T1_Presel_T2 = MinX1
|
||||||
MinZ1 = -1550
|
MinZ1 = -1550
|
||||||
MaxZ1 = 0
|
MaxZ1 = 0
|
||||||
MinC1 = -275
|
MinC1 = -275
|
||||||
@@ -121,6 +122,7 @@ LimX1RotSaw = 800
|
|||||||
LimX1PlRotSaw = 1970
|
LimX1PlRotSaw = 1970
|
||||||
MinX2 = 0
|
MinX2 = 0
|
||||||
MaxX2 = 2035
|
MaxX2 = 2035
|
||||||
|
Limit_T2_Presel_T1 = MaxX2
|
||||||
MinZ2 = -1550
|
MinZ2 = -1550
|
||||||
MaxZ2 = 0
|
MaxZ2 = 0
|
||||||
MinC2 = -275
|
MinC2 = -275
|
||||||
@@ -144,6 +146,8 @@ ParkCSaw0Z2 = -400
|
|||||||
ParkCSawC2 = 90
|
ParkCSawC2 = 90
|
||||||
ParkCSaw0C2 = 0
|
ParkCSaw0C2 = 0
|
||||||
ParkCSawB2 = 0
|
ParkCSawB2 = 0
|
||||||
|
AngTrBHOffs = 154.5
|
||||||
|
AngTrBHLen = 90
|
||||||
TurnerOffs = 120.0
|
TurnerOffs = 120.0
|
||||||
AggLoad = 50
|
AggLoad = 50
|
||||||
DeltaTabY = 1550.0
|
DeltaTabY = 1550.0
|
||||||
@@ -163,9 +167,11 @@ SecondSaw = false
|
|||||||
AutomaticRotation = true
|
AutomaticRotation = true
|
||||||
OptimizedLoadBeam = true
|
OptimizedLoadBeam = true
|
||||||
AutoRotMinLen = 0
|
AutoRotMinLen = 0
|
||||||
CoeffVM = 0.5
|
|
||||||
EstimationRapidMultiplier = 1
|
EstimationRapidMultiplier = 1
|
||||||
ForceToCloseRollersGate = false
|
ForceToCloseRollersGate = false
|
||||||
|
AggreBlockHaus = false
|
||||||
|
DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa
|
||||||
|
ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data
|
||||||
|
|
||||||
-- Aggiornamento con dati da TechnoEssetre7
|
-- Aggiornamento con dati da TechnoEssetre7
|
||||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF.data"
|
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF.data"
|
||||||
@@ -222,6 +228,8 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.MIN_V2 then MinV2 = Machine.Offsets.MIN_V2 end
|
if Machine.Offsets.MIN_V2 then MinV2 = Machine.Offsets.MIN_V2 end
|
||||||
if Machine.Offsets.MAX_V2 then MaxV2 = Machine.Offsets.MAX_V2 end
|
if Machine.Offsets.MAX_V2 then MaxV2 = Machine.Offsets.MAX_V2 end
|
||||||
if Machine.Offsets.CLAMP5 then Clamp5 = ( Machine.Offsets.CLAMP5 == 1) end
|
if Machine.Offsets.CLAMP5 then Clamp5 = ( Machine.Offsets.CLAMP5 == 1) end
|
||||||
|
if Machine.Offsets.MIN_W then MinW = Machine.Offsets.MIN_W end
|
||||||
|
if Machine.Offsets.MAX_W then MaxW = Machine.Offsets.MAX_W end
|
||||||
if Machine.Offsets.MINWOPEN then MinWOpen = Machine.Offsets.MINWOPEN end
|
if Machine.Offsets.MINWOPEN then MinWOpen = Machine.Offsets.MINWOPEN end
|
||||||
if Machine.Offsets.MAXWOPEN then MaxWOpen = Machine.Offsets.MAXWOPEN end
|
if Machine.Offsets.MAXWOPEN then MaxWOpen = Machine.Offsets.MAXWOPEN end
|
||||||
if Machine.Offsets.MAXWHEIGHT then MaxWHeight = Machine.Offsets.MAXWHEIGHT end
|
if Machine.Offsets.MAXWHEIGHT then MaxWHeight = Machine.Offsets.MAXWHEIGHT end
|
||||||
@@ -249,9 +257,21 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
||||||
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
||||||
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
||||||
|
if Machine.Offsets.LIMIT_T1_PRESEL_T2 then Limit_T1_Presel_T2 = Machine.Offsets.LIMIT_T1_PRESEL_T2 end
|
||||||
|
if Machine.Offsets.LIMIT_T2_PRESEL_T1 then Limit_T2_Presel_T1 = Machine.Offsets.LIMIT_T2_PRESEL_T1 end
|
||||||
|
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||||
|
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
||||||
|
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
||||||
|
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
||||||
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
||||||
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
||||||
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
||||||
|
if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end
|
||||||
|
AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH or AngTrBHOffs
|
||||||
|
AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen
|
||||||
|
if Machine.Offsets.MAX_BACK_CLAMP_5 then MaxBackClamp5 = Machine.Offsets.MAX_BACK_CLAMP_5 end
|
||||||
|
if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end
|
||||||
|
|
||||||
-- aggiustamenti
|
-- aggiustamenti
|
||||||
MinY1 = MinV1 + MinDeltaYV
|
MinY1 = MinV1 + MinDeltaYV
|
||||||
MaxY1 = MaxMchY1
|
MaxY1 = MaxMchY1
|
||||||
@@ -361,6 +381,23 @@ local H12Id = EmtHead {
|
|||||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||||
Geo = 'H12_HEAD/GEO'}
|
Geo = 'H12_HEAD/GEO'}
|
||||||
EgtSetInfo( H12Id, 'ZMAXONROT', '1,210,610')
|
EgtSetInfo( H12Id, 'ZMAXONROT', '1,210,610')
|
||||||
|
-- Eventuale aggregato per lavorazioni BlockHaus
|
||||||
|
if AggreBlockHaus then
|
||||||
|
local H17Id = EmtHead {
|
||||||
|
Name = 'H17',
|
||||||
|
Parent = 'B1',
|
||||||
|
HSet = 'H11',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( -AngTrBHLen, 0, -AngTrBHOffs),
|
||||||
|
TDir = X_AX(),
|
||||||
|
ADir = Z_AX(),
|
||||||
|
Rot1W = 0.2,
|
||||||
|
SolCh = MCH_SCC.ADIR_NEAR,
|
||||||
|
OthColl = {'H2', 'B/SOLID', 'C/SOLID'},
|
||||||
|
Geo = 'H17_HEAD/GEO',
|
||||||
|
Aux = {'H17_HEAD/SOLID', 'H17_HEAD/COLLISION'}}
|
||||||
|
end
|
||||||
|
|
||||||
-- *** Testa 2 ***
|
-- *** Testa 2 ***
|
||||||
local X2Id = EmtAxis {
|
local X2Id = EmtAxis {
|
||||||
Name = 'X2',
|
Name = 'X2',
|
||||||
@@ -491,7 +528,7 @@ local PY1Id = EmtAxis {
|
|||||||
Stroke = {0, MaxHoOpen},
|
Stroke = {0, MaxHoOpen},
|
||||||
Home = MaxHoOpen,
|
Home = MaxHoOpen,
|
||||||
Geo = 'PY1_AXIS/GEO',
|
Geo = 'PY1_AXIS/GEO',
|
||||||
Aux = 'PY1_AXIS/SOLID'}
|
Aux = {'PY1_AXIS/SOLID', 'PY1_AXIS/CLAMP_CHECK'}}
|
||||||
local Y2Id = EmtAxis {
|
local Y2Id = EmtAxis {
|
||||||
Name = 'Y2',
|
Name = 'Y2',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
@@ -511,7 +548,7 @@ local PY2Id = EmtAxis {
|
|||||||
Stroke = {0, MaxHoOpen},
|
Stroke = {0, MaxHoOpen},
|
||||||
Home = MaxHoOpen,
|
Home = MaxHoOpen,
|
||||||
Geo = 'PY2_AXIS/GEO',
|
Geo = 'PY2_AXIS/GEO',
|
||||||
Aux = 'PY2_AXIS/SOLID'}
|
Aux = {'PY2_AXIS/SOLID', 'PY2_AXIS/CLAMP_CHECK'}}
|
||||||
-- Rulli
|
-- Rulli
|
||||||
local V1Id = EmtAxis {
|
local V1Id = EmtAxis {
|
||||||
Name = 'V1',
|
Name = 'V1',
|
||||||
@@ -622,6 +659,7 @@ EmtTable {
|
|||||||
Parent = 'T',
|
Parent = 'T',
|
||||||
Type = MCH_TT.FLAT,
|
Type = MCH_TT.FLAT,
|
||||||
Ref1 = Point3d( - DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
Ref1 = Point3d( - DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
||||||
|
Coll = 'Base/BELT',
|
||||||
Geo = 'TABLE/GEO',
|
Geo = 'TABLE/GEO',
|
||||||
Aux = 'TABLE/SOLID'}
|
Aux = 'TABLE/SOLID'}
|
||||||
-- *** ToolChanger ***
|
-- *** ToolChanger ***
|
||||||
@@ -676,13 +714,24 @@ EmtTcPos {
|
|||||||
TDir = -Y_AX(),
|
TDir = -Y_AX(),
|
||||||
ADir = -X_AX(),
|
ADir = -X_AX(),
|
||||||
Geo = 'BASE/T8'}
|
Geo = 'BASE/T8'}
|
||||||
EmtTcPos {
|
if AggreBlockHaus then
|
||||||
|
local TcpSsId = EmtTcPos {
|
||||||
|
Name = 'T9',
|
||||||
|
Parent = 'Base',
|
||||||
|
Pos = ptTc1 + 8 * vtDt1 + Vector3d( -AngTrBHLen, AngTrBHOffs, 0),
|
||||||
|
TDir = X_AX(),
|
||||||
|
ADir = -Y_AX(),
|
||||||
|
Geo = 'BASE/T9_BH',
|
||||||
|
Aux = 'BASE/T9_HS'}
|
||||||
|
else
|
||||||
|
EmtTcPos {
|
||||||
Name = 'T9',
|
Name = 'T9',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
Pos = ptTc1 + 8 * vtDt1,
|
Pos = ptTc1 + 8 * vtDt1,
|
||||||
TDir = -Y_AX(),
|
TDir = -Y_AX(),
|
||||||
ADir = -X_AX(),
|
ADir = -X_AX(),
|
||||||
Geo = 'BASE/T9'}
|
Geo = 'BASE/T9'}
|
||||||
|
end
|
||||||
EmtTcPos {
|
EmtTcPos {
|
||||||
Name = 'T10',
|
Name = 'T10',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
@@ -792,6 +841,10 @@ EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.G
|
|||||||
if Mortiser then
|
if Mortiser then
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
end
|
end
|
||||||
|
-- sposto geometria aggiuntiva agrgegato BlockHaus
|
||||||
|
if AggreBlockHaus then
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'T9'), 'T9_HS') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
|
end
|
||||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||||
@@ -802,8 +855,10 @@ local vtMove = Vector3d( 0, ( DeltaTabY - 1550.0), ( DeltaTabZ + 1010.0))
|
|||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Y1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Y1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Y2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Y2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( V1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( V1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( QV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( QV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
@@ -839,12 +894,16 @@ function OnSetHead()
|
|||||||
EmtModifyAxisHome( 'B1', ParkB1)
|
EmtModifyAxisHome( 'B1', ParkB1)
|
||||||
EmtModifyAxisDirection( 'B1', X_AX())
|
EmtModifyAxisDirection( 'B1', X_AX())
|
||||||
-- se testa H12 (lama)
|
-- se testa H12 (lama)
|
||||||
elseif EMC.HEAD == 'H12' then
|
elseif EMC.HEAD == 'H12' or EMC.HEAD == 'H17' then
|
||||||
EmtModifyAxisHome( 'X1', ParkX1)
|
EmtModifyAxisHome( 'X1', ParkX1)
|
||||||
EmtModifyAxisHome( 'Z1', ParkZ1)
|
EmtModifyAxisHome( 'Z1', ParkZ1)
|
||||||
EmtModifyAxisHome( 'C1', ParkC1)
|
EmtModifyAxisHome( 'C1', ParkC1)
|
||||||
EmtModifyAxisHome( 'B1', ParkB1)
|
EmtModifyAxisHome( 'B1', ParkB1)
|
||||||
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
|
if EMC.HEAD == 'H12' then
|
||||||
|
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
|
||||||
|
else
|
||||||
|
EmtModifyAxisDirection( 'B1', X_AX())
|
||||||
|
end
|
||||||
-- se testa H21 (fresa2)
|
-- se testa H21 (fresa2)
|
||||||
elseif EMC.HEAD == 'H21' then
|
elseif EMC.HEAD == 'H21' then
|
||||||
local dRawH = GetRawHeight()
|
local dRawH = GetRawHeight()
|
||||||
@@ -880,11 +939,16 @@ function OnSetHead()
|
|||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
-------------------------- Testa utilizzata -------------------------
|
||||||
function GetHeadSet( sHead)
|
function GetHeadSet( sHead)
|
||||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||||
return 1
|
return 1
|
||||||
|
elseif sHead == 'H19' then
|
||||||
|
return 11
|
||||||
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
||||||
return 2
|
return 2
|
||||||
|
elseif sHead == 'H29' then
|
||||||
|
return 21
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
@@ -895,7 +959,7 @@ end
|
|||||||
function GetHeadTCSet( sHead, sTcPos)
|
function GetHeadTCSet( sHead, sTcPos)
|
||||||
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
|
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
|
||||||
-- testa 1
|
-- testa 1
|
||||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||||
-- testa 1 su CU prossimo a testa 2
|
-- testa 1 su CU prossimo a testa 2
|
||||||
if nPos > 10 then
|
if nPos > 10 then
|
||||||
return 'Head1_TC2'
|
return 'Head1_TC2'
|
||||||
@@ -932,6 +996,12 @@ function HeadIsChainSaw( sHead)
|
|||||||
return ( sHead == 'H23')
|
return ( sHead == 'H23')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- Funzione che riconosce testa per tastatore
|
||||||
|
function HeadIsProbe( sHead)
|
||||||
|
return ( sHead == 'H19' or sHead == 'H29')
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
||||||
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
||||||
@@ -959,7 +1029,7 @@ end
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
||||||
function GetZExtra( sHead, dAngV)
|
function GetZExtra( sHead, dAngV)
|
||||||
if sHead == 'H11' or sHead == 'H21' then
|
if sHead == 'H11' or sHead == 'H21' or sHead == 'H17' then
|
||||||
if abs( dAngV) < 30.1 then
|
if abs( dAngV) < 30.1 then
|
||||||
return 400
|
return 400
|
||||||
elseif abs( dAngV) < 45.1 then
|
elseif abs( dAngV) < 45.1 then
|
||||||
|
|||||||
Binary file not shown.
+28
-19
@@ -7,18 +7,20 @@
|
|||||||
[Sawing]
|
[Sawing]
|
||||||
|
|
||||||
[Milling]
|
[Milling]
|
||||||
0=d,MaxElev,0
|
0=l,MaxElev,0
|
||||||
1=d,OutRaw,0
|
1=d,OutRaw,0
|
||||||
2=d,SideElev,0
|
2=l,SideElev,0
|
||||||
3=d,TrimExt,0
|
3=d,TrimExt,0
|
||||||
4=sr,VtFaceUse,0,0,0
|
4=s,VtFaceUse,0,0,0
|
||||||
|
5=s,EdgesFaceUse,0
|
||||||
|
|
||||||
[Pocketing]
|
[Pocketing]
|
||||||
0=d,MaxElev,0
|
0=l,MaxElev,0
|
||||||
1=b,Open,0
|
1=b,Open,0
|
||||||
2=d,OpenMinSave,0
|
2=d,OpenMinSafe,0
|
||||||
3=d,OpenOutRaw,0
|
3=d,OpenOutRaw,0
|
||||||
4=d,MaxOptSize,0
|
4=l,MaxOptSize,0
|
||||||
|
5=b,AdjustFeed,1
|
||||||
|
|
||||||
[Mortising]
|
[Mortising]
|
||||||
0=d,MaxElev,0
|
0=d,MaxElev,0
|
||||||
@@ -30,21 +32,28 @@
|
|||||||
[SawFinishing]
|
[SawFinishing]
|
||||||
|
|
||||||
[GenMachining]
|
[GenMachining]
|
||||||
0=l,LinTol,0.1
|
|
||||||
1=l,MaxLen,2
|
|
||||||
2=s,Type,ZigZag
|
|
||||||
3=d,SideAng,90
|
|
||||||
4=l,Step,10
|
|
||||||
5=l,OffsProj,0
|
|
||||||
6=l,LiTang,0
|
|
||||||
7=l,LiOrth,0
|
|
||||||
8=l,LiElev,0
|
|
||||||
9=l,LoTang,0
|
|
||||||
10=l,LoOrth,0
|
|
||||||
11=l,LoElev,0
|
|
||||||
12=b,DirFromGuide,1
|
|
||||||
|
|
||||||
[SurfRoughing]
|
[SurfRoughing]
|
||||||
|
0=l,MaxElev,1000
|
||||||
|
1=b,PlaneZ,0
|
||||||
|
|
||||||
[SurfFinishing]
|
[SurfFinishing]
|
||||||
0=b,SkipMaxDown,1
|
0=b,SkipMaxDown,1
|
||||||
|
|
||||||
|
[5AxMilling]
|
||||||
|
0=l,LinTol,0.01
|
||||||
|
1=l,MaxLen,10
|
||||||
|
2=s,Type,ZigZag
|
||||||
|
3=d,SideAng,90
|
||||||
|
4=l,Step,10
|
||||||
|
5=d,AngIni,-90
|
||||||
|
6=d,AngFin,90
|
||||||
|
7=l,LiTang,0
|
||||||
|
8=l,LiOrth,0
|
||||||
|
9=l,LiElev,0
|
||||||
|
10=l,LoTang,0
|
||||||
|
11=l,LoOrth,0
|
||||||
|
12=l,LoElev,0
|
||||||
|
13=b,DirFromGuide,0
|
||||||
|
14=b,SurfAvoid,0
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -30,6 +30,7 @@ local GS = {}
|
|||||||
-- Configurazione posizioni (con o senza TC2)
|
-- Configurazione posizioni (con o senza TC2)
|
||||||
local PositionTable = {}
|
local PositionTable = {}
|
||||||
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
||||||
|
local AggreBH = ( EgtGetHeadId( 'H17') ~= nil)
|
||||||
if SecondSaw then
|
if SecondSaw then
|
||||||
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
||||||
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
||||||
@@ -38,7 +39,7 @@ if SecondSaw then
|
|||||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos10", TcPos = "T11", Head = "H22", Group = "G3"},
|
{Pos = "Pos10", TcPos = "T11", Head = "H22", Group = "G3"},
|
||||||
{Pos = "Pos11", TcPos = "T13", Head = "H21", Group = "G3"},
|
{Pos = "Pos11", TcPos = "T13", Head = "H21", Group = "G3"},
|
||||||
@@ -61,7 +62,7 @@ else
|
|||||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos10", TcPos = "T11", Head = "H21", Group = "G3"},
|
{Pos = "Pos10", TcPos = "T11", Head = "H21", Group = "G3"},
|
||||||
{Pos = "Pos11", TcPos = "T12", Head = "H21", Group = "G3"},
|
{Pos = "Pos11", TcPos = "T12", Head = "H21", Group = "G3"},
|
||||||
@@ -78,7 +79,7 @@ else
|
|||||||
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T211", Head = "H23", Group = "G2"})
|
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T211", Head = "H23", Group = "G2"})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local UsePositionHead = true
|
local UsePositionHead = false
|
||||||
|
|
||||||
local function IsInGeomSet( ToolHead, PosHead)
|
local function IsInGeomSet( ToolHead, PosHead)
|
||||||
for GsIndex = 1, #GS do
|
for GsIndex = 1, #GS do
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,104 @@
|
|||||||
==== Common_ONE-PF Update Log ====
|
==== Common_ONE-PF Update Log ====
|
||||||
|
|
||||||
|
Versione 3.1f2 (05/06/2026)
|
||||||
|
- (MLDE-GEN) Aggiunti parametri di limite asse X per decidere se fare preselezione su altra testa. Serve modifica MLDE
|
||||||
|
|
||||||
|
Versione 3.1f1 (03/06/2026)
|
||||||
|
- (NGE-MLDE-GEN-SIM) Versione unificata con predisposizione per gestione tastatori. Serve modificare anche la macchina, per ora gestione completa solo su PFrl.
|
||||||
|
|
||||||
|
Versione 3.1c2 (17/03/2026)
|
||||||
|
- (SIM-GEN) Aggiunta OnSpecialApplyMachining per calcolare i carrelli da subito
|
||||||
|
- Aggiungendo OnSpecialApplyMachining, ora la OnSpecialGetPrevMachiningOffset lavora correttamente. ATT: MIN_MACH -> 3.1b2
|
||||||
|
|
||||||
|
Versione 3.1c1 (04/03/2026)
|
||||||
|
- (GEN) Corretta chiamata di una variabile insesistente in caso di ONE
|
||||||
|
- (SIM) Allineata simulazione a generazione
|
||||||
|
|
||||||
|
Versione 3.1b1 (20/02/2026)
|
||||||
|
- (GEN) Aggiunta funzione ToolPreSelection() per la preselezione utensile. Ticket#2789
|
||||||
|
- (GEN) Funzione rinominata in ToolPreSelectionSingleHead(), ora utilizza funzione in MLDE per capire se è motosega
|
||||||
|
|
||||||
|
Versione 3.1a1 (16/01/2026)
|
||||||
|
- (SIM-GEN) Aggiunto controllo che evita collisioni durante lo svincolo in Z della sega a catena nelle funzioni ExecMoveZMax() e EmitZMax(). Ticket#2767
|
||||||
|
- (SIM-GEN) Piccola correzione modifiche fatte in precedenza
|
||||||
|
|
||||||
|
Versione 2.7l1 (18/12/2025)
|
||||||
|
- (SIM-GEN) Aggiunto controllo post movimenti ausiliari dell' EMC.PREVOFFSX nella funzione OnSpecialGetPrevMachiningOffset(). Ticket#2727
|
||||||
|
- (SIM-GEN) Divisione movimento B in approccio se > 90°. Ticket#2754
|
||||||
|
- (SIM) Aggiunta funzione CheckClamping
|
||||||
|
|
||||||
|
Versione 2.7k3 (28/11/2025)
|
||||||
|
- (GEN) Prima di andare allo scarico, si aggiunge movimento intermedio dove si aspetta che rulli scarico siano arrivati in posizione. Ticket#2716
|
||||||
|
|
||||||
|
Versione 2.7k2 (20/11/2025)
|
||||||
|
- (SIM) Aggiornata risoluzione VMillTol in funzione dello spessore lama
|
||||||
|
|
||||||
|
Versione 2.7k1 (05/11/2025)
|
||||||
|
- (SIM-GEN) Corretto calcolo per decidere se serve aprire i rulli
|
||||||
|
- (GEN) Aggiunta tolleranza in creazione piano di lavoro inclinato
|
||||||
|
- (SIM) Allo scarico si resetta Y2DELTA. Ticket#2687
|
||||||
|
|
||||||
|
Versione 2.7j3 (23/10/2025)
|
||||||
|
- (SIM) Corretta posizione parcheggio in caso di testa 1 su magazzino 2. Ticket#2660
|
||||||
|
|
||||||
|
Versione 2.7j2 (21/10/2025)
|
||||||
|
- (GEN) Se SPLIT con pinza 5, corretto salvataggio posizione pinza 2. Ticket#2654
|
||||||
|
|
||||||
|
Versione 2.7j1 (08/10/2025)
|
||||||
|
- (GEN) Salvataggio posizione Z su lavorazione precedente, sbagliava in caso di separazione. Ticket#2637
|
||||||
|
|
||||||
|
Versione 2.7i1 (10/09/2025)
|
||||||
|
- (SIM-GEN) Piccole correzioni per gestire secondo TC su ONE. Ticket#2563
|
||||||
|
- (SIM-GEN) Gestione aggregato BH completato. Ticket#2482
|
||||||
|
- (EST) Stima tempi considerando accelerazioni
|
||||||
|
- (SIM-GEN) Se fase start o restart, si aggiorna la posizione in X dell'asse per calcolare il link corretto
|
||||||
|
- (GEN) Piccola correzione risalita ZMAX dopo RELOAD del pezzo. Generazione allineata a simulazione.
|
||||||
|
|
||||||
|
Versione 2.7h2 (28/08/2025)
|
||||||
|
- (GEN) Migliorata gestione spegnimento utensile e disattivazione piano
|
||||||
|
- (SIM-GEN) Corretto nome variabile e altre piccole modifiche per Progress
|
||||||
|
|
||||||
|
Versione 2.7h1 (20/08/2025)
|
||||||
|
- (SIM-GEN) Non si chiudono i rulli se tagli o pretagli di testa e coda
|
||||||
|
- (SIM) Corretto movimento pinza 5 in caso di riposizionamento pinza 1
|
||||||
|
- (GEN) Corretta quota assoluta posizione testa trave in caso di pinza 5 e testa rimasta bassa
|
||||||
|
- (GEN) Se ultima lavorazione pezzo precedente ha stesso utensile della prima lavorazione pezzo successivo, la speed resta accesa
|
||||||
|
|
||||||
|
Versione 2.7g4 (23/07/2025)
|
||||||
|
- (SIM-GEN) Aggiunto parametro configurabile da TS3 per massima sporgenza trave in coda per pinza 5. Ticket#2538
|
||||||
|
|
||||||
|
Versione 2.7g3 (22/07/2025)
|
||||||
|
- (SIM) Corretto lettura angolo di presa della motosega
|
||||||
|
|
||||||
|
Versione 2.7g2 (08/07/2025)
|
||||||
|
- (SIM) Corretto movimento a parcheggio sega a catena. Ticket#2517
|
||||||
|
|
||||||
|
Versione 2.7g1 (01/07/2025)
|
||||||
|
- (GEN) Rimossa gestione PROBE inserita per sbaglio
|
||||||
|
- (GEN) Corretto gestione accelerazioni
|
||||||
|
- (SIM-GEN) Aggiunta gestione massima lunghezza scarico
|
||||||
|
|
||||||
|
Versione 2.7f1 (04/06/2025)
|
||||||
|
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina. Tolto parametro 'CoeffVM'.
|
||||||
|
- (GEN) Aggiunti parametri FMAXPINZE, MAXACC, MINACC configurabili da TS3. Ticket#2052
|
||||||
|
|
||||||
|
Versione 2.7e1 (28/05/2025)
|
||||||
|
- (SIM-GEN) Alla separazione si spostano i carrelli di 30mm aprendo il taglio. Ticket#2259,Ticket#2328
|
||||||
|
|
||||||
|
Versione 2.7d1 (16/04/2025)
|
||||||
|
- (SIM) Distanza di collisione portata a 3mm, qualità VMILL ridotta a 4mm. Ticket#2395
|
||||||
|
|
||||||
|
Versione 2.7c3 (25/03/2025)
|
||||||
|
- (GEN) Corretto movimento approccio alla lavorazione se utensile lama montata su magazzino 2. Ticket#2361
|
||||||
|
|
||||||
|
Versione 2.7c2 (12/03/2025)
|
||||||
|
- (SIM-GEN) Migliorato calcolo posizione barra dopo split. Tiene in considerazione ingombro lavorazioni pezzo. Ticket#2321
|
||||||
|
- (GEN) Aggiunta commenti HEADER e FOOTER per comunicazione con linea o altre macchine, da parte di Essetre.
|
||||||
|
- (SIm-GEN) Migliorato movimento approccio al pezzo con lama. Allineamento simulazione-generazione che facevano due movimenti leggermente diversi. Ticket#2335
|
||||||
|
|
||||||
|
Versione 2.7c1 (05/03/2025)
|
||||||
|
- (GEN) Corretto movimento in home utensile precedente. Ticket#2324
|
||||||
|
|
||||||
Versione 2.7b1 (07/02/2025)
|
Versione 2.7b1 (07/02/2025)
|
||||||
- (SIM-GEN) In caso di Progress, alla deselezione utensile testa 1 su TC2 si fa movimento Z raddrizzando asse B. Ticket#2247
|
- (SIM-GEN) In caso di Progress, alla deselezione utensile testa 1 su TC2 si fa movimento Z raddrizzando asse B. Ticket#2247
|
||||||
- (SIM-GEN) Estensione soluzione Ticket#2206. Ora si aprono di 5mm extra anche se solo una morsa resta in posizione. Ticket#2259
|
- (SIM-GEN) Estensione soluzione Ticket#2206. Ora si aprono di 5mm extra anche se solo una morsa resta in posizione. Ticket#2259
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
local InfoCommon_STD_PP = {
|
local InfoCommon_STD_PP = {
|
||||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||||
VERSION = '2.7b1', -- versione script
|
VERSION = '3.1f2', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
return InfoCommon_STD_PP
|
return InfoCommon_STD_PP
|
||||||
|
|||||||
Reference in New Issue
Block a user