Compare commits

...

23 Commits

Author SHA1 Message Date
andrea.villa 9a1da7d5d7 Merge branch 'develop' 2026-04-10 09:32:54 +02:00
andrea.villa 3843cf5e8c Cambio versione per rilascio versione ufficiale 2026-04-10 09:32:38 +02:00
daniele.nicoli 94f86eae81 Tolta anche correzione a EZ 2026-04-09 17:36:16 +02:00
daniele.nicoli c16b1931a9 Merge branch 'develop' of https://gitlab.steamware.net/egalware-machines/essetre/essetre-90480023_xs-mw into develop 2026-04-09 17:23:02 +02:00
daniele.nicoli cf9c2ebbb6 - Aggiunto parametro PARK_Y_SCRAP_REMOVE nel Ts3Data e gestione.
- Salita in ZMax dopo una chiodatura avviene solo se l'utensile seguente è diverso da quello attuale (EB1).
2026-04-09 17:19:57 +02:00
andrea.villa e9aaede78c Altezza cuffia comprende sottopezzo
ZSafe chiodatura in coordinata assoluta alla Z di lavoro, non è in incrementale
2026-04-09 17:06:39 +02:00
andrea.villa 874e9f73d7 Aggiunto parametro in WallData 2026-04-09 10:53:00 +02:00
andrea.villa 7940f26f50 Aggiunto calcolo moltiplicatore lama su aggregato 2026-04-08 15:01:32 +02:00
andrea.villa f59b55e723 Per macro M26, il default è 1 anziché 0 2026-04-08 12:09:20 +02:00
andrea.villa 421b8dd8a5 Se LOAD90 attivo, bisogna scrivere 4, che significa di attivare il laser posto sul ponte, che cerca lo zero del pannello 2026-04-08 11:46:04 +02:00
andrea.villa 5db826e614 Corretta scrittura utensile anche in caso di aggregato 2026-04-08 09:58:30 +02:00
andrea.villa 7f8f17f358 - Rimosse variabili Lxxx iniziali
- Modifica a macro M26 e M27
- Corretta costruzione piano generico
2026-04-08 09:05:15 +02:00
andrea.villa 7e8bc31bc0 Piccole modifiche macro chiodatura 2026-04-07 17:52:27 +02:00
andrea.villa 4b6a090a91 - Forzata origine 3 se arriva origine 1
- Corretti zeri piani generici di lavorazione
2026-04-07 17:25:39 +02:00
andrea.villa 5b072281f4 Corretta scrittura origini 2026-04-07 15:06:41 +02:00
andrea.villa bd7c69ac0a - Tolto funzioni per chiodature in doppio
- Anche se ci viene passata origine 1, si considera come fosse la 3
2026-04-07 11:43:46 +02:00
andrea.villa 5734560db2 Corrette origini 2026-04-07 10:33:05 +02:00
andrea.villa 912dd11c64 Merge branch 'develop' of https://gitlab.steamware.net/egalware-machines/essetre/essetre-90480023_xs-mw into develop 2026-04-07 09:27:26 +02:00
andrea.villa 5fe8e8caf0 Aggiunta gestione testa H12, lama su rinvio anche in generazione 2026-04-07 09:25:40 +02:00
daniele.nicoli 43518c80ff - Modificato nuovamente ordine chiodatrici.
- mlse, ZMax() Aggiunta testa H12.
- mlpe, ToolDeselect() Aggiunta testa H12.
- Variabili disassamenti Lama (SawDelta).
- mlde, OnSetHead() Aggiunta gestione H12
2026-04-07 09:18:00 +02:00
daniele.nicoli 9585b06976 -Aggiunta lama non ancora implementata funzionante.
-aggiunti TH da PF
- Modificati nomi magazzino
- Aggiunte Machnotes e Toolnotes
2026-04-03 16:56:37 +02:00
daniele.nicoli 7351e269c9 cambio versione DEV3 2026-04-03 09:24:42 +02:00
daniele.nicoli c431363005 Sistemati segni chiodatrici in - 2026-04-03 09:22:03 +02:00
24 changed files with 311 additions and 270 deletions
+6 -6
View File
@@ -18,9 +18,7 @@ Active=1
[ToolHolder]
H1.1=Standard.nge
H1.1:MILL_NOTIP=MillNoTip.nge
H1.1:SAW_FLAT=SawOnH1.nge
H2.1=SawOnAT.nge
H3.1=ChainSaw.nge
H12.1=Saw.nge
[Machinings]
Drilling=1
@@ -45,9 +43,11 @@ ExitScript=ExitMach.lua
; 5 axis head
H1=6608
; 5 axis saw
H2=6615
; Chainsaw
H3=6616
H12=6615
; Nail
H21=6630
H22=6630
H23=6630
[SetUp]
Default=Standard
+80 -68
View File
@@ -8,7 +8,8 @@ require( 'EmtGenerator')
EgtEnableDebug( false)
if not EmtModifyHeadAuxDirection then error( 'A newer version of the program is required (minimum 2.3j5)') end
PP_VER = '3.1d1_DEV2'
PP_VER = '3.1d2'
PP_NVER = '3.1.4.2'
PP_NVER = '2.7.4.1'
-- Parametri macchina
@@ -25,7 +26,7 @@ MinC1 = -275.0
MaxC1 = 275.0
PosSpecC1 = 34
MillOffs = 170
ChSawLen = 96.0
ChSawLen = 0.0
ParkC1 = 0
ParkB1 = 0
ParkSawC1 = -90
@@ -34,30 +35,32 @@ MinX2 = 1047.0
MaxX2 = 6080.0
MinZ2 = -770.0
MaxZ2 = 0.0
SawDeltaX = 33.65
SawDeltaY = 210.0
SawDeltaZ = -133.0
SawOffs = 115.5
Nail11DeltaX = 318.0 -- Distanza da Mandrino a Graffettatrice H21
Nail11DeltaY = -111.5
SawOffsX = 110.0
SawOffsY = 0
SawOffsZ = -150.3
SawC1Offs = 0
SawB1Offs = 0
SawOffs = 0.0
Nail11DeltaX = -277.0 -- Distanza da Mandrino a Graffettatrice H21
Nail11DeltaY = -112.5
Nail11DeltaZ = -421.6497
Nail12DeltaX = 315.8125 -- Distanza da Mandrino a Graffettatrice H22
Nail12DeltaY = 136.1311
Nail12DeltaX = -279.1874 -- Distanza da Mandrino a Graffettatrice H22
Nail12DeltaY = 135.1311
Nail12DeltaZ = -421.6497
Nail13DeltaX = -277.0 -- Distanza da Mandrino a Graffettatrice H23
Nail13DeltaY = -111.5
Nail13DeltaX = 318.0 -- Distanza da Mandrino a Graffettatrice H23
Nail13DeltaY = -112.5
Nail13DeltaZ = -421.6497
Nail14DeltaX = 0 -- Distanza da Mandrino a Graffettatrice H24 (non esiste su questa macchina)
Nail14DeltaY = 0
Nail14DeltaZ = 0
Orig2DeltaX = 0 -- Origine angolo tavola 2
Orig2DeltaY = -3500
Orig2DeltaY = 0
Orig2DeltaZ = 0
Orig3DeltaX = 33383 -- Origine angolo tavola 2
Orig3DeltaX = 0 -- Origine angolo tavola 2
Orig3DeltaY = 0
Orig3DeltaZ = 0
Orig4DeltaX = 33383 -- Origine angolo tavola 2
Orig4DeltaY = -3500
Orig4DeltaX = 0 -- Origine angolo tavola 2
Orig4DeltaY = 0
Orig4DeltaZ = 0
Orig5DeltaX = 27000 -- Origine angolo tavola 2
Orig5DeltaY = 0
@@ -68,9 +71,12 @@ Orig6DeltaZ = 0
DimTabX = 33383.0--31200.0 -- Dimensione tavola
DimTabY = 3500.0
DeltaTabX = -34391.9582---34200.00 -- Distanza da Mandrino a origine principale angolo tavola.
DeltaTabY = 1291.0--1289.00
DeltaTabY = 1290.0--1289.00
DeltaTabZ = -1227.6497
CoeffVM = 0.5
OffsetH12X = 110
OffsetH12Z = 150
ParkYScrapRemove = nil
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480023_XS-MW.data"
@@ -109,23 +115,27 @@ if EgtExistsFile( sData) then
SawOffs = MchOffs.PIVOT_SAW or SawOffs
if MchOffs.OFFSET_ZERO3_Y then DimTabX = - MchOffs.OFFSET_ZERO3_Y end
if MchOffs.OFFSET_ZERO2_X then DimTabY = - MchOffs.OFFSET_ZERO2_X end
if MchOffs.ZERO_Y_MILL then DeltaTabX = -MchOffs.ZERO_Y_MILL end
if MchOffs.ZERO_X_MILL then DeltaTabY = MchOffs.ZERO_X_MILL or DeltaTabY end
if MchOffs.ZERO_Y_MILL then DeltaTabX = MchOffs.ZERO_Y_MILL end
if MchOffs.ZERO_X_MILL then DeltaTabY = - MchOffs.ZERO_X_MILL or DeltaTabY end
if MchOffs.ZERO_Z_MILL then DeltaTabZ = MchOffs.ZERO_Z_MILL or DeltaTabZ end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_SAW then SawDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_SAW) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_SAW then SawDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_SAW) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_SAW then SawDeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_SAW) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_SAW then SawDeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_SAW) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_SAW then SawDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_SAW) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL11_Y then Nail11DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL11_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL11_X then Nail11DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL11_X) end
if Machine.SAWOFFSX then SawOffsX = Machine.SAWOFFSX end
if Machine.SAWOFFSZ then SawOffsZ = Machine.SAWOFFSZ end
if Machine.OFFSETCLAMAT1 then SawC1Offs= Machine.OFFSETCLAMAT1 end
if Machine.OFFSETBLAMAT1 then SawB1Offs= Machine.OFFSETBLAMAT1 end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL11_Y then Nail11DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL11_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL11_X then Nail11DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL11_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL11_Z then Nail11DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL11_Z) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL12_Y then Nail12DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL12_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL12_X then Nail12DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL12_X) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL12_Y then Nail12DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL12_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL12_X then Nail12DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL12_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL12_Z then Nail12DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL12_Z) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL13_Y then Nail13DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL13_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL13_X then Nail13DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL13_X) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL13_Y then Nail13DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL13_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL13_X then Nail13DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL13_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL13_Z then Nail13DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL13_Z) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL14_Y then Nail14DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL14_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL14_X then Nail14DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL14_X) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL14_Y then Nail14DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL14_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL14_X then Nail14DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL14_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL14_Z then Nail14DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL14_Z) end
if MchOffs.OFFSET_ZERO2_Y then Orig2DeltaX = -MchOffs.OFFSET_ZERO2_Y end
if MchOffs.OFFSET_ZERO2_X then Orig2DeltaY = MchOffs.OFFSET_ZERO2_X end
@@ -142,22 +152,19 @@ if EgtExistsFile( sData) then
if MchOffs.OFFSET_ZERO6_Y then Orig6DeltaX = -MchOffs.OFFSET_ZERO6_Y end
if MchOffs.OFFSET_ZERO6_X then Orig6DeltaY = MchOffs.OFFSET_ZERO6_X end
if MchOffs.OFFSET_ZERO6_Z then Orig6DeltaZ = MchOffs.OFFSET_ZERO6_Z end
if MchOffs.PARK_Y_SCRAP_REMOVE then ParkYScrapRemove = MchOffs.PARK_Y_SCRAP_REMOVE end
end
end
-- Spostamenti della lama rispetto al disegno
local SawOffsX = SawDeltaX - 33.65
local SawOffsY = SawDeltaY - 210.0
local SawOffsZ = SawDeltaZ + 133.0
-- Spostamenti delle chiodatrici rispetto al disegno
local Nail11OffsX = Nail11DeltaX - 318.0
local Nail11OffsY = Nail11DeltaY + 111.5
local Nail11OffsX = Nail11DeltaX + 277.0
local Nail11OffsY = Nail11DeltaY + 112.5
local Nail11OffsZ = Nail11DeltaZ + 421.6497
local Nail12OffsX = Nail12DeltaX - 315.8125
local Nail12OffsY = Nail12DeltaY - 136.1311
local Nail12OffsX = Nail12DeltaX + 279.1874
local Nail12OffsY = Nail12DeltaY - 135.1311
local Nail12OffsZ = Nail12DeltaZ + 421.6497
local Nail13OffsX = Nail13DeltaX + 277.0
local Nail13OffsY = Nail13DeltaY + 111.5
local Nail13OffsX = Nail13DeltaX - 318.0
local Nail13OffsY = Nail13DeltaY + 112.5
local Nail13OffsZ = Nail13DeltaZ + 421.6497
EmtGeneral {
@@ -172,7 +179,7 @@ local BaseId = EmtBase {
Geo='BASE/GEO',
Aux={'BASE/LOAD', 'BASE/MOD01', 'BASE/MOD02', 'BASE/MOD03', 'BASE/MOD04', 'BASE/MOD05', 'BASE/MOD06', 'BASE/MOD07',
'BASE/MOD08', 'BASE/MOD09', 'BASE/MOD10', 'BASE/MOD11', 'BASE/MOD12', 'BASE/MOD13', 'BASE/MOD14', 'BASE/REF', 'BASE/COLLISION', 'BASE/UNLOAD'}}
local vtMove = Vector3d( DeltaTabX + 34391.9582, DeltaTabY - 1291.0, DeltaTabZ + 1227.6497 )
local vtMove = Vector3d( DeltaTabX + 34391.9582, DeltaTabY - 1290.0, DeltaTabZ + 1227.6497 )
EgtMove( BaseId, vtMove, GDB_RT.GLOB)
-- Tavola
EmtTable {
@@ -226,7 +233,7 @@ EmtAxis {
Token = 'C',
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d( 0, 1, 485.5966),
Pos = Point3d( 0, 0, 485.5966),
Stroke = {MinC1, MaxC1},
Home = 0,
Geo = 'C1_AXIS/GEO',
@@ -236,7 +243,7 @@ EmtAxis {
Parent = 'C1',
Token = 'B',
Type = MCH_AT.ROTARY,
Dir = -Y_AX(),
Dir = X_AX(),
Pos = Point3d( 0, 0, MillOffs),--( 0, 52.5966, MillOffs),
Stroke = {MinB1, MaxB1},
Home = 0,
@@ -254,6 +261,18 @@ EmtHead {
Rot1W = 0.1,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H1_HEAD/GEO'}
-- Testa Lama
EmtHead {
Name = 'H12',
Parent = 'B1',
HSet = 'H1',
Type = MCH_HT.STD,
Pos = Point3d( -SawOffsX, SawOffsY, SawOffsZ),
TDir = Vector3d( 0, sin( SawB1Offs), cos( SawB1Offs)),
ADir = X_AX(),
Rot1W = 0.1,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H12_HEAD/GEO'}
-- Sega a catena
EmtAxis {
Name = 'A1',
@@ -265,7 +284,6 @@ EmtAxis {
Stroke = { 0, 270},
Home = 180,
Geo = 'A1_AXIS/GEO'}
-- Carro 2
local X2Id = EmtAxis {
Name = 'X2',
@@ -278,7 +296,7 @@ local X2Id = EmtAxis {
Home = MaxX2,
Geo = 'X2_AXIS/GEO',
Aux = {'X2_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, 0), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), Vector3d( Nail11OffsX, Nail11OffsY, 0), GDB_RT.GLOB)
local Z2Id = EmtAxis {
Name = 'Z2',
Parent = 'X2',
@@ -291,7 +309,7 @@ local Z2Id = EmtAxis {
Home = 0,
Geo = 'Z2_AXIS/GEO',
Aux = {'Z2_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), Vector3d( Nail11OffsX, Nail11OffsY, Nail11OffsZ), GDB_RT.GLOB)
local H21Id = EmtHead {
Name = 'H21',
@@ -324,56 +342,56 @@ local H23Id = EmtHead {
Aux = {'H23_HEAD/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( H23Id, 'SOLID'), Vector3d( Nail13OffsX, Nail13OffsY, Nail13OffsZ), GDB_RT.GLOB)
-- ToolChanger
local ptTcA = Point3d( -600.1772, 334, -592.1636)
local ptTcA = Point3d( -600.1772, 333, -592.1636)
EmtTcPos {
Name = 'T1',
Parent = 'Y',
Pos = ptTcA,
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA1'}
EmtTcPos {
Name = 'T2',
Parent = 'Y',
Pos = ptTcA - 102.5 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA2'}
EmtTcPos {
Name = 'T3',
Parent = 'Y',
Pos = ptTcA - 205 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA3'}
EmtTcPos {
Name = 'T4',
Parent = 'Y',
Pos = ptTcA - 307.5 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA4'}
EmtTcPos {
Name = 'T5',
Parent = 'Y',
Pos = ptTcA - 410 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA5'}
EmtTcPos {
Name = 'T6',
Parent = 'Y',
Pos = ptTcA - 512.5 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA6'}
EmtTcPos {
Name = 'T7',
Name = 'T8',
Parent = 'Y',
Pos = ptTcA - 717.5 * Z_AX(),
Pos = ptTcA - 717.5 * Z_AX() + Vector3d( -OffsetH12X, -OffsetH12Z, 0),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TA7'}
ADir = X_AX(),
Geo = 'Y_AXIS/TA8'}
---------------------------------------------------------------------
-- Funzioni richiamate per modificare i dati macchina in casi particolari
@@ -393,19 +411,8 @@ end
---------------------------------------------------------------------
function OnSetHead()
-- se sega a catena
if EMC.HEAD == 'H3' then
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
local CSawPosA = EgtGetVal( sVal, 'A1', 'd') or 180
EmtModifyAxisHome( 'X1', ( MinX1 + MaxX1) / 2)
EmtModifyAxisHome( 'Z1', GetChainSawZHomeFromVirtualAxis( CSawPosA))
EmtModifyAxisStroke( 'C1', { MinC1, MaxC1})
EmtModifyAxisStroke( 'B1', { -0.1, MaxB1})
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA))
EmtModifyAxisHome( 'B1', 0)
EmtModifyAxisHome( 'A1', CSawPosA)
-- se lama su testa 5 assi
elseif EMC.HEAD == 'H1' and EMC.TOTDIAM > 600 then
if EMC.HEAD == 'H1' and EMC.TOTDIAM > 600 then
EmtModifyAxisHome( 'Z1', -150)
EmtModifyAxisStroke( 'C1', { -180.1, 0.1})
EmtModifyAxisStroke( 'B1', { -90, 0})
@@ -426,6 +433,11 @@ function OnSetHead()
EmtModifyAxisHome( 'C1', ParkC1)
EmtModifyHeadAuxDirection( 'H1', Y_AX())
end
elseif EMC.HEAD == 'H12' then
EmtModifyAxisHome( 'Z1', -150)
EmtModifyAxisHome( 'C1', ParkC1)
EmtModifyAxisHome( 'B1', ParkB1)
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
else
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
EmtModifyAxisHome( 'C1', ParkC1)
+96 -87
View File
@@ -39,7 +39,11 @@ end
function OnProgramStart()
-- Info da gruppo BtlInfo
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL
EMT.ORIG = EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 1
EMT.ORIG = EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 1
-- CASO SPECIALE: questa macchina utilizza origine 3 anche se viene passata origine 1 da TS3
if EMT.ORIG == 1 then
EMT.ORIG = 3
end
-- Intestazioni
if not TEST_USE then
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL
@@ -56,37 +60,13 @@ function OnProgramStart()
end
EmtOutput( '('.. MLE_INFO..')')
-- Parametri macchina
local sOut = 'L151='..EgtNumToString( DeltaTabY + DimTabY - Nail11DeltaY, 2)..'\n'..
'L152='..EgtNumToString( -DeltaTabX + Nail11DeltaX, 2)..'\n'..
'L153='..EgtNumToString( DeltaTabZ - Nail11DeltaZ, 2)..'\n'..
'L154='..EgtNumToString( DeltaTabY + DimTabY - Nail12DeltaY, 2)..'\n'..
'L155='..EgtNumToString( -DeltaTabX + Nail12DeltaX, 2)..'\n'..
'L156='..EgtNumToString( DeltaTabZ - Nail12DeltaZ, 2)..'\n'..
'L157='..EgtNumToString( DeltaTabY + DimTabY - Nail13DeltaY, 2)..'\n'..
'L158='..EgtNumToString( -DeltaTabX + Nail13DeltaX, 2)..'\n'..
'L159='..EgtNumToString( DeltaTabZ - Nail13DeltaZ, 2)..'\n'..
'L160='..EgtNumToString( DeltaTabY + DimTabY - Nail14DeltaY, 2)..'\n'..
'L161='..EgtNumToString( -DeltaTabX + Nail14DeltaX, 2)..'\n'..
'L162='..EgtNumToString( DeltaTabZ - Nail14DeltaZ, 2)..'\n'..
'L163='..EgtNumToString( Orig2DeltaY, 2)..'\n'..
'L164='..EgtNumToString( -Orig2DeltaX, 2)..'\n'..
'L165='..EgtNumToString( Orig2DeltaZ, 2)..'\n'..
'L166='..EgtNumToString( Orig3DeltaY, 2)..'\n'..
'L167='..EgtNumToString( -Orig3DeltaX, 2)..'\n'..
'L168='..EgtNumToString( Orig3DeltaZ, 2)..'\n'..
'L169='..EgtNumToString( Orig4DeltaY, 2)..'\n'..
'L170='..EgtNumToString( -Orig4DeltaX, 2)..'\n'..
'L171='..EgtNumToString( Orig4DeltaZ, 2)..'\n'..
'L172='..EgtNumToString( Orig5DeltaY, 2)..'\n'..
'L173='..EgtNumToString( -Orig5DeltaX, 2)..'\n'..
'L174='..EgtNumToString( Orig5DeltaZ, 2)..'\n'..
'L175='..EgtNumToString( Orig6DeltaY, 2)..'\n'..
'L176='..EgtNumToString( -Orig6DeltaX, 2)..'\n'..
'L177='..EgtNumToString( Orig6DeltaZ, 2)..'\n'..
'G114'..' EA'..EgtNumToString( DeltaTabY + DimTabY - SawDeltaY, 2)..' EB'..EgtNumToString( -DeltaTabX + SawDeltaX, 2)..
' EC'..EgtNumToString( DeltaTabZ - SawDeltaZ, 2)..' ED'..EgtNumToString( 0, 2)..' EE'..EgtNumToString( SawOffs, 2)..
' EF'..EgtNumToString( DeltaTabY + DimTabY, 2)..' EG'..EgtNumToString( -DeltaTabX, 2)..
' EH'..EgtNumToString( DeltaTabZ, 2)..' EI'..EgtNumToString( MillOffs, 2)
local sOut = 'G114'..' EA'..EgtNumToString( -DeltaTabY, 2)..' EB'..EgtNumToString( DeltaTabX, 2)..
' EC'..EgtNumToString( DeltaTabZ, 2)..' ED'..EgtNumToString( MillOffs, 2)..
' EE'..EgtNumToString( Nail11DeltaY - DeltaTabY, 2, 2)..' EF'..EgtNumToString( DeltaTabX - Nail11DeltaX, 2)..' EG'..EgtNumToString( DeltaTabZ - Nail11DeltaZ, 2)..
' EH'..EgtNumToString( Nail12DeltaY - DeltaTabY, 2, 2)..' EI'..EgtNumToString( DeltaTabX - Nail12DeltaX, 2)..' EL'..EgtNumToString( DeltaTabZ - Nail12DeltaZ, 2)..
' EM'..EgtNumToString( Nail13DeltaY - DeltaTabY, 2, 2)..' EN'..EgtNumToString( DeltaTabX - Nail13DeltaX, 2)..' EO'..EgtNumToString( DeltaTabZ - Nail13DeltaZ, 2)..
' EP'..EgtNumToString( Nail14DeltaY - DeltaTabY, 2, 2)..' EQ'..EgtNumToString( DeltaTabX - Nail14DeltaX, 2)..' ER'..EgtNumToString( DeltaTabZ - Nail14DeltaZ, 2)
EmtOutput( sOut)
-- Indice lavorazione
EMT.CNT = 0
@@ -118,7 +98,7 @@ function OnProgramEnd()
EmtOutput( 'M05 E80000=1')
-- Tipo di scarico
if not TEST_USE then
EmtOutput( 'M27 E30057=1')
EmtOutput( 'M27 E30057=0')
end
-- Se modalità test, termino il programma
if TEST_USE then
@@ -156,10 +136,16 @@ function OnDispositionEnd()
' E30051='..EgtNumToString( 1000 * b3Raw:getDimX(), 0)..
' E30052='..EgtNumToString( 1000 * b3Raw:getDimZ(), 0))
EMT.ST = b3Raw:getDimZ()
-- Scelta origine
EmtOutput( 'M26 E30054='..EgtNumToString( EMT.ORIG, 0))
-- Comando per gestione carico. Se LOAD90 attivo, bisogna scrivere 4, che significa di attivare il laser posto sul ponte, che cerca lo zero del pannello
-- N.B.: si utilizza LOAD90 perchè è un parametro che già leggiamo e che sulle WALL non viene utilizzato
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or EgtGetCurrMachGroup() or GDB_ID.NULL
local nLoad90 = EgtGetInfo( BtlInfoId, 'LOAD90', 'i') or 0
if nLoad90 > 0 then nLoad90 = 4 else nLoad90 = 1 end
EmtOutput( 'M26 E30054='..EgtNumToString( nLoad90, 0))
-- Posizione cuffia
local dHCuff = b3Raw:getDimZ() + 32
local dHeightSubPiece = EMT.RAWPOS[3] or 0
local dHCuff = dHeightSubPiece + b3Raw:getDimZ() + 32
EmtOutput( 'E30039=' .. EgtNumToString( dHCuff * 1000, 0))
-- Eventuale salto a lavorazione in corso
EmtOutput( 'G79 NE80000')
@@ -251,11 +237,19 @@ end
function OnPathEnd()
if IsNailingHead( EMT.HEAD) then
local dStep = GetValNotes( EgtGetMachiningParam( MCH_MP.USERNOTES), 'Par', 'd') or 100
local dSafeZ = max( EgtGetMachiningParam( MCH_MP.STARTPOS), 10) or 20
local dSafeZ = EMT.NAIL_START_L3 + ( max( EgtGetMachiningParam( MCH_MP.STARTPOS), 10) or 20)
--local dSafeZ = EgtMdbGetGeneralParam( MCH_GP.SAFEZ)
if EMT.HEAD == 'H21' or EMT.HEAD == 'H22' or EMT.HEAD == 'H23' then
local nNextOperationId = EgtGetNextActiveOperation( EMT.MCHID)
if nNextOperationId then
EgtSetCurrMachining( nNextOperationId)
EMT.NEXTTOOL = EgtGetMachiningParam( MCH_MP.TOOL)
EgtSetCurrMachining( EMT.MCHID)
end
local sZMax = ''
if EMT.TOOL ~= EMT.NEXTTOOL then sZMax = ' EB1' end
EmtOutput( 'G124 X'..EmtLenToString( EMT.NAIL_START_L1, 3)..' Y'..EmtLenToString( EMT.NAIL_START_L2, 3)..' Z'..EmtLenToString( EMT.NAIL_START_L3, 3)..
' B'..EmtLenToString( EMT.NAIL_END_L1, 3)..' C'..EmtLenToString( EMT.NAIL_END_L2, 3)..' EA'..EmtLenToString( dStep, 3)..' EB1'..
' B'..EmtLenToString( EMT.NAIL_END_L1, 3)..' C'..EmtLenToString( EMT.NAIL_END_L2, 3)..' EA'..EmtLenToString( dStep, 3).. sZMax..
' W'..EmtLenToString( dSafeZ, 3)..EMT.NAIL_END)
else
local sExtra = ''
@@ -320,7 +314,7 @@ function OnRapid()
if EMT.SCRAPFIRST then
EMT.SCRAPFIRST = false
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
local ParkY = ParkYScrapRemove or min( -( b3Raw:getMin():getX() - 2000), MinY)
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
end
-- pre-posizionamento
@@ -332,8 +326,8 @@ function OnRapid()
local sEE = GetEE()
local sEF = GetEF()
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( ChSawLen, 3)
local sES = ' ES'..EgtNumToString( abs( EMT.S) * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65), 0)
local sEL = ' EL' .. GetEL()
local sER = ' ER' .. EmtLenToString( EMT.TLEN, 3)
sOut = sOut .. sET .. sEU .. sEE .. sEF .. sEM .. sES .. sEL .. sER
EmtOutput( sOut)
@@ -344,7 +338,7 @@ function OnRapid()
EMT.SCRAPFIRST = false
-- pausa per rimozione sfridi
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
local ParkY = ParkYScrapRemove or min( -( b3Raw:getMin():getX() - 2000), MinY)
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
end
end
@@ -352,12 +346,12 @@ function OnRapid()
EmtResetPrev()
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1')
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' or ( EMT.HEAD == 'H14' and not EMT.DOUBLE) then
sOut = sOut .. ' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' or ( EMT.HEAD == 'H14' and not EMT.DOUBLE) then
sOut = sOut .. ' U' .. EmtLenToString( -MaxX2, 3) .. ' W0 V0 A0'
elseif EMT.HEAD == 'H14' then
sOut = sOut .. ' U' .. EmtLenToString( EMT.L2 - EMT.DELTA, 3) .. ' W0 V0 A0'
elseif EMT.HEAD == 'H2' or EMT.HEAD == 'H21' or EMT.HEAD == 'H22' or EMT.HEAD == 'H23' then
sOut = sOut .. ' U' .. EmtLenToString( MaxX1, 3) .. ' W0 V0 A0'
sOut = sOut .. ' U' .. EmtLenToString( -MinX1, 3) .. ' W0 V0 A0'
else
EmtSetLastError( 1211, "Unknown Head : " .. EMT.HEAD)
end
@@ -366,8 +360,8 @@ function OnRapid()
local sEE = GetEE()
local sEF = GetEF()
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
local sES = ' ES'..EgtNumToString( abs( EMT.S) * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65), 0)
local sEL = ' EL' .. GetEL()
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
sOut = sOut .. sET .. sEU .. sEE .. sEF .. sEM .. sES .. sEL .. sER
EmtOutput( sOut)
@@ -394,8 +388,8 @@ function OnRapid()
local sEE = GetEE()
local sEF = ' EF20000'
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
local sES = ' ES'..EgtNumToString( abs( EMT.S) * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65), 0)
local sEL = ' EL' .. GetEL()
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
if not IsNailingHead( EMT.HEAD) then
EmtOutput( 'G102'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EmtGetAxis('R2')..EmtGetAxis('R1')..EMT.IPLGLSTR..sET..sEU..sEE..sEF..sEM..sES..sEL..sER)
@@ -434,17 +428,17 @@ function OnRapid()
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
-- se fresa o punta su testa 1 raddrizzo l'utensile in risalita
if EMT.HEAD == 'H1' and EMT.TCPOS ~= 'T201' and EMT.TCPOS ~= 'T202' and EMT.TCPOS ~= 'T203' then
if ( EMT.HEAD == 'H1' or EMT.HEAD == 'H12') and EMT.TCPOS ~= 'T201' and EMT.TCPOS ~= 'T202' and EMT.TCPOS ~= 'T203' then
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') ..
' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
' U' .. EmtLenToString( -MaxX2, 3) .. ' W0 V0 A0'
local sET = GetET()
local sEU = GetEU()
local sEE = GetEE()
local sEF = GetEF()
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EMT.TLEN, 3)
local sES = ' ES'..EgtNumToString( abs( EMT.S) * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65), 0)
local sEL = ' EL' .. GetEL()
local sER = ' ER' .. EmtLenToString( EMT.TDIAM / 2, 3)
sOut = sOut .. sET .. sEU .. sEE .. sEF .. sEM .. sES .. sEL .. sER
EmtOutput( sOut)
@@ -452,19 +446,19 @@ function OnRapid()
elseif EMT.HEAD == 'H3' then
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') ..
' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
' U' .. EmtLenToString( -MaxX2, 3) .. ' W0 V0 A0'
local sET = GetET()
local sEU = GetEU()
local sEE = GetEE()
local sEF = GetEF()
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EMT.TLEN, 3)
local sES = ' ES'..EgtNumToString( abs( EMT.S) * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65), 0)
local sEL = ' EL' .. GetEL()
local sER = ' ER' .. EmtLenToString( EMT.TDIAM / 2, 3)
sOut = sOut .. sET .. sEU .. sEE .. sEF .. sEM .. sES .. sEL .. sER
EmtOutput( sOut)
sOut = 'G101' .. ' X' .. EmtLenToString( ( MinX1 + MaxX1) / 2, 3)..
' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
' U' .. EmtLenToString( -MaxX2, 3) .. ' W0 V0 A0'
EmtOutput( sOut)
end
-- dichiarazione risalita a Zmax
@@ -512,8 +506,8 @@ function OnLinear()
local sEE = GetEE()
local sEF = ' EF20000'
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
local sES = ' ES'..EgtNumToString( abs( EMT.S) * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65), 0)
local sEL = ' EL' .. GetEL()
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
if not IsNailingHead( EMT.HEAD) then
EmtOutput( 'G102'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EmtGetAxis('R2')..EmtGetAxis('R1')..EMT.IPLGLSTR..sET..sEU..sEE..sEF..sEM..sES..sEL..sER)
@@ -616,11 +610,11 @@ function MyAdjustLinearAxes()
if EMT.REFLOC then
local vtDelta = V_NULL()
local vtE = V_NULL()
if EMT.HEAD == 'H1' then
local Len = EMT.TLEN + MillOffs
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' then
local dAddLen = EgtIf( EMT.HEAD == 'H12', -SawOffsZ, 0)
local Len = EMT.TLEN + dAddLen + MillOffs
local LenRef = MillOffs
local vtTool = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
vtE = vtTool * Len - Z_AX() * LenRef
vtE = Vector3d( EMT.TDIR) * Len - Z_AX() * LenRef
elseif EMT.HEAD == 'H2' then
vtDelta = -Vector3d( SawDeltaX, SawDeltaY, SawDeltaZ)
elseif EMT.HEAD == 'H3' then
@@ -667,61 +661,64 @@ function CalcInterpPlane()
local ptS = Point3d( xS, yS, zS)
-- calcolo per piano generico
local vtE
if EMT.HEAD == 'H1' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' then
vtE = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
elseif EMT.HEAD == 'H3' then
vtE = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
else
vtE = Z_AX()
end
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' then
EMT.IPLGLFR = Frame3d( ptS, vtE)
else
EMT.IPLGLFR = Frame3d( ptS, Y_AX(), -X_AX(), Z_AX())
EMT.IPLGLFR = Frame3d( ptS, -Y_AX(), X_AX(), Z_AX())
end
--EmtOutput( 'IPLGLFR='..tostring(EMT.IPLGLFR))
local _, dAngV, dAngO = SphericalFromVector( vtE)
local dAngO2 = EmtGetAngO2( EMT.IPLGLFR:getVersZ(), EMT.IPLGLFR:getVersX(), dAngV, dAngO)
dAngO = dAngO - 90
while dAngO < 0 do
dAngO = dAngO + 90
while dAngO - GEO.EPS_ANG_SMALL < 0 do
dAngO = dAngO + 360
end
while dAngO + GEO.EPS_ANG_SMALL > 360 do
dAngO = dAngO - 360
end
-- se rotazione solo attorno alla C allora si mette come rotazione finale
if abs( dAngV) < GEO.EPS_ANG_SMALL then
dAngO2 = dAngO2 + dAngO
while dAngO2 >= 360 do
dAngO2 = dAngO2 - 360
end
dAngO = 0
dAngO = 0
end
local xOut = yS - DeltaTabY - DimTabY
local yOut = - ( xS - DeltaTabX)
local xOut = - ( yS - DeltaTabY)
local yOut = xS - DeltaTabX - DimTabX
local zOut = zS
if EMT.ORIG == 2 then
xOut = yS - DeltaTabY
yOut = - ( xS - DeltaTabX)
xOut = - ( yS - DeltaTabY - DimTabY)
yOut = xS - DeltaTabX - DimTabX
elseif EMT.ORIG == 3 then
xOut = yS - DeltaTabY - DimTabY
yOut = - ( xS - DeltaTabX - DimTabX)
xOut = - ( yS - DeltaTabY)
yOut = xS - DeltaTabX
elseif EMT.ORIG == 4 then
xOut = yS - DeltaTabY
yOut = - ( xS - DeltaTabX - DimTabX)
elseif EMT.ORIG == 5 then
xOut = yS - DeltaTabY - DimTabY
yOut = - ( xS - DeltaTabX - Orig5DeltaX)
elseif EMT.ORIG == 6 then
xOut = yS - DeltaTabY
yOut = - ( xS - DeltaTabX - Orig5DeltaX)
xOut = - ( yS - DeltaTabY - DimTabY)
yOut = xS - DeltaTabX
end
if IsNailingHead( EMT.HEAD) then
EMT.IPLGLSTR = ' EX'..EmtLenToString( xOut)..' EY'..EmtLenToString( yOut)..' EZ'..EmtLenToString( zOut)
else
EMT.IPLGLSTR = ' EX'..EmtLenToString( xOut)..' EY'..EmtLenToString( yOut)..' EZ'..EmtLenToString( zOut)..
' EA0'..' EB'..EgtNumToString( dAngV)..' EC'..EgtNumToString( dAngO)..' ED'..EgtNumToString( dAngO2)
end
EMT.IPLGLSTR = ' EX'..EmtLenToString( xOut)..' EY'..EmtLenToString( yOut)..' EZ'..EmtLenToString( zOut)..
' EA0'..' EB'..EgtNumToString( dAngV)..' EC'..EgtNumToString( dAngO)..' ED'..EgtNumToString( dAngO2)
EMT.IPLGL = true
end
---------------------------------------------------------------------
function GetET()
local sET
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' then
sET = ' ET2'
elseif EMT.HEAD == 'H2' then
sET = ' ET1'
@@ -738,7 +735,7 @@ end
---------------------------------------------------------------------
function GetEU()
local sEU
if EMT.HEAD == 'H1' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' then
sEU = ' EU'..string.sub( EMT.TCPOS, 2)
elseif EMT.HEAD == 'H2' then
sEU = ' EU0'
@@ -770,6 +767,18 @@ function GetEF()
return ' EF60000'
end
---------------------------------------------------------------------
function GetEL()
local dToolLen = EMT.TLEN
if EMT.HEAD == 'H12' then
dToolLen = dToolLen - SawOffsZ
elseif EMT.HEAD == 'H3' then
dToolLen = ChSawLen
end
return EgtNumToString( dToolLen, 3)
end
---------------------------------------------------------------------
function EmitCount()
EMT.CNT = EMT.CNT + 1
+16 -3
View File
@@ -228,7 +228,7 @@ function OnSimulToolSelect()
EMT.TOOLTYPE = EgtTdbGetCurrToolParam( MCH_TP.TYPE)
EMT.TOOLTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
-- se non lama su rinvio o graffettatrici, carico utensile
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' then
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
if EMT.HEAD == 'H3' then
-- recupero la lavorazione successiva
@@ -306,8 +306,15 @@ function OnSimulToolDeselect()
EMT.TOOL_1 = nil
EMT.TCPOS_1 = nil
end
-- se testa attuale è lama devo depositarla
if EMT.HEAD == 'H12' then
ShowToolInTcPos( EMT.TCPOS_1, true)
EgtUnloadTool( 'H12', 1)
EMT.TOOL_1 = nil
EMT.TCPOS_1 = nil
end
-- deposito utensile se non lama su rinvio o graffettatrici
if ( EMT.NEXTHEAD == 'H1' or EMT.NEXTHEAD == 'H3') and ( EMT.HEAD == 'H1' or EMT.HEAD == 'H3') then
if ( EMT.NEXTHEAD == 'H1' or EMT.NEXTHEAD == 'H12' or EMT.NEXTHEAD == 'H3') and ( EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3') then
if EMT.NEXTTOOL ~= EMT.TOOL_1 then
EgtOutText( 'Tool change in progress...')
-- simulo movimento
@@ -647,11 +654,17 @@ end
---------------------------------------------------------------------
function ShowToolInTcPos( sTcPos, bShow)
-- recupero identificativo della posizione sul TC
local TcPosId = EgtGetTcPosId( sTcPos or '')
if not TcPosId then return end
-- recupero il gruppo dell'utensile
local TcExitId = EgtGetFirstNameInGroup( EgtGetTcPosId( sTcPos or '') or GDB_ID.NULL, 'T1')
local TcExitId = EgtGetFirstNameInGroup( TcPosId or GDB_ID.NULL, 'T1')
if not TcExitId then return end
-- imposto lo stato di visualizzazione
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
-- recupero eventuale gruppo ausiliario da visualizzare/nascondere
local TcHSId = EgtGetFirstNameInGroup( TcPosId, sTcPos .. '_HS')
if TcHSId then EgtSetStatus( TcHSId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF)) end
end
---------------------------------------------------------------------
+9 -1
View File
@@ -47,8 +47,16 @@ function OnSpecialMoveZup()
EMC.R2 = R2New
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2, EMC.R3)
end
-- Se altrimenti Lama normale
elseif EMC.HEAD == 'H12' then
if EMC.L3 > -300 then
EMC.R1 = EgtGetAxisHomePos( 'C1')
EMC.R2 = EgtGetAxisHomePos( 'B1')
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
EMC.MODIF = true
end
-- se altre teste
elseif EMC.HEAD == 'H14' or EMC.HEAD == 'H2' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' or EMC.HEAD == 'H23' then
elseif EMC.HEAD == 'H14' or EMC.HEAD == 'H12' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' or EMC.HEAD == 'H23' then
-- non è necessaria una gestione speciale
-- altrimenti errore
else
BIN
View File
Binary file not shown.
+50
View File
@@ -0,0 +1,50 @@
; Commento per evitare BOM con UTF-8
;Index = Type, Description, Default Value
; Type : b=boolean, d=double, l=lenght, s=string
[Drilling]
[Sawing]
[Milling]
0=d,MaxElev,0
1=d,OutRaw,0
2=d,SideElev,0
3=d,TrimExt,0
4=sr,VtFaceUse,0,0,0
[Pocketing]
0=d,MaxElev,0
1=b,Open,0
2=d,OpenMinSave,0
3=d,OpenOutRaw,0
4=d,MaxOptSize,0
[Mortising]
0=d,MaxElev,0
[Chiseling]
[SawRoughing]
[SawFinishing]
[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]
[SurfFinishing]
0=b,SkipMaxDown,1
+1 -1
View File
@@ -34,7 +34,7 @@ local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
{Pos = "Pos4", TcPos = "T4", Head = "H1", Group = "G1"},
{Pos = "Pos5", TcPos = "T5", Head = "H1", Group = "G1"},
{Pos = "Pos6", TcPos = "T6", Head = "H1", Group = "G1"},
{Pos = "Pos7", TcPos = "T7", Head = "H1", Group = "G1"},
{Pos = "Pos7", TcPos = "T8", Head = "H12", Group = "G1"},
{Pos = "Pos8", TcPos = "T11", Head = "H21", Group = "G2"},
{Pos = "Pos9", TcPos = "T12", Head = "H22", Group = "G2"},
{Pos = "Pos10", TcPos = "T13", Head = "H23", Group = "G2"}}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+41
View File
@@ -0,0 +1,41 @@
; Commento per evitare BOM con UTF-8
; Index, Type, Description, Value
; Index = 0,1,..,n
; Type : d=double, l=lenght, s=string, b=boolean, dr=double recalc, sr= string recalc, lr=lenght recalc, br=boolean recalc, th=toolholder
; Description : STEP, SIDESTEP, ...
[DRILL_STD]
0=th,TH,
1=d,STEP
2=s,DOUBLE
[SAW_STD]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=b,LONGCUT
[SAW_FLAT]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=b,LONGCUT
[MILL_STD]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=d,SIDEDEPTH
4=s,DOUBLE
[MILL_NOTIP]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=d,SIDEDEPTH
4=s,DOUBLE
[MORTISE_STD]
0=b,MORTISE
1=d,STEP
2=d,SIDESTEP
+12 -104
View File
@@ -28,12 +28,12 @@ local WallData = {
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
MAX_CLEAN_CRN30 = 60, -- massimo spessore per pulitura angolo con fresa 30deg
MAX_CLEAN_CRN60 = 150, -- massimo spessore per pulitura angolo con fresa 60deg
MILL_MAX_DEPTH_AS_MAT = true, -- massimo affondamento frese uguale ad altezza tagliente (max materiale)
T14_T12_DOUBLE = true, -- abilita chiodatura in doppio con teste T14 e T12
MILL_MAX_DEPTH_AS_MAT = false, -- massimo affondamento frese uguale ad altezza tagliente (max materiale)
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
SIMUL_VIEW_DIR = 3, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
ORIG_CORNER = 'TL', -- posizione origine (TL,BL,TR,BR,TM,BM)
MID_REF = 27000, -- posizione X dell'origine intermedia
DEFAULT_RAW_NO_EXTRA_WIDTH = true,
SIMUL_VIEW_DIR = 4, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
ORIG_CORNER = 'BL', -- posizione origine (TL,BL,TR,BR,TM,BM)
RAWPART_ROT = 180,
USE_POSY = true -- utilizzare POSY di BTL (spostamento sullo spessore per pareti a layer)
}
@@ -57,117 +57,25 @@ if EgtExistsFile( sData) then
WallData.MAX_WIDTH = Machine.Trave.XMAX or BeamData.MAX_WIDTH
WallData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
end
if Machine.Offsets then
WallData.MID_REF = -Machine.Offsets.OFFSET_ZERO5_Y
WallData.T14_T12_DOUBLE = ( Machine.Offsets.T14_T12_DOUBLE == 1)
end
end
end
-------------------------------------------------------------------------------------------------------------
local function GetOrigCorner( RefPos)
if RefPos == 1 then
return 'TL'
elseif RefPos == 2 then
return 'BL'
elseif RefPos == 3 then
return 'TR'
elseif RefPos == 4 then
return 'BR'
elseif RefPos == 5 then
return 'TM'
elseif RefPos == 6 then
return 'BM'
else
elseif RefPos == 2 then
return 'TL'
elseif RefPos == 3 then
return 'BL'
elseif RefPos == 4 then
return 'TL'
else
return 'BL'
end
end
WallData.GetOrigCorner = GetOrigCorner
-------------------------------------------------------------------------------------------------------------
local function VerifyFeatureForDouble( Proc)
-- deve essere attiva
if Proc.Flg == 0 then return 0 end
-- non deve essere già associata
if Proc.Double then return 0 end
-- deve essere contorno libero
if not ( ( Proc.Grp == 0 or Proc.Grp == 3 or Proc.Grp == 4) and ( Proc.Prc == 250)) then return 0 end
-- non deve essere una svuotatura
if EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1 then return 0 end
-- deve richiedere utensili opportuni
local nTool = EgtGetInfo( Proc.Id, 'CNT_DATA', 'i')
if nTool ~= 12 and nTool ~= 14 then return 0 end
-- deve avere una curva ausiliaria associata
local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i')
if not AuxId then return 0 end
AuxId = AuxId + Proc.Id
-- questa curva deve essere una retta orientata come gli assi X o Y
if Proc.Box:getDimY() > 1 and Proc.Box:getDimX() > 1 then return 0 end
local ptS = EgtSP( AuxId, GDB_ID.ROOT)
local ptE = EgtEP( AuxId, GDB_ID.ROOT)
-- va bene se diretta come l'asse X
if abs( ptS:getY() - ptE:getY()) < 1 then
if ptS:getX() <ptE:getX() then
return 1, ptS, ptE
else
return 1, ptE, ptS
end
end
-- va bene se diretta come l'asse Y
if abs( ptS:getX() - ptE:getX()) < 1 then
return 2, ptS, ptE
end
-- non va bene
return 0
end
-------------------------------------------------------------------------------------------------------------
local function FindFeaturesInDouble( vProc, b3Raw)
if not WallData.T14_T12_DOUBLE then return end
local MIN_INTERAX = 1350
local MIN_EXTRA_Y = 400
for i = 1, #vProc do
local Proc = vProc[i]
local nType, ptS, ptE = VerifyFeatureForDouble( Proc)
-- se linea lungo X
if nType == 1 then
for j = i + 1, #vProc do
local OtherProc = vProc[j]
local nOtherType, ptOtherS, ptOtherE = VerifyFeatureForDouble( OtherProc)
if nOtherType == 1 and abs( ptS:getX() - ptOtherS:getX()) < 1 and abs( ptE:getX() - ptOtherE:getX()) < 1 then
-- verifico l'interasse come distanza tra i due inizi
local dDeltaY = ptS:getY() - ptOtherS:getY()
if dDeltaY >= MIN_INTERAX then
Proc.Double = 1
Proc.Delta = dDeltaY
EgtSetInfo( Proc.Id, 'CNT_DATA', '14')
OtherProc.Flg = 0
OtherProc.Double = -1
break
elseif dDeltaY <= -MIN_INTERAX then
OtherProc.Double = 1
OtherProc.Delta = -dDeltaY
EgtSetInfo( OtherProc.Id, 'CNT_DATA', '14')
Proc.Flg = 0
Proc.Double = -1
break
end
end
end
-- se altrimenti linea lungo Y
elseif nType == 2 then
local dLen = ptS:getY() - ptE:getY()
if abs( dLen) >= MIN_INTERAX + MIN_EXTRA_Y then
Proc.Double = 2
Proc.Delta = max( abs( dLen) / 2, MIN_INTERAX) * EgtIf( dLen > 0, 1, -1)
Proc.DblAcc = abs( dLen) - abs( Proc.Delta)
EgtSetInfo( Proc.Id, 'CNT_DATA', '14')
end
end
end
end
WallData.FindFeaturesInDouble = FindFeaturesInDouble
-------------------------------------------------------------------------------------------------------------
local function GetSawHeadSide( dSpeed, sHead)
if sHead == 'H2' then