Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 785e4490ea | |||
| 971fcc0c07 | |||
| db7cb8c1b1 | |||
| 80fdaf23f4 | |||
| b832df5767 | |||
| 2b167ea927 | |||
| deaac78103 | |||
| 5f95d9821e | |||
| 8d7a29dd38 | |||
| 793fe00cc9 | |||
| e3107c9c30 | |||
| 33e5254ba4 | |||
| 3aceb8783d | |||
| dabb95858e | |||
| 636ce9eb01 | |||
| 306bef076c | |||
| 9499cdb2c4 | |||
| a14a637ec1 |
@@ -8,6 +8,7 @@ local BeamData = {
|
||||
GO_FAST = 0, -- flag abilitazione modalità veloce (0=no, 1=carrelli, 2=anche cambio utensili)
|
||||
RIGHT_LOAD = false, -- flag carico da destra
|
||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||
ROT180 = true, -- flag abilitazione rotazione 180 gradi
|
||||
NEWCLAMPING = false, -- flag abilitazione nuovo metodo riposizionamento carrelli
|
||||
FASTCLAMPING= true, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento
|
||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||
@@ -110,6 +111,7 @@ if EgtExistsFile( sData) then
|
||||
if Machine.Offsets.NEWCLAMPING ~= nil then BeamData.NEWCLAMPING = ( Machine.Offsets.NEWCLAMPING == 1) end
|
||||
if Machine.Offsets.FASTCLAMPING ~= nil then BeamData.FASTCLAMPING = ( Machine.Offsets.FASTCLAMPING == 1) end
|
||||
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||
if Machine.Offsets.ROT180 ~= nil then BeamData.ROT180 = ( Machine.Offsets.ROT180 == 1) end
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
|
||||
@@ -1532,7 +1532,10 @@ function MyAdjustLinearAxes()
|
||||
|
||||
if EMT.REFLOC then
|
||||
local vtE
|
||||
if EMT.HEAD ~= 'H3' then
|
||||
-- su NUM aggregati non gestiti
|
||||
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
EmtSetLastError( 1211, "Aggregates not managed")
|
||||
elseif EMT.HEAD ~= 'H3' then
|
||||
local Len = EMT.TLEN + EgtIf( EMT.HEAD == 'H1', MillOffs, abs( SawOffs))
|
||||
local LenRef = MillOffs
|
||||
vtE = Vector3d( EMT.EXTR) * Len - Z_AX() * LenRef
|
||||
@@ -1647,7 +1650,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetET( sHead, sTcPos, dAxR3)
|
||||
if sHead == 'H1' then
|
||||
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then
|
||||
return ' E'..sTcPos
|
||||
elseif sHead == 'H2' then
|
||||
return ' ET42'
|
||||
|
||||
@@ -145,7 +145,11 @@ function OnToolData()
|
||||
local sPos = 'N2' .. tostring(nPos)
|
||||
local sOut = 'L11=' .. EmtLenToString( EMT.SMAX, 3) .. ' L12=' .. EmtLenToString( AngTr1Offs, 1)..' G76H9998.1'..sPos..sPos
|
||||
EmtOutput( sOut)
|
||||
-- altro non previsto
|
||||
-- emissione dati sega a catena
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local sOut = 'L11='..EgtNumToString( EMT.SMAX, 0)..' L12='..EmtLenToString( ( 154.5), 1)..' G76H9998.1N121N121'
|
||||
EmtOutput( sOut)
|
||||
-- altro non previsto
|
||||
end
|
||||
end
|
||||
|
||||
@@ -693,7 +697,7 @@ function OnRapid()
|
||||
if EMT.HEAD == 'H3' then
|
||||
sEL = sEL..EmtLenToString( ( EMT.TDIST or ChSawLen), 3)
|
||||
-- se aggregato
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
sEL = sEL..EmtLenToString( AngTr1Offs, 3)
|
||||
-- se testa normale ( H1 or H2)
|
||||
else
|
||||
@@ -705,7 +709,7 @@ function OnRapid()
|
||||
if EMT.HEAD == 'H3' then
|
||||
sER = sER..EmtLenToString( EMT.TLEN, 3)
|
||||
-- se aggregato
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
sER = sER..EmtLenToString( EMT.TLEN + AngTr1Len, 3)
|
||||
-- se testa normale ( H1 or H2)
|
||||
else
|
||||
@@ -1017,7 +1021,7 @@ end
|
||||
---------------------------------------------------------------------
|
||||
function OnArc()
|
||||
-- con aggregato non si possono fare archi. Deve essere tutto spezzato
|
||||
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' then
|
||||
EmtSetLastError( 1211, "With aggregate, the arcs must be splitted")
|
||||
end
|
||||
|
||||
@@ -1642,11 +1646,16 @@ function MyAdjustLinearAxes()
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
local LenAux = AngTr1Offs + MillOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local LenAux = AngTrBHOffs + MillOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||
end
|
||||
@@ -1741,7 +1750,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetET( sHead, sTcPos, dAxR3)
|
||||
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' then
|
||||
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' or sHead == 'H7' then
|
||||
return ' E'..sTcPos
|
||||
elseif sHead == 'H2' then
|
||||
return ' ET42'
|
||||
|
||||
+15
-2
@@ -151,7 +151,12 @@ function OnToolData()
|
||||
local sOut = 'M992 P1=' .. EgtNumToString( nPos, 0) .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) ..
|
||||
' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3)
|
||||
ParkLine( sOut)
|
||||
-- altro non previsto
|
||||
-- emissione dati sega a catena
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local sOut = 'M992 P1=' .. EMT.TCPOS:gsub( 'T', '') .. ' P2=' .. EmtLenToString( EMT.TLEN, 3) .. ' P3=' .. EmtLenToString( EMT.TDIAM, 3) ..
|
||||
' P4=' .. EmtLenToString( EMT.SMAX, 3) .. ' P5=' .. EmtLenToString( EMT.TTOTLEN, 3)
|
||||
ParkLine( sOut)
|
||||
-- altro non previsto
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||
end
|
||||
@@ -1640,12 +1645,18 @@ function MyAdjustLinearAxes()
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
local Len = EMT.TLEN + AngTr1Len
|
||||
local LenAux = MillOffs + AngTr1Offs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2)
|
||||
vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
local Len = EMT.TLEN + AngTrBHLen
|
||||
local LenAux = MillOffs + AngTrBHOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2)
|
||||
vtE = Vector3d( EMT.EXTR) * Len + vtAux * LenAux - Z_AX() * LenRef
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||
end
|
||||
@@ -1682,6 +1693,8 @@ function AdjustToolKinematic()
|
||||
return EgtIf( EMT.EXIT == 1, '11', '12')
|
||||
elseif EMT.HEAD == 'H6' then
|
||||
return EgtIf( EMT.EXIT == 1, '21', '22')
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
return '31'
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||
end
|
||||
|
||||
+118
-34
@@ -105,6 +105,7 @@ function OnSimulStart()
|
||||
AddToCollisionCheck( 'B', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'C', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'H5', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'H6', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToolToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
||||
AddToolHolderToCollisionCheck( 'H2', 1, EMT.COLLOBJ)
|
||||
DumpCollisionCheck( EMT.COLLOBJ, 'Collision Objects :', 4)
|
||||
@@ -152,7 +153,8 @@ function OnSimulDispositionStarting()
|
||||
EmtUnlinkAllRawPartsFromGroups()
|
||||
if EMT.PHASE > 1 then
|
||||
if IsStartOrRestPhase( EMT.PHASE) then
|
||||
EgtSetAxisPos( 'T', LoadT)
|
||||
local ParkT = GetParkT()
|
||||
EgtSetAxisPos( 'T', ParkT)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -179,7 +181,7 @@ function OnSimulDispositionStart()
|
||||
if sTool and nTlen < LONG_TOOL_MINLEN then
|
||||
EMT.TOOL_1 = sTool
|
||||
else
|
||||
EMT.TOOL_1 = GetDefaultToolName()
|
||||
EMT.TOOL_1 = GetDefaultToolName()
|
||||
end
|
||||
EgtLoadTool( 'H1', 1, EMT.TOOL_1)
|
||||
EMT.TCPOS_1 = GetToolTcPos( EMT.TOOL_1)
|
||||
@@ -189,7 +191,7 @@ function OnSimulDispositionStart()
|
||||
EMT.VMILL = {}
|
||||
if not EMT.SIM1ST and EgtGetInfo( EgtGetCurrMachGroup(), 'Vm', 'b') then
|
||||
local nLastOrd = GetPhaseOrd( EgtGetPhaseCount())
|
||||
local nPartRawId = EgtGetFirstRawPart()
|
||||
local nPartRawId = EgtGetFirstRawPart()
|
||||
while nPartRawId do
|
||||
-- se è lo scarto finale tagliato a pezzi, esco
|
||||
local nRawOrd = EgtGetInfo( nPartRawId, 'ORD', 'i')
|
||||
@@ -211,20 +213,24 @@ function OnSimulDispositionStart()
|
||||
end
|
||||
end
|
||||
-- determino la risoluzione dello Zmap
|
||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||
local dTol = 4.71
|
||||
if dArea < CoeffVM * 0.15e6 then
|
||||
dTol = 0.71
|
||||
elseif dArea < CoeffVM * 0.3e6 then
|
||||
dTol = 1.01
|
||||
elseif dArea < CoeffVM * 0.6e6 then
|
||||
dTol = 1.51
|
||||
elseif dArea < CoeffVM * 1.2e6 then
|
||||
dTol = 1.97
|
||||
elseif dArea < CoeffVM * 2.4e6 then
|
||||
dTol = 2.81
|
||||
elseif dArea < CoeffVM * 4.8e6 then
|
||||
dTol = 3.77
|
||||
if EmtGetVMillStep then
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.71)
|
||||
else
|
||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||
if dArea < 0.075e6 then
|
||||
dTol = 0.71
|
||||
elseif dArea < 0.15e6 then
|
||||
dTol = 1.01
|
||||
elseif dArea < 0.3e6 then
|
||||
dTol = 1.51
|
||||
elseif dArea < 0.6e6 then
|
||||
dTol = 1.97
|
||||
elseif dArea < 1.2e6 then
|
||||
dTol = 2.81
|
||||
elseif dArea < 2.4e6 then
|
||||
dTol = 3.77
|
||||
end
|
||||
end
|
||||
-- creo lo Zmap
|
||||
local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB)
|
||||
@@ -358,6 +364,8 @@ function OnSimulDispositionStart()
|
||||
EgtOutText( 'Barra non ruotata')
|
||||
end
|
||||
end
|
||||
-- verifico posizione di carico
|
||||
local ParkT = GetParkT()
|
||||
-- indice primo grezzo della fase
|
||||
local nOrd = GetPhaseOrd( EMT.PHASE)
|
||||
-- ricerco vettore movimento per i successivi
|
||||
@@ -365,7 +373,7 @@ function OnSimulDispositionStart()
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
||||
vtMove = Vector3d( - LoadT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
vtMove = Vector3d( - ParkT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
break
|
||||
end
|
||||
nRawId = EgtGetNextRawPart( nRawId)
|
||||
@@ -386,6 +394,8 @@ function OnSimulDispositionStart()
|
||||
end
|
||||
-- altrimenti fase finale, aggancio primo grezzo alla tavola e gli altri in posizione carico al carro Y
|
||||
else
|
||||
-- verifico posizione di carico
|
||||
local ParkT = GetParkT()
|
||||
-- indice primo grezzo della fase
|
||||
local nOrd = GetPhaseOrd( EMT.PHASE)
|
||||
-- ricerco vettore movimento per i successivi
|
||||
@@ -393,7 +403,7 @@ function OnSimulDispositionStart()
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
if EgtGetInfo( nRawId, 'ORD', 'i') == nOrd + 1 then
|
||||
vtMove = Vector3d( - LoadT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
vtMove = Vector3d( - ParkT - EgtGetRawPartBBox( nRawId):getMax():getX(), 0, 0)
|
||||
break
|
||||
end
|
||||
nRawId = EgtGetNextRawPart( nRawId)
|
||||
@@ -456,8 +466,10 @@ function OnSimulToolSelect( dPosA)
|
||||
EMT.TOTDIAM = EgtTdbGetCurrToolParam( MCH_TP.TOTDIAM)
|
||||
-- se non è chiamato da altro script (non c'è parametro)
|
||||
if not dPosA then
|
||||
-- se attivo Vmill
|
||||
SetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL)
|
||||
-- se utensile non flottante, abilito per Vmill
|
||||
if not EMT.TFLOAT then
|
||||
EmtSetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL)
|
||||
end
|
||||
-- se attivo Collision Check
|
||||
EMT.SAFEDIST = COLL_SAFE_DIST
|
||||
if EMT.COLLOBJ then
|
||||
@@ -477,8 +489,8 @@ function OnSimulToolSelect( dPosA)
|
||||
EMT.A1n = 'Y'
|
||||
EMT.A2n = 'V'
|
||||
end
|
||||
-- carico utensile se non lama su sua testa o dummy
|
||||
if EMT.HEAD ~= 'H2' and EMT.HEAD ~= 'H4' then
|
||||
-- carico utensile se non lama
|
||||
if EMT.HEAD ~= 'H2' then
|
||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||
if EMT.HEAD == 'H3' then
|
||||
if not dPosA then
|
||||
@@ -506,6 +518,9 @@ function OnSimulToolSelect( dPosA)
|
||||
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
||||
end
|
||||
EgtSetAxisPos( 'B', 0)
|
||||
-- se aggregato per fresa tipo blockhaus
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
EgtSetAxisPos( 'C', EgtIf( BD.RIGHT_LOAD, 180, 0))
|
||||
end
|
||||
-- se punta lunga
|
||||
if EMT.TOTLEN > LONG_TOOL_MINLEN then
|
||||
@@ -514,6 +529,12 @@ function OnSimulToolSelect( dPosA)
|
||||
EgtSetAxisPos( 'B', 0)
|
||||
end
|
||||
end
|
||||
-- se TC 1
|
||||
if GetTCSet( EMT.TCPOS) == 1 then
|
||||
EgtSetAxisPos( 'B', 90)
|
||||
else
|
||||
EgtSetAxisPos( 'B', -90)
|
||||
end
|
||||
-- breve pausa
|
||||
EgtPause( 100)
|
||||
EgtOutText( '')
|
||||
@@ -529,9 +550,9 @@ function OnSimulToolDeselect()
|
||||
-- se prossimo utensile non definito, è disposizione ed esco
|
||||
if EMT.NEXTTOOL == '' then return end
|
||||
-- se cambia uscita su rinvio non devo fare alcunché
|
||||
if EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5' then return end
|
||||
if ( EMT.HEAD == 'H5' and EMT.NEXTHEAD == 'H5') or ( EMT.HEAD == 'H6' and EMT.NEXTHEAD == 'H6') then return end
|
||||
-- se sega a catena o rinvio o punta lunga o utensile di grosso diametro, devo cambiare
|
||||
if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then
|
||||
if EMT.HEAD == 'H3' or EMT.HEAD == 'H5' or EMT.HEAD == 'H6' or EMT.HEAD == 'H7' or ( EMT.HEAD == 'H1' and ( EMT.TOTLEN > LONG_TOOL_MINLEN or EMT.TOTDIAM > BIG_TOOL_DIAM)) then
|
||||
EgtOutText( 'Tool change in progress...')
|
||||
-- movimento scarico sega a catena
|
||||
if EMT.HEAD == 'H3' then
|
||||
@@ -547,9 +568,13 @@ function OnSimulToolDeselect()
|
||||
end
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
-- movimento scarico rinvio
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
-- movimento scarico aggregato BlockHaus
|
||||
elseif EMT.HEAD == 'H7' then
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||
-- movimento scarico punta lunga su T111
|
||||
elseif EMT.TOTLEN > LONG_TOOL_MINLEN then
|
||||
-- se su cambio utensile T111
|
||||
@@ -559,7 +584,11 @@ function OnSimulToolDeselect()
|
||||
-- altrimenti posizioni standard rastrelliera
|
||||
else
|
||||
SimulMoveAxis( 'X', 0, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||
if GetTCSet( EMT.TCPOS) == 1 then
|
||||
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||
else
|
||||
SimulMoveAxes( 'B', -90, MCH_SIM_STEP.COLLROT, 'C', -90, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
end
|
||||
-- movimento scarico utensile di grosso diametro (su T111)
|
||||
else
|
||||
@@ -573,24 +602,31 @@ function OnSimulToolDeselect()
|
||||
-- nascondo utensile su testa e lo visualizzo su TcPos
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||
ShowToolInTcPos( EMT.TCPOS_1, true)
|
||||
|
||||
-- movimento per carico utensile
|
||||
if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' then
|
||||
SimulMoveAxes( 'B', 90, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||
if EMT.NEXTHEAD ~= 'H3' and EMT.NEXTHEAD ~= 'H5' and EMT.NEXTHEAD ~= 'H6' then
|
||||
SimulMoveAxes( 'B', EgtIf( GetTCSet( EMT.TCPOS) == 1, 90, -90), MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||
else
|
||||
SimulMoveAxes( 'B', 0, MCH_SIM_STEP.RAPROT, 'C', EgtIf( BD.RIGHT_LOAD, 90, -90), MCH_SIM_STEP.RAPROT)
|
||||
end
|
||||
-- se segue lama, carico utensile di default
|
||||
if EMT.NEXTHEAD == 'H2' then
|
||||
local sDefTool = GetDefaultToolName()
|
||||
EgtLoadTool( 'H1', 1, sDefTool)
|
||||
EMT.TOOL_1 = sDefTool
|
||||
EMT.TCPOS_1 = GetToolTcPos( EMT.TOOL_1)
|
||||
-- se TC 1
|
||||
if GetTCSet( EMT.TCPOS_1) == 1 then
|
||||
EgtSetAxisPos( 'B', 90)
|
||||
else
|
||||
EgtSetAxisPos( 'B', -90)
|
||||
end
|
||||
EgtLoadTool( 'H1', 1, sDefTool)
|
||||
-- lo nascondo sul portautensili
|
||||
ShowToolInTcPos( EMT.TCPOS_1, false)
|
||||
end
|
||||
EgtOutText( '')
|
||||
-- deposito utensile se prossimo non lama su sua testa o dummy
|
||||
elseif EMT.NEXTHEAD ~= 'H2' and EMT.NEXTHEAD ~= 'H4' then
|
||||
-- deposito utensile se prossimo non lama su sua testa
|
||||
elseif EMT.NEXTHEAD ~= 'H2' then
|
||||
if EMT.NEXTTOOL ~= EMT.TOOL_1 then
|
||||
EgtOutText( 'Tool change in progress...')
|
||||
-- simulo movimento
|
||||
@@ -600,7 +636,7 @@ function OnSimulToolDeselect()
|
||||
EgtPause( 100)
|
||||
ShowToolInTcPos( EMT.TCPOS_1, true)
|
||||
-- se segue sega a catena
|
||||
if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' then
|
||||
if EMT.NEXTHEAD == 'H3' or EMT.NEXTHEAD == 'H5' or EMT.NEXTHEAD == 'H6' then
|
||||
-- se non lama, nascondo l'utensile corrente
|
||||
if EMT.HEAD ~= 'H2' then
|
||||
EgtSetStatus( EgtGetHeadId( EMT.HEAD), GDB_ST.OFF)
|
||||
@@ -751,7 +787,6 @@ function OnSimulMoveStart()
|
||||
EgtOutText( '')
|
||||
EMT.MCHFIRST = false
|
||||
local bZmax = ( EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
|
||||
|
||||
-- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo
|
||||
if not EMT.LOAD and EMT.MOVE == 0 and EMT.HB > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||
-- se motosega mi muovo a X di sicurezza per ruotare
|
||||
@@ -761,20 +796,59 @@ function OnSimulMoveStart()
|
||||
end
|
||||
EMT.POSTROT = nil
|
||||
end
|
||||
-- se aggregato flottante su inizio attacco va compresso
|
||||
if EMT.TFLOAT and not EMT.TFLOAT_CMP and EMT.MOVE == 1 and EgtGetName( EMT.MOVEID) == 'LI' then
|
||||
-- recupero lunghezza
|
||||
local dOffsL = - EgtGetMachiningParam( MCH_MP.OFFSL)
|
||||
-- imposto compressione della parte flottante
|
||||
SetFloatPos( EMT.HEAD, dOffsL)
|
||||
-- imposto dati utensile in posizione compressa
|
||||
EmtSetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL, 2, -dOffsL)
|
||||
-- dichiaro che è compresso (assegnando Id entità di movimento)
|
||||
EMT.TFLOAT_CMP = EMT.MOVEID
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSimulMoveEnd()
|
||||
-- se termine di passata con lama
|
||||
if EMT.FLAG == 301 then
|
||||
-- rimozione eventuali sfridi
|
||||
ExecRemoveScraps()
|
||||
end
|
||||
-- se utensile flottante e movimento di compressione
|
||||
if EMT.TFLOAT and EMT.MOVEID == EMT.TFLOAT_CMP then
|
||||
-- verifico ci sia stata collisione tra ghiera flottante (portautensile e pezzo)
|
||||
if not EMT.TFLOAT_TH_COMPR_COLL then
|
||||
local sErr = 'CUTID='..tostring( EMT.CUTID)..'; TASKID='..tostring( EMT.TASKID)..'; Mach='..EMT.MCHNAME..'; Floating Ring not compressed on approach'
|
||||
EmtSetLastError( 1222, sErr)
|
||||
EgtOutLog( 'Error : ' .. sErr, 1)
|
||||
else
|
||||
EgtOutLog( 'Floating Ring compressed on approach (MOVEID='..EgtNumToString( EMT.MOVEID)..')', 1)
|
||||
end
|
||||
EMT.TFLOAT_TH_COMPR_COLL = nil
|
||||
end
|
||||
-- se aggregato flottante su fine uscita va rilasciato
|
||||
if EMT.TFLOAT and EMT.TFLOAT_CMP and EMT.MOVE == 1 and EgtGetName( EMT.MOVEID) == 'LO' and EgtGetName( EgtGetNext( EMT.MOVEID) or GDB_ID.NULL) ~= 'LO' then
|
||||
-- reset compressione della parte flottante
|
||||
SetFloatPos( EMT.HEAD, 0)
|
||||
-- dichiaro che è rilasciato
|
||||
EMT.TFLOAT_CMP = nil
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSimulCollision()
|
||||
-- se prima collisione della lavorazione, la segnalo
|
||||
if EMT.MCHNAME ~= EMT.LAST_MCHNAME_COLLIDE then
|
||||
-- speciale per utensile flottante (suo holder contro il grezzo)
|
||||
if EMT.TFLOAT and EMT.TFLOAT_CMP and EMT.SIMCOBIND == 1002 and EMT.SIMVMID == EMT.VMILL[1] then
|
||||
if EMT.MOVEID == EMT.TFLOAT_CMP then
|
||||
EMT.TFLOAT_TH_COMPR_COLL = true
|
||||
end
|
||||
return
|
||||
end
|
||||
-- standard
|
||||
local Class = ''
|
||||
if EMT.SIMCOBIND == 1001 then
|
||||
Class = 'T_H1'
|
||||
@@ -922,7 +996,7 @@ function ExecUnloading()
|
||||
local nLayId = EgtGroup( nVmGrpId, EgtGetGlobFrame( vMillId))
|
||||
EgtRelocate( vMillId, nLayId)
|
||||
local vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 450, -450), 0)
|
||||
if EMT.FALL then vtMove = Vector3d( -500, 0, EgtIf( BD.RIGHT_LOAD, 750, -750)) end
|
||||
if EMT.FALL then vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 500, -500), -750) end
|
||||
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
||||
EgtSetLevel( vMillId, GDB_LV.USER)
|
||||
-- aggiungo gli spigoli
|
||||
@@ -1566,6 +1640,16 @@ function GetPhaseRot( nPhase)
|
||||
return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'ROT', 'i') or 0)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetParkT()
|
||||
local dTmp = EgtGetInfo( EMT.DISPID, 'TPOS', 'd') or EgtGetInfo( EMT.DISPID, 'TPARK', 'd')
|
||||
if dTmp then
|
||||
return dTmp
|
||||
else
|
||||
return LoadT
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** END GENERAL ***
|
||||
---------------------------------------------------------------------
|
||||
|
||||
+83
-18
@@ -7,6 +7,12 @@ EgtEnableDebug( false)
|
||||
-- carico librerie
|
||||
local BD = require( 'BeamData')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** Generic Machinings ***
|
||||
---------------------------------------------------------------------
|
||||
pcall( require, 'EmtGenMachining') -- si fa una require con PCALL perchè la libreria è opzionale
|
||||
|
||||
|
||||
---------------------- OnSpecialMoveZup -----------------------------
|
||||
---------------------------------------------------------------------
|
||||
function OnSpecialMoveZup()
|
||||
@@ -33,9 +39,9 @@ local DeltaTol = DELTA_TOL_S
|
||||
local DELTA_SIC = 1
|
||||
local AGG_LOAD = 50
|
||||
local MIN_JOIN_VV = EgtClamp( MinJoinVV or 75, 60, 150)
|
||||
local MIN_JOIN_SS = EgtClamp( MinJoinSS or 100, 80, 200)
|
||||
local MIN_JOIN_SS = EgtClamp( MinJoinSS or 100, 80, 275)
|
||||
local MIN_JOIN_LS = EgtClamp( MinJoinLS or 290, 250, 400)
|
||||
local MIN_JOIN_SL = EgtClamp( MinJoinSL or 100, 80, 200)
|
||||
local MIN_JOIN_SL = EgtClamp( MinJoinSL or 100, 80, 400)
|
||||
local MIN_JOIN_LL = EgtClamp( MinJoinLL or 400, 300, 600)
|
||||
local MinJoin = MIN_JOIN_SS
|
||||
local MinOther = abs( MinY) + abs( MaxV) + MinJoin
|
||||
@@ -367,7 +373,18 @@ function OnSpecialApplyDisposition()
|
||||
EMC.HOVM = EgtGetInfo( nCurrRawId, 'HOVM', 'd') or 0
|
||||
EMC.HCING = EgtGetInfo( nCurrRawId, 'HCING', 'd') or 0
|
||||
EMC.TCING = EgtGetInfo( nCurrRawId, 'TCING', 'd') or 0
|
||||
|
||||
|
||||
-- correggo area non pinzabile in testa o coda in base alle info sulla lavorazione
|
||||
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or ''
|
||||
local dHCING = tonumber( EgtGetValInNotes( sNotes, 'HCING'))
|
||||
if dHCING then
|
||||
EMC.HCING = max( dHCING, -50)
|
||||
end
|
||||
local dTCING = tonumber( EgtGetValInNotes( sNotes, 'TCING'))
|
||||
if dTCING then
|
||||
EMC.TCING = max( dTCING, -50)
|
||||
end
|
||||
|
||||
-- Devo scaricare il pezzo o il grezzo rimasto
|
||||
-- Posizione trave
|
||||
local dPosT
|
||||
@@ -511,6 +528,17 @@ function OnPostApplyMachining()
|
||||
local bSplitting = ( sNotes:find( 'Split') ~= nil)
|
||||
local bPreCut = ( sNotes:find( 'Precut') ~= nil)
|
||||
local bCutting = ( sNotes:find( 'Cut') ~= nil)
|
||||
|
||||
-- correggo area non pinzabile in testa o coda in base alle info sulla lavorazione
|
||||
local dHCING = tonumber( EgtGetValInNotes( sNotes, 'HCING'))
|
||||
if dHCING then
|
||||
EMC.HCING = max( dHCING, -50)
|
||||
end
|
||||
local dTCING = tonumber( EgtGetValInNotes( sNotes, 'TCING'))
|
||||
if dTCING then
|
||||
EMC.TCING = max( dTCING, -50)
|
||||
end
|
||||
|
||||
local bUnload = IsEndPhase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
||||
if bPreSplit or bPreCut then
|
||||
EgtSetInfo( EMC.MCHID, 'IS_PRE', '1')
|
||||
@@ -634,17 +662,30 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
EMC.HOVM = EgtGetInfo( nCurrRawId, 'HOVM', 'd') or 0
|
||||
EMC.HCING = EgtGetInfo( nCurrRawId, 'HCING', 'd') or 0
|
||||
EMC.TCING = EgtGetInfo( nCurrRawId, 'TCING', 'd') or 0
|
||||
|
||||
-- correggo area non pinzabile in testa o coda in base alle info sulla lavorazione
|
||||
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
local dHCING = tonumber( EgtGetValInNotes( sNotes, 'HCING'))
|
||||
if dHCING then
|
||||
EMC.HCING = max( dHCING, -50)
|
||||
end
|
||||
local dTCING = tonumber( EgtGetValInNotes( sNotes, 'TCING'))
|
||||
if dTCING then
|
||||
EMC.TCING = max( dTCING, -50)
|
||||
end
|
||||
|
||||
-- Calcolo dell'ingombro della lavorazione
|
||||
local dDistFront, dDistBack = SpecialCalcMachiningEncumbrance( EMC.MCHID, bPreCut)
|
||||
if not dDistFront or not dDistBack then return end
|
||||
local dMaxLenLeft = 0
|
||||
if bPreSplit or bSplitting then
|
||||
local dDistF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||
local dDistF, dDistB, dMaxLF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||
dDistFront = min( dDistFront, dDistF)
|
||||
local dNextHOVM = EgtGetInfo( EgtGetNextRawPart( nCurrRawId) or GDB_ID.NULL, 'HOVM', 'd') or 0
|
||||
local dBackOther = b3Tot:getDimX() - b3Raw:getDimX() - MinOther - dNextHOVM
|
||||
EgtOutLog( 'DistBack='..EgtNumToString( dDistBack)..' OtherBack='..EgtNumToString( dBackOther), 3)
|
||||
dDistBack = min( dDistBack, dBackOther)
|
||||
if bSplitting then dMaxLenLeft = dMaxLF end
|
||||
elseif bPreCut or bCutting then
|
||||
local dDistF = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||
dDistFront = min( dDistFront, dDistF)
|
||||
@@ -709,8 +750,9 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
||||
return false
|
||||
end
|
||||
-- eseguo la separazione ( standard o di pezzo ruotato)
|
||||
EgtOutLog( 'MaxLenLeft=' .. EgtNumToString( dMaxLenLeft, 1), 1)
|
||||
if not IsMid2Phase( EMC.PHASE + 1) then
|
||||
vCmd = SpecCalcSplit( b3Raw:getDimX())
|
||||
vCmd = SpecCalcSplit( b3Raw:getDimX(), dMaxLenLeft)
|
||||
else
|
||||
vCmd = SpecCalcSplitRot( b3Raw:getDimX())
|
||||
end
|
||||
@@ -823,6 +865,7 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
||||
-- Deve essere la fase finale di lavorazione di un pezzo (già staccato dal resto della trave)
|
||||
local dDistFront = EMC.LB
|
||||
local dDistBack = EMC.LB
|
||||
local dMaxLenLeft = 0
|
||||
-- Salvo lavorazione e utensile correnti, per ripristinarli alla fine
|
||||
local nOrigMchId = EgtGetCurrMachining()
|
||||
local sOrigTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||
@@ -847,6 +890,9 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
||||
if dDistF and dDistB then
|
||||
dDistFront = min( dDistFront, dDistF)
|
||||
dDistBack = min( dDistBack, dDistB)
|
||||
local dMaxLenL = EMC.LR - dDistF
|
||||
EgtOutLog( ' MaxLenLeft = ' .. EgtNumToString( dMaxLenL, 1), 3)
|
||||
dMaxLenLeft = max( dMaxLenLeft, dMaxLenL)
|
||||
end
|
||||
nMchId = EgtGetNextActiveOperation( nMchId)
|
||||
end
|
||||
@@ -855,7 +901,7 @@ function SpecialCalcPhaseEncumbrance( nPhase)
|
||||
if sOrigTool then EgtTdbSetCurrTool( sOrigTool) end
|
||||
if sOrigTool and sOrigHead and nOrigExit then EgtSetCalcTool( sOrigTool, sOrigHead, nOrigExit) end
|
||||
-- Restituisco gli ingombri trovati
|
||||
return dDistFront, dDistBack
|
||||
return dDistFront, dDistBack, dMaxLenLeft
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1028,9 +1074,9 @@ function SpecCalcEncumbrance( vtTool, vtArm, ptMin, ptMax, bSaw, bChain, dTLen,
|
||||
elseif ( vtTool:getX() > 0.5) then
|
||||
dHeadFront = 450
|
||||
end
|
||||
if vtTool:getX() > 0.25 then
|
||||
if vtTool:getX() > 0.25 then
|
||||
dHeadFront = dHeadFront + max( dTLen - 130, 0) * vtTool:getX()
|
||||
elseif vtTool:getX() > 0 then
|
||||
elseif vtTool:getX() > 0 then
|
||||
dHeadFront = dHeadFront + ( dTLen + 180) * vtTool:getX()
|
||||
end
|
||||
if vtTool:getX() < -0.866 then
|
||||
@@ -1042,7 +1088,7 @@ function SpecCalcEncumbrance( vtTool, vtArm, ptMin, ptMax, bSaw, bChain, dTLen,
|
||||
if vtArm:getX() > 0.259 then
|
||||
dHeadFront = 510
|
||||
else
|
||||
dHeadFront = EgtIf( vtTool:getZ() > 0.966, 160, 280)
|
||||
dHeadFront = EgtIf( vtTool:getZ() > 0.966, 170, 280)
|
||||
end
|
||||
end
|
||||
-- per fresature longitudinali con utensile di fianco
|
||||
@@ -1329,10 +1375,17 @@ function SpecCalcCarriages( dDistFront, dDistBack, bFixedDelta, bFixedPos)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function SpecCalcSplit( dLenRaw)
|
||||
function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
||||
local vCmd = {}
|
||||
EgtOutLog( ' *[S]', 1)
|
||||
table.insert( vCmd, { 0, EgtIf( EMC.VDELTA, 'Split', 'Fall')})
|
||||
local bSplit = ( EMC.VDELTA ~= nil)
|
||||
local ParkT = LoadT
|
||||
if bSplit then
|
||||
if dMaxLenLeft + 100 > LoadT then
|
||||
ParkT = dMaxLenLeft + 300
|
||||
end
|
||||
end
|
||||
table.insert( vCmd, { 0, EgtIf( bSplit, 'Split', 'Fall')})
|
||||
-- determino i grezzi da agganciare al carrello Y (sono quelli presenti nella fase successiva dispari)
|
||||
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
@@ -1344,20 +1397,26 @@ function SpecCalcSplit( dLenRaw)
|
||||
end
|
||||
-- riporto il carrello Y al carico con il resto della trave
|
||||
local dLDelta = EMC.YDELTA - dLenRaw
|
||||
table.insert( vCmd, { 1, 'Y', LoadT + dLDelta})
|
||||
table.insert( vCmd, { 1, 'Y', ParkT + dLDelta})
|
||||
table.insert( vCmd, { 21, 0, EMC.VDELTA or 0})
|
||||
-- imposto subito Y non più attaccato al trave in lavoro
|
||||
EMC.YDELTA = nil
|
||||
-- salvo posizione carrello Y in disposizione del pezzo dopo split
|
||||
local PostDispId = EgtGetPhaseDisposition( EMC.PHASE + 1)
|
||||
if PostDispId then
|
||||
EgtSetInfo( PostDispId, 'YPOS', LoadT + dLDelta)
|
||||
if not bSplit then
|
||||
EgtSetInfo( PostDispId, 'TPOS', ParkT)
|
||||
else
|
||||
EgtRemoveInfo( PostDispId, 'TPOS')
|
||||
EgtSetInfo( PostDispId, 'TPARK', ParkT)
|
||||
end
|
||||
EgtSetInfo( PostDispId, 'YPOS', ParkT + dLDelta)
|
||||
end
|
||||
-- salvo posizione grezzo rimasto e posizione carrello Y nella disposizione iniziale del pezzo succ (prossima fase dispari)
|
||||
local NextDispId = EgtGetPhaseDisposition( nNextOddPhase)
|
||||
if NextDispId then
|
||||
EgtSetInfo( NextDispId, 'TPOS', LoadT)
|
||||
EgtSetInfo( NextDispId, 'YPOS', LoadT + dLDelta)
|
||||
EgtSetInfo( NextDispId, 'TPOS', ParkT)
|
||||
EgtSetInfo( NextDispId, 'YPOS', ParkT + dLDelta)
|
||||
end
|
||||
return vCmd
|
||||
end
|
||||
@@ -1544,6 +1603,14 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
local bZmaxOk = EnsureZmax( bZmaxOk, vCmd)
|
||||
end
|
||||
|
||||
-- ribadisco pinzaggio
|
||||
if EMC.YDELTA then
|
||||
table.insert( vCmd, { 11, 1})
|
||||
end
|
||||
if EMC.VDELTA then
|
||||
table.insert( vCmd, { 12, 1})
|
||||
end
|
||||
|
||||
-- reset contatore primo riposizionamento con compensazione lettura laser
|
||||
EMC.CNT = nil
|
||||
|
||||
@@ -1654,7 +1721,7 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
if abs( dYDeltaF - dYDeltaI) > 10 * GEO.EPS_SMALL then
|
||||
table.insert( vCmd, { 11, 0})
|
||||
dYPosA = max( MyMinY, dTPosI + dYDeltaF)
|
||||
dTPosA = -( dYPosA + dVDeltaF)
|
||||
dTPosA = dYPosA - dYDeltaF
|
||||
dVPosA = dTPosA + dVDeltaF
|
||||
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
|
||||
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
|
||||
@@ -1791,7 +1858,6 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
-- compatto al centro
|
||||
if not EMC.YDELTA then
|
||||
table.insert( vCmd, { 0, 'Compact Y'})
|
||||
table.insert( vCmd, { 12, 1})
|
||||
table.insert( vCmd, { 11, 0})
|
||||
dTPosA = MaxV - dVDeltaI
|
||||
dVPosA = MaxV
|
||||
@@ -1804,7 +1870,6 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
|
||||
end
|
||||
if not EMC.VDELTA then
|
||||
table.insert( vCmd, { 0, 'Compact V'})
|
||||
table.insert( vCmd, { 11, 1})
|
||||
table.insert( vCmd, { 12, 0})
|
||||
dTPosA = MyMinY - dYDeltaI
|
||||
dVPosA = MaxV
|
||||
|
||||
+14
-3
@@ -59,6 +59,7 @@ H5.1=AngTransm.nge
|
||||
H5.2=AngTransm.nge
|
||||
H6.1=AngTransm.nge
|
||||
H6.2=AngTransm.nge
|
||||
H7.1=AngTransmBH.nge
|
||||
|
||||
[Machinings]
|
||||
Drilling=1
|
||||
@@ -67,10 +68,14 @@ Milling=1
|
||||
Pocketing=1
|
||||
Mortising=1
|
||||
Chiseling=0
|
||||
SawRoughing=0
|
||||
SawFinishing=0
|
||||
GenMachining=0
|
||||
SurfFinishing=0
|
||||
SurfRoughing=1
|
||||
SurfFinishing=1
|
||||
5AxMilling=1
|
||||
|
||||
[5AxMilling]
|
||||
5AxScript1=5AxProject
|
||||
5AxScript2=5AxPocketProject
|
||||
|
||||
[Machining]
|
||||
InitScript=InitMach.lua
|
||||
@@ -88,6 +93,12 @@ H2=6615
|
||||
H3=6616
|
||||
; Angular transmission
|
||||
H5=6603
|
||||
; Angular transmission
|
||||
H6=6603
|
||||
; Angular transmission
|
||||
H7=6617
|
||||
; Floating Aggregate
|
||||
H8=6619
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
|
||||
+233
-78
@@ -1,4 +1,4 @@
|
||||
-- Descrizione macchina Essetre-FAST by EgalTech s.r.l. 2024/03/28
|
||||
-- Descrizione macchina Essetre-FAST by EgalTech s.r.l. 2024/12/23
|
||||
-- 2021/12/29 DS ver 2.3l4 Per NUM non va considerato MillOffs negli offset in Z.
|
||||
-- 2022/01/27 DS ver 2.4a2 Modifiche per tagli testa/coda su pezzi alti.
|
||||
-- 2022/02/10 DS ver 2.4a3 Ridotto di 10mm pinzaggio con pezzi alti ma sottili.
|
||||
@@ -22,10 +22,10 @@
|
||||
-------------------------------------
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
EgtEnableDebug( true)
|
||||
|
||||
PP_VER = '2.6j9'
|
||||
PP_NVER = '2.6.10.9'
|
||||
PP_VER = '2.7a1'
|
||||
PP_NVER = '2.7.1.1'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
MACH_NAME = 'Essetre-FAST'
|
||||
|
||||
@@ -71,6 +71,8 @@ SawCOffs = 0
|
||||
ChSawLen = 90.0
|
||||
AngTr1Offs = 170
|
||||
AngTr1Len = 150
|
||||
AngTrBHOffs = 154.5
|
||||
AngTrBHLen = 90
|
||||
TurnerOffs = 200.0
|
||||
DeltaTabY = 898.0
|
||||
DeltaTabZ = -1017.8 + MillOffs -- per TPA : -1013.3 + MillOffs -- per NUM : -838.4
|
||||
@@ -85,9 +87,10 @@ SecondSupport = 0
|
||||
SpecialBH = false
|
||||
MaxUnloadLen = 0
|
||||
BeamHeightForFixRot = 9999 -- per abilitare assegnare 500
|
||||
CoeffVM = 0.5
|
||||
NewTopC = true
|
||||
SafeXRotAxes = 150
|
||||
AggreBlockHaus = true
|
||||
SecondToolChanger = true
|
||||
|
||||
-- leggo e aggiorno con parametri da BeamData
|
||||
if BD then
|
||||
@@ -138,6 +141,8 @@ if EgtExistsFile( sData) then
|
||||
AngTr1Len = Machine.Offsets.OFFSETX_RINV_1 or AngTr1Len
|
||||
--if Machine.Offsets.OFFSETZ_RINV_2 then AngTr2Offs = Machine.Offsets.OFFSETZ_RINV_2 - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||
--AngTr2Len = Machine.Offsets.OFFSETX_RINV_2 or AngTr2Len
|
||||
if Machine.Offsets.OFFSETZ_RINV_BH then AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH - EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||
AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen
|
||||
TurnerOffs = Machine.Offsets.OFFSETRIB or TurnerOffs
|
||||
if Machine.Offsets.OFFSETX then DeltaTabY = - Machine.Offsets.OFFSETX end
|
||||
if Machine.Offsets.OFFSETZ then DeltaTabZ = Machine.Offsets.OFFSETZ + EgtIf( NumericalControl == 'TPA', MillOffs, 0) end
|
||||
@@ -153,11 +158,17 @@ if EgtExistsFile( sData) then
|
||||
if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = Machine.Offsets.MIN_JOIN_SL end
|
||||
if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = Machine.Offsets.MIN_JOIN_LL end
|
||||
if Machine.Offsets.NEWTOPC then NewTopC = ( Machine.Offsets.NEWTOPC == 1) end
|
||||
if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end
|
||||
if Machine.Offsets.SEC_TC then SecondToolChanger = ( Machine.Offsets.SEC_TC == 1) end
|
||||
end
|
||||
end
|
||||
end
|
||||
if SpecialBH then SecondSupport = 0 end
|
||||
|
||||
-- compongo i gruppi appartenenti alla base
|
||||
local sBaseAux = {'BASE/SOLID', 'BASE/TC', 'BASE/SIGN', 'BASE/COLLISION'}
|
||||
if SecondToolChanger then table.insert( sBaseAux, 5, 'BASE/TC2') end
|
||||
|
||||
EmtGeneral {
|
||||
File='Essetre-FAST.nge',
|
||||
Offset = Vector3d( 0, 1150.16, -1500.0),
|
||||
@@ -171,7 +182,8 @@ EmtGeneral {
|
||||
local BaseId = EmtBase {
|
||||
Name = 'Base',
|
||||
Geo='BASE/GEO',
|
||||
Aux={'BASE/SOLID', 'BASE/TC', 'BASE/SIGN', 'BASE/COLLISION'}}
|
||||
Aux = sBaseAux}
|
||||
|
||||
local XId = EmtAxis {
|
||||
Name = 'X',
|
||||
Parent = 'Base',
|
||||
@@ -293,21 +305,21 @@ end
|
||||
-- Eventuale rinvio angolare
|
||||
if SecondSupport >= 3 then
|
||||
local H5Id = EmtHead {
|
||||
Name = 'H5',
|
||||
Parent = 'B',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.MULTI,
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( 0, -AngTr1Len, -AngTr1Offs),
|
||||
TDir1 = Y_AX(),
|
||||
Pos2 = Point3d( 0, AngTr1Len, -AngTr1Offs),
|
||||
TDir2 = -Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.2,
|
||||
Rot2Stroke = { -120, 120},
|
||||
OthColl = { 'H2', 'B/SOLID', 'C/SOLID'},
|
||||
Geo = 'H5_HEAD/GEO',
|
||||
Aux = {'H5_HEAD/SOLID', 'H5_HEAD/COLLISION'}}
|
||||
Name = 'H5',
|
||||
Parent = 'B',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.MULTI,
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( 0, -AngTr1Len, -AngTr1Offs),
|
||||
TDir1 = Y_AX(),
|
||||
Pos2 = Point3d( 0, AngTr1Len, -AngTr1Offs),
|
||||
TDir2 = -Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.2,
|
||||
Rot2Stroke = { -120, 120},
|
||||
OthColl = { 'H2', 'B/SOLID', 'C/SOLID'},
|
||||
Geo = 'H5_HEAD/GEO',
|
||||
Aux = {'H5_HEAD/SOLID', 'H5_HEAD/COLLISION'}}
|
||||
EgtSetInfo( H5Id, 'AGB_TYPE', 2)
|
||||
EgtSetInfo( H5Id, 'AGB_DMAX', 240)
|
||||
EgtSetInfo( H5Id, 'AGB_ENCH', 44)
|
||||
@@ -315,6 +327,23 @@ if SecondSupport >= 3 then
|
||||
EgtSetInfo( H5Id, 'AGB_MDIR', X_AX())
|
||||
EgtSetInfo( H5Id, 'ZMAXONROT', '1,15')
|
||||
end
|
||||
-- Eventuale aggregato per lavorazioni BlockHaus
|
||||
if AggreBlockHaus then
|
||||
local H7Id = EmtHead {
|
||||
Name = 'H7',
|
||||
Parent = 'B',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( AngTrBHLen, 0, -AngTrBHOffs),
|
||||
TDir = -X_AX(),
|
||||
ADir = X_AX(),
|
||||
Rot1W = 0.2,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
OthColl = {'H2', 'B/SOLID', 'C/SOLID'},
|
||||
Geo = 'H7_HEAD/GEO',
|
||||
Aux = {'H7_HEAD/SOLID', 'H7_HEAD/COLLISION'}}
|
||||
end
|
||||
|
||||
-- Morse
|
||||
local YId = EmtAxis {
|
||||
Name = 'Y',
|
||||
@@ -445,22 +474,83 @@ EmtTcPos {
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T10'}
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( 523.8, 88.0, -877.5),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T11'}
|
||||
if not SpecialBH then
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
if AggreBlockHaus then
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -160.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101'}
|
||||
Pos = Point3d( 678.3, -1.963, -877.5),
|
||||
TDir = Y_AX(),
|
||||
ADir = -X_AX(),
|
||||
Geo = 'BASE/T121',
|
||||
Aux = 'BASE/T121_HS'}
|
||||
else
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( 523.8, 88.0, -877.5),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T11'}
|
||||
end
|
||||
|
||||
-- ToolChanger 2
|
||||
if SecondToolChanger then
|
||||
EmtTcPos {
|
||||
Name = 'T21',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, 172.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T21'}
|
||||
EmtTcPos {
|
||||
Name = 'T22',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, 67.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T22'}
|
||||
EmtTcPos {
|
||||
Name = 'T23',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, -37.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T23'}
|
||||
EmtTcPos {
|
||||
Name = 'T24',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, -142.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T24'}
|
||||
EmtTcPos {
|
||||
Name = 'T25',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, -247.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T25'}
|
||||
EmtTcPos {
|
||||
Name = 'T26',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, -352.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T26'}
|
||||
EmtTcPos {
|
||||
Name = 'T27',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, -457.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T27'}
|
||||
EmtTcPos {
|
||||
Name = 'T28',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -503.2, 88.0, -562.5),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T28'}
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
@@ -468,48 +558,66 @@ else
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101S'}
|
||||
end
|
||||
if SecondSupport == 1 then
|
||||
-- supporto per punta
|
||||
EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -329.8),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T111'}
|
||||
elseif SecondSupport == 2 then
|
||||
-- supporto per mortasatrice
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -430.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T111M'}
|
||||
EgtSetInfo( TcpSsId, 'Mortiser', true)
|
||||
elseif SecondSupport == 3 then
|
||||
-- supporto per rinvio angolare
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T91',
|
||||
Parent = 'Base',
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( -710.4-150, 113.2, -329.8-170),
|
||||
TDir1 = X_AX(),
|
||||
Pos2 = Point3d( -710.4+150, 113.2, -329.8-170),
|
||||
TDir2 = -X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T91',
|
||||
Aux = 'BASE/T91_HS'}
|
||||
end
|
||||
if SpecialBH then
|
||||
EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -810.4, 113.2, -329.8),
|
||||
TDir = Y_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T111S'}
|
||||
else
|
||||
if not SpecialBH then
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -160.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101'}
|
||||
else
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -1160.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101S'}
|
||||
end
|
||||
if SecondSupport == 1 then
|
||||
-- supporto per punta
|
||||
EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -329.8),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T111'}
|
||||
elseif SecondSupport == 2 then
|
||||
-- supporto per mortasatrice
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -510.4, 113.2, -430.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T111M'}
|
||||
EgtSetInfo( TcpSsId, 'Mortiser', true)
|
||||
elseif SecondSupport == 3 then
|
||||
-- supporto per rinvio angolare
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T91',
|
||||
Parent = 'Base',
|
||||
ExitNbr = 2,
|
||||
Pos1 = Point3d( -710.4-150, 113.2, -329.8-170),
|
||||
TDir1 = X_AX(),
|
||||
Pos2 = Point3d( -710.4+150, 113.2, -329.8-170),
|
||||
TDir2 = -X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T91',
|
||||
Aux = 'BASE/T91_HS'}
|
||||
end
|
||||
if SpecialBH then
|
||||
EmtTcPos {
|
||||
Name = 'T111',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( -810.4, 113.2, -329.8),
|
||||
TDir = Y_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T111S'}
|
||||
end
|
||||
end
|
||||
|
||||
-- Aggiusto posizioni geometriche
|
||||
@@ -562,7 +670,7 @@ end
|
||||
-- Funzione per impostare spia stato morsa carrello Y
|
||||
function SetPYLight( bClosed)
|
||||
if not PYLightId then return end
|
||||
EgtSetColor( PYLightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
EgtSetColor( PYLightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
if bClosed then
|
||||
EgtSetInfo( PYLightId, 'On', '1')
|
||||
else
|
||||
@@ -596,6 +704,52 @@ function GetPVLight()
|
||||
return ( EgtGetInfo( PVLightId, 'On') == '1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
---------------------------- Cambio Utensile ------------------------
|
||||
function GetTCSet( sTcPos)
|
||||
-- TC 1
|
||||
if sTcPos == 'T1' or sTcPos == 'T2' or sTcPos == 'T3' or sTcPos == 'T4' or sTcPos == 'T5' or
|
||||
sTcPos == 'T6' or sTcPos == 'T7' or sTcPos == 'T8' or sTcPos == 'T9' or sTcPos == 'T10' or sTcPos == 'T11' then
|
||||
return 1
|
||||
-- TC 2
|
||||
elseif sTcPos == 'T21' or sTcPos == 'T22' or sTcPos == 'T23' or sTcPos == 'T24' or
|
||||
sTcPos == 'T25' or sTcPos == 'T26' or sTcPos == 'T27' or sTcPos == 'T28' then
|
||||
return 2
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare la posizione del rinvio flottante
|
||||
function SetFloatPos( sHead, dPos)
|
||||
-- recupero Id testa
|
||||
local nHeadId = EgtGetHeadId( sHead)
|
||||
if not nHeadId then return false end
|
||||
-- se ci sono entità flottanti nel ToolHolder
|
||||
local nRefId = EgtGetFirstNameInGroup( nHeadId, '_T1')
|
||||
local vtTool = EgtFR( nRefId, GDB_ID.ROOT):getVersZ()
|
||||
local nObjId = EgtGetFirstGroupInGroup( EgtGetFirstNameInGroup( nHeadId, 'T1'))
|
||||
local FloatEntities = EgtGetInfoInGroup( nObjId, 'Float')
|
||||
if FloatEntities and #FloatEntities > 0 then
|
||||
-- il porta-utensile flottante non può comprimersi più di 10mm
|
||||
if dPos > 10 then
|
||||
local sErr = 'Floating Ring compressed more than 10mm'
|
||||
EmtSetLastError( 1222, sErr)
|
||||
EgtOutLog( 'Error : ' .. sErr, 1)
|
||||
end
|
||||
local dFloat = EgtGetInfo( FloatEntities[1], 'Float', 'd')
|
||||
if abs( dPos - dFloat) > 10 * GEO.EPS_SMALL then
|
||||
local vtMove = ( dPos - dFloat) * vtTool
|
||||
-- sposto tutte le entità flottanti
|
||||
for i = 1, #FloatEntities do
|
||||
EgtMove( FloatEntities[i], vtMove, GDB_RT.GLOB)
|
||||
EgtSetInfo( FloatEntities[i], 'Float', dPos)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per resettare tutte le attivazioni della macchina
|
||||
function OnResetMachine()
|
||||
@@ -603,6 +757,7 @@ function OnResetMachine()
|
||||
EmtUnlinkAllFixturesFromGroups()
|
||||
SetPYLight( false)
|
||||
SetPVLight( false)
|
||||
SetFloatPos( 'H1', 0)
|
||||
-- nascondo Vmill
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
|
||||
Binary file not shown.
+9
-11
@@ -25,13 +25,16 @@
|
||||
|
||||
[Chiseling]
|
||||
|
||||
[SawRoughing]
|
||||
|
||||
[SawFinishing]
|
||||
|
||||
[GenMachining]
|
||||
0=l,LinTol,0.1
|
||||
1=l,MaxLen,2
|
||||
|
||||
[SurfRoughing]
|
||||
|
||||
[SurfFinishing]
|
||||
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
|
||||
@@ -43,8 +46,3 @@
|
||||
10=l,LoOrth,0
|
||||
11=l,LoElev,0
|
||||
12=b,DirFromGuide,1
|
||||
|
||||
[SurfRoughing]
|
||||
|
||||
[SurfFinishing]
|
||||
0=b,SkipMaxDown,1
|
||||
|
||||
+26
-12
@@ -24,7 +24,7 @@ local INVALIDPOS = ""
|
||||
local POS = "Pos"
|
||||
|
||||
-- Geom Set
|
||||
local GS = {}
|
||||
local GS = {{"H1", "H7", "H8"}}
|
||||
|
||||
-- Configurazione posizioni
|
||||
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
||||
@@ -40,20 +40,34 @@ local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos12", TcPos = "T42", Head = "H2", Group = "G1"},
|
||||
{Pos = "Pos13", TcPos = "T101", Head = "H3", Group = "G2"}}
|
||||
local SecSuppId = EgtGetTcPosId( 'T111')
|
||||
if SecSuppId then
|
||||
local bMortiser = EgtGetInfo( SecSuppId, 'Mortiser', 'b')
|
||||
if bMortiser then
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H3", Group = "G2"})
|
||||
else
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H1", Group = "G2"})
|
||||
|
||||
local IsTC2Active = ( EgtGetFirstNameInGroup( EgtGetBaseId( 'Base'), 'TC2') ~= nil)
|
||||
if IsTC2Active then
|
||||
local PositionTableTC2={{Pos = "Pos14", TcPos = "T21", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos15", TcPos = "T22", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos16", TcPos = "T23", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos17", TcPos = "T24", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos18", TcPos = "T25", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos19", TcPos = "T26", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos20", TcPos = "T27", Head = "H1", Group = "G3"},
|
||||
{Pos = "Pos21", TcPos = "T28", Head = "H1", Group = "G3"}}
|
||||
EgtJoinTables( PositionTable, PositionTableTC2)
|
||||
else
|
||||
local SecSuppId = EgtGetTcPosId( 'T111')
|
||||
if SecSuppId then
|
||||
local bMortiser = EgtGetInfo( SecSuppId, 'Mortiser', 'b')
|
||||
if bMortiser then
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H3", Group = "G2"})
|
||||
else
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T111", Head = "H1", Group = "G2"})
|
||||
end
|
||||
end
|
||||
if EgtGetHeadId( 'H5') then
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T91", Head = "H5", Group = "G2"})
|
||||
end
|
||||
end
|
||||
if EgtGetHeadId( 'H5') then
|
||||
table.insert( PositionTable, {Pos = "Pos14", TcPos = "T91", Head = "H5", Group = "G2"})
|
||||
end
|
||||
|
||||
local UsePositionHead = true
|
||||
local UsePositionHead = false
|
||||
|
||||
local function IsInGeomSet( ToolHead, PosHead)
|
||||
for GsIndex = 1, #GS do
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -27,6 +27,7 @@
|
||||
2=d,SIDESTEP
|
||||
3=d,SIDEDEPTH
|
||||
4=s,DOUBLE
|
||||
5=dr,TOOL_OVERHANG
|
||||
|
||||
[MILL_NOTIP]
|
||||
0=th,TH,
|
||||
@@ -34,6 +35,7 @@
|
||||
2=d,SIDESTEP
|
||||
3=d,SIDEDEPTH
|
||||
4=s,DOUBLE
|
||||
5=dr,TOOL_OVERHANG
|
||||
|
||||
[MORTISE_STD]
|
||||
0=b,MORTISE
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
==== Common_FAST Update Log ====
|
||||
|
||||
Versione 2.7a1 (07/01/2024)
|
||||
- (MLDE-SIM-GEN) Nuovo aggregato 90° (H7) per fresa tipo BlockHaus. Ticket#2142
|
||||
- (SIM-GEN) Aumentati limiti massimi di pinzaggio minimo
|
||||
|
||||
Versione 2.6l1 (02/12/2024)
|
||||
- (SIM) Corretto movimento VMILL durante scarico pezzo piccolo a caduta
|
||||
- (SIM-GEN) Per decidere posizione parcheggio barra dopo separazione, si considera lunghezza coda del pezzo in lavoro per evitare collisioni. Ticket#2168
|
||||
|
||||
Versione 2.6k1 (11/11/2024)
|
||||
- (GEN) Aggiunta gestione aggregato a T per NUM
|
||||
- (SIM) Tolta gestione testa dummy H4
|
||||
- (SIM-GEN) Aggiustato parametro in calcolo ingombro lavorazione. Ticket#2163
|
||||
|
||||
Versione 2.6j10 (25/10/2024)
|
||||
- (SIM-GEN) Miglioria 2.6j9. Si ribadisce pinza in presa sempre, all'inizio, in base a quella attiva
|
||||
|
||||
Versione 2.6j9 (22/10/2024)
|
||||
- (SIM-GEN) Miglioria 2.6j6. Oltre al passo pellegrino si ribadisce anche quando è scambio diretto
|
||||
|
||||
Versione 2.6j8 (21/10/2024)
|
||||
- (SIM-GEN) Corretto problema tolleranza aggiunto con versione 2.6j7
|
||||
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
-- Version.lua by EgalWare s.r.l. 2024/03/28
|
||||
-- Version.lua by EgalWare s.r.l. 2024/12/23
|
||||
-- Gestione della versione dei file comuni post-processori macchine FAST e FASTrl di Essetre
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_FAST', -- nome script PP standard
|
||||
VERSION = '2.6j8', -- versione script
|
||||
VERSION = '2.7a1', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user