Essetre-TURN 2.5b1 :
- primo commit.
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
||||
/Tools
|
||||
/Machinings
|
||||
/SetUp
|
||||
/Beam/Ts3Data.bak
|
||||
/Beam/CutData.lua
|
||||
/Beam/DrillData.lua
|
||||
/Beam/MillingData.lua
|
||||
/Beam/PocketingData.lua
|
||||
/Beam/SawingData.lua
|
||||
/Beam/Ts3Data.lua
|
||||
/Wall/Ts3Data.bak
|
||||
/Wall/CutData.lua
|
||||
/Wall/DrillData.lua
|
||||
/Wall/MillingData.lua
|
||||
/Wall/PocketingData.lua
|
||||
/Wall/SawingData.lua
|
||||
/Wall/Ts3Data.lua
|
||||
@@ -0,0 +1,125 @@
|
||||
-- BeamData.lua by Egaltech s.r.l. 2022/04/04
|
||||
-- Raccolta dati generali per Travi
|
||||
|
||||
EgtOutLog( ' TURN-BeamData started', 1)
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local BeamData = {
|
||||
SIMUL_VIEW_DIR = 4, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
||||
GO_FAST = 0, -- flag abilitazione modalità veloce (0=no, 1=carrelli, 2=anche cambio utensili)
|
||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
||||
MAX_WIDTH = 650, -- larghezza massima del grezzo
|
||||
MAX_HEIGHT = 400, -- altezza massima del grezzo
|
||||
LEN_SHORT_PART = 1200, -- lunghezza massima pezzo corto
|
||||
LEN_VERY_SHORT_PART = 400, -- lunghezza massima pezzo molto corto (molto probabile lo scarico a caduta)
|
||||
MAX_RAW = 30000, -- massima lunghezza grezzo (deve essere minore di LenTable - RAW_OFFSET)
|
||||
STD_RAW = 14000, -- lunghezza standard della barra di grezzo
|
||||
OVM_HEAD = 10, -- sovramateriale testa
|
||||
OVM_MID = 5.4, -- sovramateriale intermedio (spessore lama)
|
||||
MINRAW_S = 750, -- minimo grezzo in coda scaricabile per sezioni piccole
|
||||
MINRAW_L = 1070, -- minimo grezzo in coda scaricabile per sezioni grandi
|
||||
MAX_LEN_SCRAP = 270, -- massima lunghezza scarto di coda
|
||||
MAX_LEN_SCRAP_START = 270, -- massima lunghezza scarto di testa
|
||||
MAX_DIM_HTCUT = 200, -- larghezza massima taglio di testa o coda
|
||||
MAX_DIM_HTCUT_HBEAM = 180, -- larghezza massima taglio di testa o coda con trave alta
|
||||
MIN_DIM_HBEAM = 360, -- altezza minima di trave alta
|
||||
MAX_DIM_DICE = 110, -- dimensione trasversale massima cubetto
|
||||
MAX_LEN_DICE = 400, -- lunghezza massima cubetto
|
||||
COLL_SIC = 5, -- distanza di sicurezza per collisioni
|
||||
CUT_SIC = 60, -- distanza di sicurezza per tagli
|
||||
CUT_EXTRA = 5, -- affondamento extra standard per tagli di lama e fresature
|
||||
CUT_EXTRA_MIN = 1, -- affondamento extra ridotto per tagli di lama e fresature
|
||||
NZ_MINA = -2, -- componente limite in Z normale di una faccia (-36.8deg)
|
||||
NZ_MINB = -2, -- componente limite in Z normale di un insieme di facce (-23deg)
|
||||
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
|
||||
DRILL_RANGE = 100, -- distanza max tra fori da raggruppare
|
||||
DRILL_RANGE_SP = 75, -- distanza max tra fori da raggruppare se pezzo corto
|
||||
DRILL_VZ_MIN = -2, -- componente limite in Z del versore di un foro
|
||||
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
|
||||
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
||||
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
||||
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
|
||||
MAX_LEN_HTFEA = 2000.0, -- massima lunghezza di feature di testa o coda
|
||||
LONGCUT_ENDLEN = 800, -- lunghezza lavoro estremi iniziale e finale
|
||||
LONGCUT_MAXLEN = 1200, -- lunghezza massima sezione di taglio longitudinale
|
||||
MAX_LEN_RIDGELAP_FROM_BOTTOM = 141, -- massima lunghezza ridgelap lavorabile da sotto
|
||||
MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM = 96, -- massima lunghezza ridgelap lavorabile da sotto con trave alta
|
||||
DIM_TO_CENTER_STRIP = 0, -- larghezza minima trave per inseriemento codolo nel centro del trave; 0 = automatico
|
||||
DIM_STRIP = -1, -- dimensione codolo sostegno parti lasciate su contorno libero o archi (-1 = da Q...)
|
||||
DIM_STRIP_SMALL = 1, -- dimensione codolo piccolo (quando le parti sostenute sono sicuramente sulla parte sopra del pezzo)
|
||||
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
|
||||
RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split
|
||||
VICE_MINH = 110, -- altezza minima della morsa
|
||||
OFFSET_DRILL_TENON = 0, -- offset fori su tenoni verso base degli stessi (0=non fare)
|
||||
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
||||
MAX_TOOL_LEN_FOR_HOR_MACH = 311, -- massima lunghezza utensile per poter fare forature (fresature) oltre i 10 gradi dalla verticale
|
||||
DRILL_VZ_MIN_LONG_TOOL = 0.984, -- componente limite per lavorazioni con punta lunga
|
||||
MAX_TOOL_LEN_BACK_HOR_MACH = 500, -- massima lunghezza utensile per poter eseguire lavorazioni (forature/svuotature) da dietro (faccia 4)
|
||||
TURN = true, -- macchina tipo Turn
|
||||
TWO_EQUAL_HEADS = true, -- macchina con due teste equivalenti
|
||||
KIOTP = 3.5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||
MAXDIAM_POCK_CORNER = 30, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||
HEAD_DIM_FOR_BH = 190 -- dimensione di ingombro della testa per block haus
|
||||
}
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-TURN.qqq.data"
|
||||
local sData = EgtGetSourceDir().."\\Ts3Data.qqq.lua"
|
||||
if EgtExistsFile( sTs3Data) then
|
||||
EgtCopyFile( sTs3Data, sData)
|
||||
local sTs3DataOld = sTs3Data..'.old'
|
||||
EgtEraseFile( sTs3DataOld)
|
||||
EgtRenameFile( sTs3Data, sTs3DataOld)
|
||||
end
|
||||
if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Offsets then
|
||||
BeamData.ANG_TRASM = ( Machine.Offsets.SECSUP and Machine.Offsets.SECSUP >= 2)
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
BeamData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT
|
||||
BeamData.MAX_WIDTH = Machine.Trave.XMAX or BeamData.MAX_WIDTH
|
||||
BeamData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
|
||||
end
|
||||
if Machine.User then
|
||||
BeamData.OFFSET_DRILL_TENON = Machine.User.L040_OFFSET_P1 or BeamData.OFFSET_DRILL_TENON
|
||||
if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F5 == 1 then
|
||||
BeamData.MAX_LEN_SCRAP = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP
|
||||
else
|
||||
BeamData.MAX_LEN_SCRAP = 100000
|
||||
end
|
||||
if Machine.User.OPTIMIZATIONS_ENABLE_SLICES_F6 == 1 then
|
||||
BeamData.MAX_LEN_SCRAP_START = Machine.User.OPTIMIZATIONS_LENGTH_SLICES or BeamData.MAX_LEN_SCRAP_START
|
||||
else
|
||||
BeamData.MAX_LEN_SCRAP_START = 100000
|
||||
end
|
||||
BeamData.USER_HOLE_DIAM = Machine.User.L020_DIAM_HOLE or BeamData.USER_HOLE_DIAM
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMaxLenRidgeLapFromBottom( dHRaw)
|
||||
if dHRaw < BeamData.MIN_DIM_HBEAM then
|
||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM + 0.01
|
||||
else
|
||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM + 0.01
|
||||
end
|
||||
end
|
||||
BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetChainSawBlockedAxis( nInd)
|
||||
if nInd == 1 then
|
||||
return 'Q=-90'
|
||||
else
|
||||
return 'Q=0'
|
||||
end
|
||||
end
|
||||
BeamData.GetChainSawBlockedAxis = GetChainSawBlockedAxis
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return BeamData
|
||||
@@ -0,0 +1,9 @@
|
||||
-- %TABLE_NAME%.lua by Egaltech s.r.l. %DATE_TIME%
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local %TABLE_NAME% = {
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return %TABLE_NAME%
|
||||
@@ -0,0 +1,62 @@
|
||||
; PIndex = Type, PName, Default, Description
|
||||
; Type : d=double, l=length, s=string
|
||||
|
||||
[1]
|
||||
Name=Offsets
|
||||
1=l,X1_NEG,0,X1_NEG
|
||||
2=l,X1_POS,1185,X1_POS
|
||||
3=l,PARK_X1,0,PARK_X1
|
||||
4=l,Z1_NEG,-1690,Z1_NEG
|
||||
5=l,Z1_POS,0.0,Z1_POS
|
||||
6=l,PARK_Z1,0,PARK_Z1
|
||||
7=l,DIST_FTZERO,1880.5,DIST_FTZERO
|
||||
8=l,DELTA_CARICZERO,269.5,DELTA_CARICZERO
|
||||
9=l,DIST_UNLOAD,-2400,DIST_UNLOAD
|
||||
10=l,CNTRRLL_T1_X1,710.75,CNTRRLL_T1_X1
|
||||
11=l,CNTRRLL_T1_Z1,-903.5,CNTRRLL_T1_Z1
|
||||
12=l,OFFSETXT1,391.1,OFFSETXT1
|
||||
13=l,OFFSETZT1,-924.8,OFFSETZT1
|
||||
14=d,A1_NEG,-270,A1_NEG
|
||||
15=d,A1_POS,270,A1_POS
|
||||
16=l,CNTRRLL_T2_X2,711.5,CNTRRLL_T2_X2
|
||||
17=l,CNTRRLL_T2_Z2,-904.3,CNTRRLL_T2_Z2
|
||||
18=l,OFFSETXT2,393.081,OFFSETXT2
|
||||
19=l,OFFSETZT2,-806.2,OFFSETZT2
|
||||
20=l,X2_NEG,0,X2_NEG
|
||||
21=l,X2_POS,1185,X2_POS
|
||||
22=l,PARK_X2,0,PARK_X2
|
||||
23=l,Z2_NEG,-1690,Z2_NEG
|
||||
24=l,Z2_POS,0,Z2_POS
|
||||
25=l,PARK_Z2,0,PARK_Z2
|
||||
26=d,A2_NEG,-270,A2_NEG
|
||||
27=d,A2_POS,270,A2_POS
|
||||
28=d,B_NEG,-91,B_NEG
|
||||
29=d,B_POS,271,B_POS
|
||||
30=l,PIVOTFRESAT1,176.5,PIVOTFRESAT1
|
||||
31=l,PIVOTLAMAT1,-242.35,PIVOTLAMAT1
|
||||
32=l,PIVOTFRESAT2,178.05,PIVOTFRESAT2
|
||||
33=l,PIVOTLAMAT2,-252.2,PIVOTLAMAT2
|
||||
34=d,PARK_A1,0,PARK_A1
|
||||
35=d,PARK_A2,0,PARK_A2
|
||||
36=l,MIN_Y,55,MIN_Y
|
||||
37=l,MAX_Y,5545,MAX_Y
|
||||
38=l,PARK_Y,600,PARK_Y
|
||||
39=l,MIN_V,-5559,MIN_V
|
||||
40=l,MAX_V,-67,MAX_V
|
||||
41=l,PARK_V,-500,PARK_V
|
||||
42=l,DIREZ_SXDX,1,DIREZ_SXDX
|
||||
|
||||
[2]
|
||||
Name=Trave
|
||||
1=l,XMIN,30,XMIN
|
||||
2=l,XMAX,651,XMAX
|
||||
3=l,ZMIN,30,ZMIN
|
||||
4=l,ZMAX,300,ZMAX
|
||||
|
||||
[3]
|
||||
Name=User
|
||||
1=d,OPTIMIZATIONS_ENABLE_SLICES_F5,1,OPTIMIZATIONS_ENABLE_SLICES_F5
|
||||
2=d,OPTIMIZATIONS_ENABLE_SLICES_F6,1,OPTIMIZATIONS_ENABLE_SLICES_F6
|
||||
3=l,OPTIMIZATIONS_LENGTH_SLICES,100,OPTIMIZATIONS_LENGTH_SLICES
|
||||
4=d,L020_DIAM_HOLE,12,L020_DIAM_HOLE
|
||||
5=l,L040_OFFSET_P1,0,L040_OFFSET_P1
|
||||
@@ -0,0 +1,37 @@
|
||||
[Cut]
|
||||
1=HeadSide
|
||||
2=TailSide
|
||||
|
||||
[Drill]
|
||||
1=Drill
|
||||
2=Pocket
|
||||
|
||||
[Milling]
|
||||
1=Prof
|
||||
2=FreeContour
|
||||
3=Tenon
|
||||
4=DtTenon
|
||||
5=DtMortise
|
||||
6=BirdsMouth
|
||||
7=Chamfer
|
||||
8=Mark
|
||||
9=Text
|
||||
10=Decor01
|
||||
11=Long2Cut
|
||||
12=Long2CutDown
|
||||
13=LongSmallCut
|
||||
14=BHSideMill
|
||||
15=SideMillAsBlade
|
||||
16=CleanCorner
|
||||
17=ProfTCone
|
||||
18=Long2CutSide
|
||||
19=SmallToolContour
|
||||
20=AntiSplintMillCut
|
||||
|
||||
[Pocketing]
|
||||
1=Pocket
|
||||
2=OpenPocket
|
||||
3=Mortise
|
||||
|
||||
[Sawing]
|
||||
1=Sawing
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,151 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
[General]
|
||||
Material=Beam
|
||||
NCType=4 ; 1=Tpa, 2=Num Flexium, 3=Num Axium APServer, 4=Num Axium PCToolkit
|
||||
Flow=2
|
||||
ConnectionString=XIP01,0,63,0,0,0
|
||||
|
||||
[Axes]
|
||||
; 1 = Type, Id, Name
|
||||
; Type => l=linear;r=rotational
|
||||
1=l,0,X
|
||||
2=l,1,Y
|
||||
3=l,2,Z
|
||||
4=l,3,U
|
||||
5=l,4,V
|
||||
6=l,5,W
|
||||
7=r,6,A
|
||||
8=r,7,B
|
||||
9=r,8,C
|
||||
|
||||
[Channels]
|
||||
1=0,Channel 1
|
||||
|
||||
[MainVariables]
|
||||
; 1 = Name, Variable Path, ReadType, Type
|
||||
; ReadType => o=one time;c=continuous
|
||||
; Type => plc;cn
|
||||
1=P_Prod,E81295,c,cn
|
||||
2=P_Machgroup,E81296,c,cn
|
||||
3=P_Part,E81297,c,cn
|
||||
4=P_State,E81298,c,cn
|
||||
5=Reset_State,E80048,c,cn
|
||||
6=ISO_Num,E80045,c,cn
|
||||
7=ISO_Sent,E80046,c,cn
|
||||
8=Running,E80047,c,cn
|
||||
9=Start_State,%R3.2,c,plc
|
||||
10=Stop_State,%R3.1,c,plc
|
||||
11=MachIndex,E80000,c,cn
|
||||
12=PLC_Messages1,%V800.L,c,plc
|
||||
13=PLC_Messages2,%V804.L,c,plc
|
||||
14=PLC_Messages3,%V808.L,c,plc
|
||||
15=PLC_Messages4,%V80C.L,c,plc
|
||||
16=PLC_Messages5,%V810.L,c,plc
|
||||
17=PLC_Messages6,%V814.L,c,plc
|
||||
|
||||
[MDI]
|
||||
; 1 = Command, Description
|
||||
1=M6T1,1
|
||||
2=M6T2,2
|
||||
3=M6T3,3
|
||||
4=M6T4,4
|
||||
5=M6T5,5
|
||||
6=M6T6,6
|
||||
7=M6T7,7
|
||||
8=M6T8,8
|
||||
9=M6T9,9
|
||||
10=M6T10,10
|
||||
11=M6T11,11
|
||||
12=M6T12,12
|
||||
13=M6T13,13
|
||||
14=M6T14,14
|
||||
15=M6T15,15
|
||||
16=M6T16,16
|
||||
17=M6T17,17
|
||||
18=M6T18,18
|
||||
19=M6T50,19
|
||||
20=M6T101,20
|
||||
21=M90,21
|
||||
22=M198T1,22
|
||||
23=M199T1,23
|
||||
24=M198T2,24
|
||||
25=M199T2,25
|
||||
26=M196,26
|
||||
27=M197,27
|
||||
28=M111,28
|
||||
29=M112,29
|
||||
30=M113,30
|
||||
31=M114,31
|
||||
32=M151,32
|
||||
33=M152,33
|
||||
34=M153,34
|
||||
35=M154,35
|
||||
36=M155,36
|
||||
37=E80001=0,37
|
||||
|
||||
[Languages]
|
||||
Enable=1
|
||||
Language1=Italiano,Ita.txt
|
||||
Language2=English,Eng.txt
|
||||
|
||||
[Tools]
|
||||
Drillbit=1
|
||||
Sawblade=1
|
||||
Mill=1
|
||||
Mortise=1
|
||||
Chisel=0
|
||||
DrillMaker=MakeWoodDrill.lua
|
||||
SawbladeMaker=MakeSawblade.lua
|
||||
MillMaker=MakeWoodCylMill.lua
|
||||
MortiseMaker=MakeMortise.lua
|
||||
ChiselMaker=MakeChisel.lua
|
||||
Active=1
|
||||
|
||||
[ToolHolder]
|
||||
H11.1=Standard.nge
|
||||
H11.1:MILL_NOTIP=MillNoTip.nge
|
||||
H12.1=Saw.nge
|
||||
H13.1=ChainSaw.nge
|
||||
H21.1=Standard.nge
|
||||
H21.1:MILL_NOTIP=MillNoTip.nge
|
||||
H22.1=Saw.nge
|
||||
|
||||
[Machinings]
|
||||
Drilling=1
|
||||
Sawing=1
|
||||
Milling=1
|
||||
Pocketing=1
|
||||
Mortising=1
|
||||
Chiseling=0
|
||||
SawRoughing=0
|
||||
SawFinishing=0
|
||||
|
||||
[Machining]
|
||||
InitScript=InitMach.lua
|
||||
ExitScript=ExitMach.lua
|
||||
|
||||
[Disposition]
|
||||
;InitScript=InitDisp.lua
|
||||
|
||||
[Heads]
|
||||
; 5 axis head
|
||||
H11=6608
|
||||
; 5 axis saw
|
||||
H12=6615
|
||||
; Chainsaw
|
||||
H13=6616
|
||||
; 2nd 5 axis head
|
||||
H21=6620
|
||||
; 2nd 5 axis saw
|
||||
H22=6623
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
|
||||
[Estimations]
|
||||
Enable=1
|
||||
WinPlace=0,458,111,669,906
|
||||
|
||||
[VMill]
|
||||
Enable=1
|
||||
Save=0
|
||||
@@ -0,0 +1,734 @@
|
||||
-- Descrizione macchina Essetre-TURN by EgalTech s.r.l. 2023/02/16
|
||||
-- 2022/04/04 DS ver 2.4d1 Solo con controllo NUM.
|
||||
-- 2022/06/07 DS ver 2.4f1
|
||||
-- 2022/06/10 DS ver 2.4f3 Modifica G115. Limitato massimo corsa X a -0.5.
|
||||
-- 2022/06/16 DS ver 2.4f4 Modifica per approcci e retrazioni con movimenti Z e X opportunamente ordinati.
|
||||
-- 2022/07/25 DS ver 2.4g1 Modifica per conservare Zzeromacch precedente in generazione.
|
||||
-- 2022/07/29 DS ver 2.4g2 Aggiunta gestione punte lunghe con limiti su corsa asse A1.
|
||||
-- 2022/08/25 DS ver 2.4h1 Modificati limiti per tagli a cubetti e attacchi/uscite lame.
|
||||
-- 2022/08/29 DS ver 2.4h2 Aggiunta seconda testa (solo per verifica di collisione con la prima e con ParkA2=90).
|
||||
-- 2022/09/21 DS ver 2.4i1 Migliorata corrispondenza simulatore-generazione CN.
|
||||
-- 2022/09/26 DS ver 2.4i3 Modifica radicale della gestione delle teste tramite offset asse B.
|
||||
-- 2022/09/28 DS ver 2.4i11 Aggiunta gestione seconda testa.
|
||||
-- 2022/09/30 DS ver 2.4i14 Modifiche varie. Migliorata gestione collisioni.
|
||||
-- 2022/10/04 DS ver 2.4j1 Sistemazione gestione collisioni testa 2.
|
||||
-- 2022/10/20 DS ver 2.4j2 Modifiche per lavorazione tipo BH.
|
||||
-- 2022/11/28 DS ver 2.4k1 Correzione simulazione per controllo collisioni.
|
||||
-- 2023/01/20 DS ver 2.5a1 Migliorato avvio simulazione.
|
||||
-- 2023/01/24 MS ver 2.5a2 Aggiunto coefficiente moltiplicativo speed fresone come lama.
|
||||
-- 2023/02/16 DS ver 2.5b1 In tavola ora TiltingLike riceve valore 1 (asse tilting parallelo a X).
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.5b1'
|
||||
|
||||
-- Parametri macchina
|
||||
NumericalControl = 'NUM' -- solo NUM
|
||||
MinB = -90
|
||||
MaxB = 270
|
||||
MinX1 = -1180
|
||||
MaxX1 = 0
|
||||
ParkX1 = -1.0
|
||||
MinZ1 = 0
|
||||
MaxZ1 = 1810
|
||||
ParkZ1 = 0
|
||||
MinA1 = -180
|
||||
MaxA1 = 360
|
||||
ParkA1 = 0
|
||||
ParkH11_A1 = 0
|
||||
MillOffs = 177.0
|
||||
SawOffs = -242.55
|
||||
SawBOffs = 0
|
||||
SawAOffs = 0
|
||||
ChSawLen = 91.0
|
||||
MinX2 = -1180
|
||||
MaxX2 = 0
|
||||
ParkX2 = -1.0
|
||||
MinZ2 = 0
|
||||
MaxZ2 = 1810
|
||||
ParkZ2 = 0
|
||||
MinA2 = -180
|
||||
MaxA2 = 360
|
||||
ParkA2 = 0
|
||||
ParkH21_A2 = 0
|
||||
Mill2Offs = -177.0
|
||||
Saw2Offs = 242.55
|
||||
Saw2BOffs = 0
|
||||
Saw2AOffs = 0
|
||||
MinY = 80.0
|
||||
MaxY = 5500.0
|
||||
ParkY = 700.0
|
||||
MinV = -5500.0
|
||||
MaxV = -80.0
|
||||
ParkV = -700.0
|
||||
LoadT = 1867.0
|
||||
TurnerOffs = 100
|
||||
UnloadT = -1700
|
||||
MaxOpen = 655
|
||||
RallaOffsY = 900.0 - MillOffs
|
||||
RallaOffsZ = -709.0
|
||||
Ralla2OffsY = -903.50 - Mill2Offs
|
||||
Ralla2OffsZ = 710.75
|
||||
DeltaTabY = 1050.0
|
||||
DeltaTabZ = -909.0
|
||||
Delta2TabY = -386.0
|
||||
Delta2TabZ = 509.0
|
||||
DimTabX = 34000
|
||||
DimTabY = 800
|
||||
Head2X = 0
|
||||
Head2Y = DeltaTabY - Delta2TabY
|
||||
Head2Z = DeltaTabZ - Delta2TabZ
|
||||
LenToPress = 900
|
||||
DefTc1Pos = 'T2'
|
||||
DefTc2Pos = 'T14'
|
||||
MaxUnloadLen = 0
|
||||
LONG_TOOL_MINLEN = 241
|
||||
BIG_TOOL_DIAM = 300
|
||||
CoeffVM = 0.5
|
||||
|
||||
-- Aggiornamento con dati da BeamData.lua
|
||||
local sBeamData = EgtGetSourceDir().."\\Beam\\BeamData.lua"
|
||||
if EgtExistsFile( sBeamData) then
|
||||
local BD = dofile( sBeamData)
|
||||
if BD then
|
||||
BeamHeightForFixRot = BD.MAX_HEIGHT_ROT_B_ABOVE or BeamHeightForFixRot
|
||||
end
|
||||
end
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-TURN.data"
|
||||
local sData = EgtGetSourceDir().."\\Beam\\Ts3Data.lua"
|
||||
if EgtExistsFile( sTs3Data) then
|
||||
EgtCopyFile( sTs3Data, sData)
|
||||
local sTs3DataOld = sTs3Data..'.old'
|
||||
EgtEraseFile( sTs3DataOld)
|
||||
EgtRenameFile( sTs3Data, sTs3DataOld)
|
||||
end
|
||||
if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Offsets then
|
||||
--NumericalControl = EgtIf( Machine.Offsets.TIPO_CN == 0, 'NUM', 'TPA')
|
||||
if Machine.Offsets.B_NEG then MinB = Machine.Offsets.B_NEG end
|
||||
if Machine.Offsets.B_POS then MaxB = Machine.Offsets.B_POS end
|
||||
if Machine.Offsets.X1_POS then MinX1 = -Machine.Offsets.X1_POS end
|
||||
if Machine.Offsets.X1_NEG then MaxX1 = min( MaxX1, -Machine.Offsets.X1_NEG) end
|
||||
if Machine.Offsets.PARK_X1 then ParkX1 = min( ParkX1, -Machine.Offsets.PARK_X1) end
|
||||
if Machine.Offsets.Z1_NEG then MinZ1 = -Machine.Offsets.Z1_POS end
|
||||
if Machine.Offsets.Z1_POS then MaxZ1 = -Machine.Offsets.Z1_NEG end
|
||||
if Machine.Offsets.PARK_Z1 then ParkZ1 = -Machine.Offsets.PARK_Z1 end
|
||||
if Machine.Offsets.A1_NEG then MinA1 = Machine.Offsets.A1_NEG end
|
||||
if Machine.Offsets.A1_POS then MaxA1 = Machine.Offsets.A1_POS end
|
||||
if Machine.Offsets.PARK_A1 then ParkA1 = Machine.Offsets.PARK_A1 end
|
||||
MinY = Machine.Offsets.MIN_Y or Machine.Offsets.MINY or MinY
|
||||
MaxY = Machine.Offsets.MAX_Y or Machine.Offsets.MAXY or MaxY
|
||||
ParkY = Machine.Offsets.PARK_Y or ParkY
|
||||
MinV = Machine.Offsets.MIN_V or Machine.Offsets.MINV or MinV
|
||||
MaxV = Machine.Offsets.MAX_V or Machine.Offsets.MAXV or MaxV
|
||||
ParkV = Machine.Offsets.PARK_V or ParkV
|
||||
if Machine.Offsets.DIST_FTZERO then LoadT = Machine.Offsets.DIST_FTZERO end
|
||||
if Machine.Offsets.DELTA_CARICZERO then TurnerOffs = Machine.Offsets.DELTA_CARICZERO end
|
||||
if Machine.Offsets.DIST_UNLOAD then UnloadT = Machine.Offsets.DIST_UNLOAD end
|
||||
if Machine.Offsets.PIVOTFRESAT1 then MillOffs = Machine.Offsets.PIVOTFRESAT1 end
|
||||
if Machine.Offsets.PIVOTLAMAT1 then SawOffs = Machine.Offsets.PIVOTLAMAT1 end
|
||||
if Machine.Offsets.OFFSETBLAMA then SawBOffs = Machine.Offsets.OFFSETBLAMA end
|
||||
if Machine.Offsets.OFFSETALAMA then SawAOffs = Machine.Offsets.OFFSETALAMA end
|
||||
if Machine.Offsets.PIVOTFRESAT2 then Mill2Offs = -Machine.Offsets.PIVOTFRESAT2 end
|
||||
if Machine.Offsets.PIVOTLAMAT2 then Saw2Offs = -Machine.Offsets.PIVOTLAMAT2 end
|
||||
if Machine.Offsets.CNTRRLL_T1_Z1 then RallaOffsY = -Machine.Offsets.CNTRRLL_T1_Z1 - MillOffs end
|
||||
if Machine.Offsets.CNTRRLL_T1_X1 then RallaOffsZ = -Machine.Offsets.CNTRRLL_T1_X1 end
|
||||
if Machine.Offsets.OFFSETXT1 then DeltaTabY = RallaOffsY - RallaOffsZ - Machine.Offsets.OFFSETXT1 end
|
||||
if Machine.Offsets.OFFSETZT1 then DeltaTabZ = RallaOffsY + RallaOffsZ + Machine.Offsets.OFFSETZT1 end
|
||||
if Machine.Offsets.CNTRRLL_T2_Z2 then Ralla2OffsY = Machine.Offsets.CNTRRLL_T2_Z2 - Mill2Offs end
|
||||
if Machine.Offsets.CNTRRLL_T2_X2 then Ralla2OffsZ = Machine.Offsets.CNTRRLL_T2_X2 end
|
||||
if Machine.Offsets.OFFSETXT2 then Delta2TabY = -Ralla2OffsY - Ralla2OffsZ - Machine.Offsets.OFFSETXT2 end
|
||||
if Machine.Offsets.OFFSETZT2 then Delta2TabZ = -Ralla2OffsY + Ralla2OffsZ + Machine.Offsets.OFFSETZT2 end
|
||||
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||
ParkX1 = EgtClamp( ParkX1, MinX1, MaxX1)
|
||||
ParkZ1 = EgtClamp( ParkZ1, MinZ1, MaxZ1)
|
||||
ParkA1 = EgtClamp( ParkA1, MinA1, MaxA1)
|
||||
Head2Y = DeltaTabY - Delta2TabY
|
||||
Head2Z = DeltaTabZ - Delta2TabZ
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
EmtGeneral {
|
||||
File='Essetre-TURN.nge',
|
||||
Offset = Vector3d( 0, 723.0, -709.0),
|
||||
AxisMaxAdjust = 30,
|
||||
AxisMaxRotAdj = 0.5,
|
||||
ExitMaxAdjust = 30,
|
||||
ExitMaxRotAdj = 0.5,
|
||||
AngDeltaMinForHome = 165,
|
||||
Special = 'Essetre-TURN.mlse',
|
||||
Processor = 'Essetre-TURN.mlpe'}
|
||||
local BaseId = EmtBase {
|
||||
Name = 'Base',
|
||||
Geo='BASE/GEO',
|
||||
Aux={'BASE/SOLID', 'BASE/TC', 'BASE/SIDE', 'BASE/COLLISION'}}
|
||||
-- Ralla
|
||||
local BId = EmtAxis {
|
||||
Name = 'B',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = X_AX(),
|
||||
Pos = Point3d( -483.5, RallaOffsY, RallaOffsZ),
|
||||
Stroke = {MinB-90, MaxB-90},
|
||||
Home = -90,
|
||||
Offset = 90,
|
||||
Geo = 'B_AXIS/GEO',
|
||||
Aux = {'B_AXIS/SOLID', 'B_AXIS/COLLISION'}}
|
||||
-- Prima Testa
|
||||
local X1Id = EmtAxis {
|
||||
Name = 'X1',
|
||||
Parent = 'B',
|
||||
Token = 'X',
|
||||
Invert = true,
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( -324.5, 681.0, 313.0),
|
||||
Stroke = {MinX1, MaxX1},
|
||||
Home = ParkX1,
|
||||
Geo = 'X1_AXIS/GEO',
|
||||
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'Z1',
|
||||
Parent = 'X1',
|
||||
Token = 'Z',
|
||||
Invert = true,
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Y_AX(),
|
||||
Pos = Point3d( 156.0, 602.0, 177.0),
|
||||
Stroke = {MinZ1, MaxZ1},
|
||||
Home = ParkZ1,
|
||||
Geo = 'Z1_AXIS/GEO',
|
||||
Aux = {'Z1_AXIS/SOLID', 'Z1_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'A1',
|
||||
Parent = 'Z1',
|
||||
Token = 'A',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = -Z_AX(),
|
||||
Pos = Point3d( 0, -MillOffs, 125),
|
||||
Stroke = {MinA1, MaxA1},
|
||||
Home = ParkA1,
|
||||
Geo = 'A1_AXIS/GEO',
|
||||
Aux = {'A1_AXIS/SOLID', 'A1_AXIS/COLLISION'}}
|
||||
-- Frese
|
||||
local H11Id = EmtHead {
|
||||
Name = 'H11',
|
||||
Parent = 'A1',
|
||||
HSet = 'H11',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
TDir = -Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 10,
|
||||
MaxDeltaR2OnFirst = false,
|
||||
OthColl = {'H12', 'A1/SOLID', 'Z1/SOLID'},
|
||||
Geo = 'H11_HEAD/GEO'}
|
||||
EgtSetInfo( H11Id, 'ZMAXONROT', '1,60')
|
||||
-- Lama
|
||||
local H12Id = EmtHead {
|
||||
Name = 'H12',
|
||||
Parent = 'A1',
|
||||
HSet = 'H12',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, (-MillOffs+SawOffs), 0),
|
||||
TDir = Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 10,
|
||||
MaxDeltaR2OnFirst = false,
|
||||
OthColl = {'H11', 'A1/SOLID', 'Z1/SOLID'},
|
||||
Geo = 'H12_HEAD/GEO'}
|
||||
EgtSetInfo( H12Id, 'ZMAXONROT', '1,5')
|
||||
-- Sega a catena
|
||||
EmtAxis {
|
||||
Name = 'Q',
|
||||
Parent = 'A1',
|
||||
Token = '**',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = { -91, 0},
|
||||
Home = 0,
|
||||
Geo = 'Q_AXIS/GEO'}
|
||||
local H13Id = EmtHead {
|
||||
Name = 'H13',
|
||||
Parent = 'Q',
|
||||
HSet = 'H11',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, ChSawLen, 0),
|
||||
TDir = -X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Rot1W = 0.2,
|
||||
MaxDeltaR2OnFirst = true,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
OthColl = {'H12', 'A1/SOLID', 'Z1/SOLID'},
|
||||
Geo = 'H13_HEAD/GEO'}
|
||||
EgtSetInfo( H13Id, 'ZMAXONROT', '1,5')
|
||||
-- Dummy
|
||||
EmtHead {
|
||||
Name = 'H14',
|
||||
Parent = 'A1',
|
||||
HSet = 'H14',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
TDir = -Y_AX(),
|
||||
ADir = X_AX(),
|
||||
Rot1W = 10,
|
||||
Geo = 'H14_HEAD/GEO'}
|
||||
-- Seconda Testa
|
||||
local X2Id = EmtAxis {
|
||||
Name = 'X2',
|
||||
Parent = 'B',
|
||||
Token = 'U',
|
||||
Invert = true,
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Z_AX(),
|
||||
Pos = Point3d( -324.5, 681.0, 313.0),
|
||||
Stroke = {MinX2, MaxX2},
|
||||
Home = ParkX2,
|
||||
Geo = 'X2_AXIS/GEO',
|
||||
Aux = {'X2_AXIS/SOLID', 'X2_AXIS/COLLISION'}}
|
||||
local Z2Id = EmtAxis {
|
||||
Name = 'Z2',
|
||||
Parent = 'X2',
|
||||
Token = 'W',
|
||||
Invert = true,
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( 156.0, 602.0, 177.0),
|
||||
Stroke = {MinZ2, MaxZ2},
|
||||
Home = ParkZ2,
|
||||
Geo = 'Z2_AXIS/GEO',
|
||||
Aux = {'Z2_AXIS/SOLID', 'Z2_AXIS/COLLISION'}}
|
||||
local A2Id = EmtAxis {
|
||||
Name = 'A2',
|
||||
Parent = 'Z2',
|
||||
Token = 'C',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( Head2X, Head2Y-Mill2Offs, Head2Z-125),
|
||||
Stroke = {MinA2, MaxA2},
|
||||
Home = ParkA2,
|
||||
Geo = 'A2_AXIS/GEO',
|
||||
Aux = {'A2_AXIS/SOLID', 'A2_AXIS/COLLISION'}}
|
||||
local vtMoveX2 = Vector3d( Head2X - 0, 0, Head2Z + 1418)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMoveX2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMoveX2, GDB_RT.GLOB)
|
||||
local vtMoveA2 = Vector3d( Head2X - 0, Head2Y - 1436, Head2Z + 1418)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMoveA2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMoveA2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( A2Id, 'SOLID'), vtMoveA2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( A2Id, 'COLLISION'), vtMoveA2, GDB_RT.GLOB)
|
||||
-- Frese 2
|
||||
local H21Id = EmtHead {
|
||||
Name = 'H21',
|
||||
Parent = 'A2',
|
||||
HSet = 'H21',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( Head2X, Head2Y, Head2Z),
|
||||
TDir = Y_AX(),
|
||||
ADir = -Z_AX(),
|
||||
Rot1W = 10,
|
||||
MaxDeltaR2OnFirst = false,
|
||||
OthColl = {'H22', 'A2/SOLID', 'Z2/SOLID'},
|
||||
Geo = 'H21_HEAD/GEO'}
|
||||
EgtSetInfo( H21Id, 'ZMAXONROT', '1,60')
|
||||
-- Lama 2
|
||||
local H22Id = EmtHead {
|
||||
Name = 'H22',
|
||||
Parent = 'A2',
|
||||
HSet = 'H22',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( Head2X, Head2Y + (-Mill2Offs+Saw2Offs), Head2Z),
|
||||
TDir = -Y_AX(),
|
||||
ADir = -Z_AX(),
|
||||
Rot1W = 10,
|
||||
MaxDeltaR2OnFirst = false,
|
||||
OthColl = {'H21', 'A2/SOLID', 'Z2/SOLID'},
|
||||
Geo = 'H22_HEAD/GEO'}
|
||||
EgtSetInfo( H22Id, 'ZMAXONROT', '1,5')
|
||||
-- Morse
|
||||
local YId = EmtAxis {
|
||||
Name = 'Y',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( -953.0, 111.75, 1450.0),
|
||||
Stroke = { MinY, MaxY},
|
||||
Home = ParkY,
|
||||
Geo = 'Y_AXIS/GEO',
|
||||
Aux = {'Y_AXIS/SOLID', 'Y_AXIS/COLLISION'}}
|
||||
local PYId = EmtAxis {
|
||||
Name = 'PY',
|
||||
Parent = 'Y',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( -904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxOpen},
|
||||
Home = MaxOpen,
|
||||
Geo = 'PY_AXIS/GEO',
|
||||
Aux = {'PY_AXIS/SOLID', 'PY_AXIS/COLLISION'}}
|
||||
local VId = EmtAxis {
|
||||
Name = 'V',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 953.0, 111.75, 1450.0),
|
||||
Stroke = { MinV, MaxV},
|
||||
Home = ParkV,
|
||||
Geo = 'V_AXIS/GEO',
|
||||
Aux = {'V_AXIS/SOLID', 'V_AXIS/COLLISION'}}
|
||||
local PVId = EmtAxis {
|
||||
Name = 'PV',
|
||||
Parent = 'V',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( 904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxOpen},
|
||||
Home = MaxOpen,
|
||||
Geo = 'PV_AXIS/GEO',
|
||||
Aux = {'PV_AXIS/SOLID', 'PV_AXIS/COLLISION'}}
|
||||
-- Tavola
|
||||
EmtAxis {
|
||||
Name = 'T',
|
||||
Parent = 'Base',
|
||||
--Token = '**',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = - X_AX(),
|
||||
Pos = Point3d( 0, 613.16, -830.037),
|
||||
Stroke = { -40000, 40000},
|
||||
Home = LoadT,
|
||||
Geo = 'T_AXIS/GEO'}
|
||||
local TabId = EmtTable {
|
||||
Name = 'Tab',
|
||||
Parent = 'T',
|
||||
Type = MCH_TT.FLAT,
|
||||
Ref1 = Point3d( -DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
||||
Scale = { DimTabX / 34000, DimTabY / 800, 1},
|
||||
Geo = 'TABLE/GEO',
|
||||
Aux = 'TABLE/SOLID'}
|
||||
EgtSetInfo( TabId, 'TiltingLike', 1)
|
||||
---- ToolChanger
|
||||
-- Per testa 1
|
||||
local ptTc1 = Point3d( -1042, -9 + ( DeltaTabY + 382), 362 + ( DeltaTabZ + 923))
|
||||
EmtTcPos {
|
||||
Name = 'T1',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 0),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 0),
|
||||
Geo = 'BASE/T1'}
|
||||
EmtTcPos {
|
||||
Name = 'T2',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 30),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 30),
|
||||
Geo = 'BASE/T2'}
|
||||
EmtTcPos {
|
||||
Name = 'T3',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 60),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 60),
|
||||
Geo = 'BASE/T3'}
|
||||
EmtTcPos {
|
||||
Name = 'T4',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 90),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 90),
|
||||
Geo = 'BASE/T4'}
|
||||
EmtTcPos {
|
||||
Name = 'T5',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 120),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 120),
|
||||
Geo = 'BASE/T5'}
|
||||
EmtTcPos {
|
||||
Name = 'T6',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 150),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 150),
|
||||
Geo = 'BASE/T6'}
|
||||
EmtTcPos {
|
||||
Name = 'T7',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 180),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 180),
|
||||
Geo = 'BASE/T7'}
|
||||
EmtTcPos {
|
||||
Name = 'T8',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 210),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 210),
|
||||
Geo = 'BASE/T8'}
|
||||
EmtTcPos {
|
||||
Name = 'T9',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 240),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 240),
|
||||
Geo = 'BASE/T9'}
|
||||
EmtTcPos {
|
||||
Name = 'T10',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 270),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 270),
|
||||
Geo = 'BASE/T10'}
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 300),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 300),
|
||||
Geo = 'BASE/T11'}
|
||||
EmtTcPos {
|
||||
Name = 'T12',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + VectorFromPolar( 300, 330),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 330),
|
||||
Geo = 'BASE/T12'}
|
||||
-- Per testa 2
|
||||
local ptTc2 = Vector3d( -1042, -1409 + ( DeltaTabY + 382), 362 + ( DeltaTabZ + 923))
|
||||
EmtTcPos {
|
||||
Name = 'T13',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 0),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 0),
|
||||
Geo = 'BASE/T13'}
|
||||
EmtTcPos {
|
||||
Name = 'T14',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 30),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 30),
|
||||
Geo = 'BASE/T14'}
|
||||
EmtTcPos {
|
||||
Name = 'T15',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 60),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 60),
|
||||
Geo = 'BASE/T15'}
|
||||
EmtTcPos {
|
||||
Name = 'T16',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 90),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 90),
|
||||
Geo = 'BASE/T16'}
|
||||
EmtTcPos {
|
||||
Name = 'T17',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 120),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 120),
|
||||
Geo = 'BASE/T17'}
|
||||
EmtTcPos {
|
||||
Name = 'T18',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 150),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 150),
|
||||
Geo = 'BASE/T18'}
|
||||
EmtTcPos {
|
||||
Name = 'T19',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 180),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 180),
|
||||
Geo = 'BASE/T19'}
|
||||
EmtTcPos {
|
||||
Name = 'T20',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 210),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 210),
|
||||
Geo = 'BASE/T20'}
|
||||
EmtTcPos {
|
||||
Name = 'T21',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 240),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 240),
|
||||
Geo = 'BASE/T21'}
|
||||
EmtTcPos {
|
||||
Name = 'T22',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 270),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 270),
|
||||
Geo = 'BASE/T22'}
|
||||
EmtTcPos {
|
||||
Name = 'T23',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 300),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 300),
|
||||
Geo = 'BASE/T23'}
|
||||
EmtTcPos {
|
||||
Name = 'T24',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc2 + VectorFromPolar( 300, 330),
|
||||
TDir = -Z_AX(),
|
||||
ADir = VectorFromPolar( 1, 330),
|
||||
Geo = 'BASE/T24'}
|
||||
-- Per sega a catena
|
||||
local ptTcs = Point3d( 533.5 + ChSawLen, -654.824 + ( DeltaTabY + 382), -1403.0 + ( DeltaTabZ + 923))
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcs,
|
||||
TDir = -Z_AX(),
|
||||
ADir = -X_AX(),
|
||||
Geo = 'BASE/T101'}
|
||||
|
||||
-- Aggiusto posizioni geometriche
|
||||
local vtMove = Vector3d( 0, ( DeltaTabY - 1050), ( DeltaTabZ + 909))
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SIDE'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( YId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( YId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PYId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PYId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( VId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( VId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PVId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PVId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
|
||||
-- Assegno identificativi alle spie delle morse
|
||||
PYLightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( YId, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
PVLightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( VId, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
||||
--function OnSetTable()
|
||||
--end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSetHead()
|
||||
-- se testa 1 fresa
|
||||
if EMC.HEAD == 'H11' then
|
||||
-- se con utensile lungo limito la corsa
|
||||
if EMC.TOTLEN > LONG_TOOL_MINLEN then
|
||||
EmtModifyAxisStroke( 'A1', { max( MinA1, ParkH11_A1 - 30), min( MaxA1, ParkH11_A1 + 30)})
|
||||
else
|
||||
EmtModifyAxisStroke( 'A1', { MinA1, MaxA1})
|
||||
end
|
||||
-- in ogni caso posizione home vicina ad angolo di CU
|
||||
EmtModifyAxisHome( 'A1', ParkH11_A1)
|
||||
-- se testa 1 lama
|
||||
elseif EMC.HEAD == 'H12' then
|
||||
EmtModifyAxisStroke( 'A1', { MinA1, MaxA1})
|
||||
EmtModifyAxisHome( 'A1', ParkA1)
|
||||
-- se testa sega a catena
|
||||
elseif EMC.HEAD == 'H13' then
|
||||
if EMC.DIST and abs( EMC.DIST) > 1 then
|
||||
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, EMC.DIST, 0))
|
||||
local vtMove = Point3d( 0, EMC.DIST, 0) - Point3d( EMC.EXITPOS)
|
||||
local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT))
|
||||
EgtMove( ExitId, vtMove)
|
||||
end
|
||||
EmtModifyAxisStroke( 'A1', { MinA1, MaxA1})
|
||||
EmtModifyAxisHome( 'A1', ParkA1)
|
||||
-- se testa 2 fresa
|
||||
elseif EMC.HEAD == 'H21' then
|
||||
-- se con utensile lungo limito la corsa
|
||||
if EMC.TOTLEN > LONG_TOOL_MINLEN then
|
||||
EmtModifyAxisStroke( 'A2', { max( MinA2, ParkH21_A2 - 30), min( MaxA2, ParkH21_A2 + 30)})
|
||||
else
|
||||
EmtModifyAxisStroke( 'A2', { MinA2, MaxA2})
|
||||
end
|
||||
-- in ogni caso posizione home vicina ad angolo di CU
|
||||
EmtModifyAxisHome( 'A2', ParkH21_A2)
|
||||
-- se testa 2 fresa-lama
|
||||
elseif EMC.HEAD == 'H22' then
|
||||
EmtModifyAxisStroke( 'A2', { MinA2, MaxA2})
|
||||
EmtModifyAxisHome( 'A2', ParkA2)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetHeadSet( sHead)
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' then
|
||||
return 1
|
||||
elseif sHead == 'H21' or sHead == 'H22' then
|
||||
return 2
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare spia stato morsa carrello Y
|
||||
function SetPYLight( bClosed)
|
||||
if not PYLightId then return end
|
||||
EgtSetColor( PYLightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
if bClosed then
|
||||
EgtSetInfo( PYLightId, 'On', '1')
|
||||
else
|
||||
EgtRemoveInfo( PYLightId, 'On')
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per leggere lo stato della morsa carrello Y
|
||||
function GetPYLight()
|
||||
if not PYLightId then return false end
|
||||
return ( EgtGetInfo( PYLightId, 'On') == '1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare spia stato morsa carrello V
|
||||
function SetPVLight( bClosed)
|
||||
if not PVLightId then return end
|
||||
EgtSetColor( PVLightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
if bClosed then
|
||||
EgtSetInfo( PVLightId, 'On', '1')
|
||||
else
|
||||
EgtRemoveInfo( PVLightId, 'On')
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per leggere lo stato della morsa carrello V
|
||||
function GetPVLight()
|
||||
if not PVLightId then return false end
|
||||
return ( EgtGetInfo( PVLightId, 'On') == '1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per resettare tutte le attivazioni della macchina
|
||||
function OnResetMachine()
|
||||
EmtUnlinkAllRawPartsFromGroups()
|
||||
EmtUnlinkAllFixturesFromGroups()
|
||||
SetPYLight( false)
|
||||
SetPVLight( false)
|
||||
-- nascondo Vmill
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
local nVmId = EgtGetFirstNameInGroup( nRawId, 'VMill')
|
||||
local nId = EgtGetFirstInGroup( nRawId)
|
||||
while nId do
|
||||
EgtSetStatus( nId, EgtIf( nId ~= nVmId, GDB_ST.ON, GDB_ST.OFF))
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
nRawId = EgtGetNextRawPart( nRawId)
|
||||
end
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') or GDB_ID.NULL, GDB_ST.OFF)
|
||||
end
|
||||
+1564
File diff suppressed because it is too large
Load Diff
+3775
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,255 @@
|
||||
// English machine message file 2022/01/17
|
||||
|
||||
[MDI]
|
||||
1=Take tool n° 1
|
||||
2=Take tool n° 2
|
||||
3=Take tool n° 3
|
||||
4=Take tool n° 4
|
||||
5=Take tool n° 5
|
||||
6=Take tool n° 6
|
||||
7=Take tool n° 7
|
||||
8=Take tool n° 8
|
||||
9=Take tool n° 9
|
||||
10=Take tool n° 10
|
||||
11=Take tool n° 11
|
||||
12=Take tool n° 12
|
||||
13=Take tool n° 13
|
||||
14=Take tool n° 14
|
||||
15=Take tool n° 15
|
||||
16=Take tool n° 16
|
||||
17=Take tool n° 17
|
||||
18=Take tool n° 18
|
||||
19=Head whitout tool
|
||||
20=Take the Chainsaw
|
||||
21=Activate tool magazine
|
||||
22=Tool tool loader n°1 Forwards
|
||||
23=Tool tool loader n°1 Backwards
|
||||
24=Tool tool loader n°2 Forwards
|
||||
25=Tool tool loader n°2 Backwards
|
||||
26=Tool tool loader Chainsaw Forwards
|
||||
27=Tool tool loader Chainsaw Backwards
|
||||
28=Front zero reference ascent
|
||||
29=Front zero reference descent
|
||||
30=Lateral zero roller ascent
|
||||
31=Lateral zero roller descent
|
||||
32=Ability clockwise rotation right driller motor
|
||||
33=Ability counterclockwise rotation right driller motor
|
||||
34=Ability clockwise rotation left driller motor
|
||||
35=Ability counterclockwise rotation left driller motor
|
||||
36=Stop rotation of drilling spindles
|
||||
37=Manual tool number assignment in the 5-axis head (E80001=1; E80001=2; E80001=3;ETC...)
|
||||
|
||||
[PLC]
|
||||
1=Macchina spenta
|
||||
2=Assi in extracorsa
|
||||
3=Attesa carico trave
|
||||
4=Attesa chiusura Pinza 1
|
||||
5=Attesa apertura Pinza 1
|
||||
6=Attesa chiusura Pinza 4
|
||||
7=Attesa apertura Pinza 4
|
||||
8=Verificare olio lubrificazione aggregati catena
|
||||
9=Termici motori
|
||||
10=Trasferimento programma in corso
|
||||
11=Modulo Adam 1 non Ok verificare V7624.L
|
||||
12=Minimo livello grasso
|
||||
13=Difetto impianto lubrificazione assi verificare livello grasso
|
||||
14=Manca aria compressa
|
||||
15=Sovratemperatura armadio elettrico Cn
|
||||
16=Modulo Adam 2 non Ok verificare V7634.L
|
||||
17=Refrigratore mandrini
|
||||
18=Sovratemperatura armadio elettrico Drive
|
||||
19=Verificare collegamento Marcatore
|
||||
20=Attesa marcatore libero
|
||||
21=Barriere intervenute !!!
|
||||
22=Attesa conferma per chiusura Pinza 1 o 4
|
||||
23=Malfunzionamento azion. asse X Slave
|
||||
24=Malfunzionamento asse X Testa 1
|
||||
25=Malfunzionamento asse Y
|
||||
26=Malfunzionamento asse Z Testa 1
|
||||
27=Malfunzionamento asse A Testa 1
|
||||
28=Malfunzionamento asse B
|
||||
29=Malfunzionamento asse V
|
||||
30=Malfunzionamento asse Cu Testa 1
|
||||
31=Malfunzionamento asse Cu Testa 2
|
||||
32=Asse A bloccato
|
||||
33=Bypass segnali assi digitali attivo
|
||||
34=Attesa chiusura Pinza 2
|
||||
35=Attesa apertura Pinza 2
|
||||
36=Attesa chiusura Pinza 3
|
||||
37=Attesa apertura Pinza 3
|
||||
38=
|
||||
39=Sensore controllo giri Lama guasto
|
||||
40=Fuori giri Lama
|
||||
41=Attesa ribaltamento 90 gradi trave (Girare chiave in modo manuale)
|
||||
42=Attesa ribaltamento 180 gradi trave (Girare chiave in modo manuale)
|
||||
43=Attesa ribaltamento 270 gradi trave (Girare chiave in modo manuale)
|
||||
44=Attesa scarico spezzone in entrata (Girare chiave in modo manuale)
|
||||
45=Attesa conferma scarico trave
|
||||
46=Rotazione T1 proibita senza utensili: verificare
|
||||
47=Rotazione T2 proibita senza utensili: verificare
|
||||
48=
|
||||
49=
|
||||
50=Malfunzionamento asse X Testa 2
|
||||
51=Malfunzionamento asse Z Testa 2
|
||||
52=Malfunzionamento asse A Testa 2
|
||||
53=Malfunzionamento asse B2 Movimento Cu
|
||||
54=Riferimento di zero entrata non basso
|
||||
55=Riferimento di scarico non a riposo
|
||||
56=
|
||||
57=
|
||||
58=
|
||||
59=*** MANUTENZIONE CE ***
|
||||
60=Attesa scarico utensile manuale
|
||||
61=Attesa carico utensile manuale
|
||||
62=
|
||||
63=Attesa apertura totale pinza 3
|
||||
64=Attesa conferma carico trave
|
||||
65=Attesa conferma scarico spezzone corto non tenuto da pinza 1
|
||||
66=Attesa conferma scarico spezzone su rulliera entrata
|
||||
67=Attesa stampa etichetta pezzo precedente
|
||||
68=Attesa carico trave M75 in corso
|
||||
69=Traslatore scarico pieno
|
||||
70=Testa nuovo trave non trovata
|
||||
71=Corsa arretramento spezzone troppo grande
|
||||
72=Ft lettura testa trave occupata
|
||||
73=Attesa Start dopo carico trave con muletto
|
||||
74=Pezzo scaricato su nastro !!!!!
|
||||
75=Scaricare trave con muletto e resettare allarme
|
||||
76=Pinza 1 chiusa senza trave aprirla con M111
|
||||
77=Pinza 4 chiusa senza trave aprirla con M171
|
||||
78=Micro controllo chiusura pinza 1 non Ok
|
||||
79=Attesa conferma lavoro con pinza 4 dentro macchina VERIFICARE !!!
|
||||
80=Pezzo incompleto alcune lavorazioni non eseguite !!!
|
||||
81=Micro controllo chiusura pinza 4 non Ok
|
||||
82=Attesa Ft pinza 1 lettura coda trave a zero
|
||||
83=Cambi utensile non indietro !!!
|
||||
84=Testa avanti programmare M90 e poi M199
|
||||
85=Cambio T201-T202 non possibile con pinza 1 impegnata
|
||||
86=Attesa protezione cambio utensile aperta
|
||||
87=Asse A fuori posizione
|
||||
88=Avanti magazzino utensili non Ok
|
||||
89=Indietro magazzino utensili non Ok
|
||||
90=
|
||||
91=
|
||||
92=
|
||||
93=
|
||||
94=
|
||||
95=Messa a punto inserita permessi solo movimenti manuali
|
||||
96=
|
||||
97=
|
||||
98=Avanti testa per cambio utensile non Ok
|
||||
99=Indietro testa per cambio utensile non Ok
|
||||
100=
|
||||
101=Motore T1 non in rotazione (Fcinv0=1)
|
||||
102=Motore T2 non in rotazione (Fcinv0=1)
|
||||
103=
|
||||
104=
|
||||
105=Larghezza trave EX non Ok !!!
|
||||
106=Altezza trave EZ non Ok !!!
|
||||
107=
|
||||
108=Attendere inserzioni di potenza
|
||||
109=Premere reset su CNC
|
||||
110=
|
||||
111=Malfunzionamento inverter 1
|
||||
112=Malfunzionamento inverter 2
|
||||
113=
|
||||
114=
|
||||
115=
|
||||
116=
|
||||
117=
|
||||
118=Flussostato Testa 1 non Ok
|
||||
119=Flussostato Testa 2 non Ok
|
||||
120=
|
||||
121=Sovratemperatura resistenze di frenatura inverter 1
|
||||
122=Sovratemperatura resistenze di frenatura inverter 2
|
||||
123=
|
||||
124=
|
||||
125=
|
||||
126=
|
||||
127=
|
||||
128=
|
||||
129=
|
||||
130=
|
||||
131=Sovratemperatura motore testa 1
|
||||
132=Sovratemperatura motore testa 2
|
||||
133=
|
||||
134=
|
||||
135=
|
||||
136=
|
||||
137=
|
||||
138=
|
||||
139=
|
||||
140=
|
||||
141=Sovracorrente inverter 1
|
||||
142=Sovracorrente inverter 2
|
||||
143=
|
||||
144=
|
||||
145=
|
||||
146=
|
||||
147=
|
||||
148=Cambi utensili non avanti
|
||||
149=Posizione cambio utensile 1 impegnata per scarico
|
||||
150=Posizione cambio utensile 2 impegnata per scarico
|
||||
151=Difetto bloccaggio utensile testa 1
|
||||
152=Difetto bloccaggio utensile testa 2
|
||||
153=Utensile presente su testa 1 con E80001=0
|
||||
154=Utensile presente su testa 2 con E80002=0
|
||||
155=Difetto sbloccaggio utensile testa 1
|
||||
156=Difetto sbloccaggio utensile testa 2
|
||||
157=Cono utensile testa 1 sporco
|
||||
158=Cono utensile testa 2 sporco
|
||||
159=Pistone sbloccaggio cono testa 1 non a riposo
|
||||
160=Pistone sbloccaggio cono testa 2 non a riposo
|
||||
161=Asse X1 non a zero per cambio utensile
|
||||
162=Asse X2 non a zero per cambio utensile
|
||||
163=
|
||||
164=
|
||||
165=
|
||||
166=
|
||||
167=
|
||||
168=
|
||||
169=
|
||||
|
||||
|
||||
[CNC]
|
||||
900=INVALID TOOL NUMBER M6T
|
||||
901=TOOL NUMBER LOADED NOT OK
|
||||
902=INVALID MOTOR TOOL NUMBER E80001
|
||||
903=SENSOR SETPOINT B MILLING NOT OK
|
||||
904=SENSOR SETPOINT C MILLING NOT OK
|
||||
905=SENSOR SETPOINT B SAW BLADE NOT OK
|
||||
906=SENSOR SETPOINT C SAW BLADE NOT OK
|
||||
907=UNLOAD CHAINSAW MANUALLY
|
||||
908=WORK WITH 2 BLADES NOT POSSIBLE B<>90 OR C<>0 OR 180
|
||||
909=DEFINE TOOL NUMBER ENGINE SAW BLADE EU
|
||||
910=G124 X REQUIRED
|
||||
911=G124 Y REQUIRED
|
||||
912=G124 B REQUIRED
|
||||
913=G124 C REQUIRED
|
||||
914=libero
|
||||
915=libero
|
||||
916=DEFINE SPINDLE NUMBER ET.. (1=BLADE 2=MILL 3=RIGHT DRILLER 4=LEFT DRILLER)
|
||||
917=UNLOADING MOTOR TOOL
|
||||
918=G104X.. REQUIRED
|
||||
919=G104Y.. REQUIRED
|
||||
920=G104Z.. REQUIRED
|
||||
921=G104ET.. NOT OK (MANDATORY SCREWDRIVER NUMBER ET0-ET1-ET2-ET3)
|
||||
922=G104EF.. NOT OK (REQUIRED LAYER NUMBER)
|
||||
923=SETPOINT V SENSOR NOT OK
|
||||
924=OFFSET X SAW BLADE NOT ALIGNED WITH CADCAM
|
||||
925=OFFSET Y SAW BLADE NOT ALIGNED WITH CADCAM
|
||||
926=OFFSET Z SAW BLADE NOT ALIGNED WITH CADCAM
|
||||
927=PIVOT Z SAW BLADE NOT ALIGNED WITH CADCAM
|
||||
928=PIVOT C SAW BLADE NOT ALIGNED WITH CADCAM
|
||||
929=OFFSET X MILL NOT ALIGNED WITH CADCAM
|
||||
930=OFFSET Y MILL NOT ALIGNED WITH CADCAM
|
||||
931=OFFSET Z MILL NOT ALIGNED WITH CADCAM
|
||||
932=PIVOT Z MILL NOT ALIGNED WITH CADCAM
|
||||
933=MANDATORY X-U-W-Z PROGRAMMING WITH G102EH.. NON-ZERO
|
||||
934=OFFSET X RIGHT DRILLER NOT ALIGNED WITH CADCAM
|
||||
935=OFFSET Y RIGHT DRILLER NOT ALIGNED WITH CADCAM
|
||||
936=OFFSET Z RIGHT DRILLER NOT ALIGNED WITH CADCAM
|
||||
937=OFFSET X LEFT DRILLER NOT ALIGNED WITH CADCAM
|
||||
938=OFFSET Y LEFT DRILLER NOT ALIGNED WITH CADCAM
|
||||
939=OFFSET Z LEFT DRILLER NOT ALIGNED WITH CADCAM
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
% 9999.9
|
||||
N1 $01:Macchina spenta
|
||||
N2 $02:Assi in extracorsa
|
||||
N3 $03:Attesa carico trave
|
||||
N4 $04:Attesa chiusura Pinza 1
|
||||
N5 $05:Attesa apertura Pinza 1
|
||||
N6 $06:Attesa chiusura Pinza 4
|
||||
N7 $07:Attesa apertura Pinza 4
|
||||
N8 $08:Verificare olio lubrificazione aggregati catena
|
||||
N9 $09:Termici motori
|
||||
N10 $10:Trasferimento programma in corso
|
||||
N11 $11:Modulo Adam 1 non Ok verificare V7624.L
|
||||
N12 $12:Minimo livello grasso
|
||||
N13 $13:Difetto impianto lubrificazione assi verificare livello grasso
|
||||
N14 $14:Manca aria compressa
|
||||
N15 $15:Sovratemperatura armadio elettrico Cn
|
||||
N16 $16:Modulo Adam 2 non Ok verificare V7634.L
|
||||
N17 $17:Refrigratore mandrini
|
||||
N18 $18:Sovratemperatura armadio elettrico Drive
|
||||
N19 $19:Verificare collegamento Marcatore
|
||||
N20 $20:Attesa marcatore libero
|
||||
N21 $21:Barriere intervenute !!!
|
||||
N22 $22:Attesa conferma per chiusura Pinza 1 o 4
|
||||
N23 $23:Malfunzionamento azion. asse X Slave
|
||||
N24 $24:Malfunzionamento asse X Testa 1
|
||||
N25 $25:Malfunzionamento asse Y
|
||||
N26 $26:Malfunzionamento asse Z Testa 1
|
||||
N27 $27:Malfunzionamento asse A Testa 1
|
||||
N28 $28:Malfunzionamento asse B
|
||||
N29 $29:Malfunzionamento asse V
|
||||
N30 $30:Malfunzionamento asse Cu Testa 1
|
||||
N31 $31:Malfunzionamento asse Cu Testa 2
|
||||
N32 $32:Asse A bloccato
|
||||
N33 $33:Bypass segnali assi digitali attivo
|
||||
N34 $34:Attesa chiusura Pinza 2
|
||||
N35 $35:Attesa apertura Pinza 2
|
||||
N36 $36:Attesa chiusura Pinza 3
|
||||
N37 $37:Attesa apertura Pinza 3
|
||||
N38 $38:
|
||||
N39 $39:Sensore controllo giri Lama guasto
|
||||
N40 $40:Fuori giri Lama
|
||||
N41 $41:Attesa ribaltamento 90 gradi trave (Girare chiave in modo manuale)
|
||||
N42 $42:Attesa ribaltamento 180 gradi trave (Girare chiave in modo manuale)
|
||||
N43 $43:Attesa ribaltamento 270 gradi trave (Girare chiave in modo manuale)
|
||||
N44 $44:Attesa scarico spezzone in entrata (Girare chiave in modo manuale)
|
||||
N45 $45:Attesa conferma scarico trave
|
||||
N46 $46:Rotazione T1 proibita senza utensili: verificare
|
||||
N47 $47:Rotazione T2 proibita senza utensili: verificare
|
||||
N48 $48:
|
||||
N49 $49:
|
||||
N50 $50:Malfunzionamento asse X Testa 2
|
||||
N51 $51:Malfunzionamento asse Z Testa 2
|
||||
N52 $52:Malfunzionamento asse A Testa 2
|
||||
N53 $53:Malfunzionamento asse B2 Movimento Cu
|
||||
N54 $54:Riferimento di zero entrata non basso
|
||||
N55 $55:Riferimento di scarico non a riposo
|
||||
N56 $56:
|
||||
N57 $57:
|
||||
N58 $58:
|
||||
N59 $59:*** MANUTENZIONE CE ***
|
||||
N60 $60:Attesa scarico utensile manuale
|
||||
N61 $61:Attesa carico utensile manuale
|
||||
N62 $62:
|
||||
N63 $63:Attesa apertura totale pinza 3
|
||||
N64 $64:Attesa conferma carico trave
|
||||
N65 $65:Attesa conferma scarico spezzone corto non tenuto da pinza 1
|
||||
N66 $66:Attesa conferma scarico spezzone su rulliera entrata
|
||||
N67 $67:Attesa stampa etichetta pezzo precedente
|
||||
N68 $68:Attesa carico trave M75 in corso
|
||||
N69 $69:Traslatore scarico pieno
|
||||
N70 $70:Testa nuovo trave non trovata
|
||||
N71 $71:Corsa arretramento spezzone troppo grande
|
||||
N72 $72:Ft lettura testa trave occupata
|
||||
N73 $73:Attesa Start dopo carico trave con muletto
|
||||
N74 $74:Pezzo scaricato su nastro !!!!!
|
||||
N75 $75:Scaricare trave con muletto e resettare allarme
|
||||
N76 $76:Pinza 1 chiusa senza trave aprirla con M111
|
||||
N77 $77:Pinza 4 chiusa senza trave aprirla con M171
|
||||
N78 $78:Micro controllo chiusura pinza 1 non Ok
|
||||
N79 $79:Attesa conferma lavoro con pinza 4 dentro macchina VERIFICARE !!!
|
||||
N80 $80:Pezzo incompleto alcune lavorazioni non eseguite !!!
|
||||
N81 $81:Micro controllo chiusura pinza 4 non Ok
|
||||
N82 $82:Attesa Ft pinza 1 lettura coda trave a zero
|
||||
N83 $83:Cambi utensile non indietro !!!
|
||||
N84 $84:Testa avanti programmare M90 e poi M199
|
||||
N85 $85:Cambio T201-T202 non possibile con pinza 1 impegnata
|
||||
N86 $86:Attesa protezione cambio utensile aperta
|
||||
N87 $87:Asse A fuori posizione
|
||||
N88 $88:Avanti magazzino utensili non Ok
|
||||
N89 $89:Indietro magazzino utensili non Ok
|
||||
N90 $90:
|
||||
N91 $91:
|
||||
N92 $92:
|
||||
N93 $93:
|
||||
N94 $94:
|
||||
N95 $95:Messa a punto inserita permessi solo movimenti manuali
|
||||
N96 $96:
|
||||
N97 $97:
|
||||
N98 $98:Avanti testa per cambio utensile non Ok
|
||||
N99 $99:Indietro testa per cambio utensile non Ok
|
||||
N100 $100:
|
||||
N101 $101:Motore T1 non in rotazione (Fcinv0=1)
|
||||
N102 $102:Motore T2 non in rotazione (Fcinv0=1)
|
||||
N103 $103:
|
||||
N104 $104:
|
||||
N105 $105:Larghezza trave EX non Ok !!!
|
||||
N106 $106:Altezza trave EZ non Ok !!!
|
||||
N107 $107:
|
||||
N108 $108:Attendere inserzioni di potenza
|
||||
N109 $109:Premere reset su CNC
|
||||
N110 $110:
|
||||
N111 $111:Malfunzionamento inverter 1
|
||||
N112 $112:Malfunzionamento inverter 2
|
||||
N113 $113:
|
||||
N114 $114:
|
||||
N115 $115:
|
||||
N116 $116:
|
||||
N117 $117:
|
||||
N118 $118:Flussostato Testa 1 non Ok
|
||||
N119 $119:Flussostato Testa 2 non Ok
|
||||
N120 $120:
|
||||
N121 $121:Sovratemperatura resistenze di frenatura inverter 1
|
||||
N122 $122:Sovratemperatura resistenze di frenatura inverter 2
|
||||
N123 $123:
|
||||
N124 $124:
|
||||
N125 $125:
|
||||
N126 $126:
|
||||
N127 $127:
|
||||
N128 $128:
|
||||
N129 $129:
|
||||
N130 $130:
|
||||
N131 $131:Sovratemperatura motore testa 1
|
||||
N132 $132:Sovratemperatura motore testa 2
|
||||
N133 $133:
|
||||
N134 $134:
|
||||
N135 $135:
|
||||
N136 $136:
|
||||
N137 $137:
|
||||
N138 $138:
|
||||
N139 $139:
|
||||
N140 $140:
|
||||
N141 $141:Sovracorrente inverter 1
|
||||
N142 $142:Sovracorrente inverter 2
|
||||
N143 $143:
|
||||
N144 $144:
|
||||
N145 $145:
|
||||
N146 $146:
|
||||
N147 $147:
|
||||
N148 $148:Cambi utensili non avanti
|
||||
N149 $149:Posizione cambio utensile 1 impegnata per scarico
|
||||
N150 $150:Posizione cambio utensile 2 impegnata per scarico
|
||||
N151 $151:Difetto bloccaggio utensile testa 1
|
||||
N152 $152:Difetto bloccaggio utensile testa 2
|
||||
N153 $153:Utensile presente su testa 1 con E80001=0
|
||||
N154 $154:Utensile presente su testa 2 con E80002=0
|
||||
N155 $155:Difetto sbloccaggio utensile testa 1
|
||||
N156 $156:Difetto sbloccaggio utensile testa 2
|
||||
N157 $157:Cono utensile testa 1 sporco
|
||||
N158 $158:Cono utensile testa 2 sporco
|
||||
N159 $159:Pistone sbloccaggio cono testa 1 non a riposo
|
||||
N160 $160:Pistone sbloccaggio cono testa 2 non a riposo
|
||||
N161 $161:Asse X1 non a zero per cambio utensile
|
||||
N162 $162:Asse X2 non a zero per cambio utensile
|
||||
N163 $163:
|
||||
N164 $164:
|
||||
N165 $165:
|
||||
N166 $166:
|
||||
N167 $167:
|
||||
N168 $168:
|
||||
N169 $169:
|
||||
@@ -0,0 +1,43 @@
|
||||
// File dei messaggi macchina Italiano 2022/01/17
|
||||
[MDI]
|
||||
1=Prendi utensile n° 1
|
||||
2=Prendi utensile n° 2
|
||||
3=Prendi utensile n° 3
|
||||
4=Prendi utensile n° 4
|
||||
5=Prendi utensile n° 5
|
||||
6=Prendi utensile n° 6
|
||||
7=Prendi utensile n° 7
|
||||
8=Prendi utensile n° 8
|
||||
9=Prendi utensile n° 9
|
||||
10=Prendi utensile n° 10
|
||||
11=Prendi utensile n° 11
|
||||
12=Prendi utensile n° 12
|
||||
13=Prendi utensile n° 13
|
||||
14=Prendi utensile n° 14
|
||||
15=Prendi utensile n° 15
|
||||
16=Prendi utensile n° 16
|
||||
17=Prendi utensile n° 17
|
||||
18=Prendi utensile n° 18
|
||||
19=Scarica utensili
|
||||
20=Prendi Elettrosega
|
||||
21=Attiva magazzino utensili
|
||||
22=Magazzino utensili n°1 avanti
|
||||
23=Magazzino utensili n°1 indietro
|
||||
24=Magazzino utensili n°2 avanti
|
||||
25=Magazzino utensili n°2 indietro
|
||||
26=Magazzino utensili Elettrosega avanti
|
||||
27=Magazzino utensili Elettrosega indietro
|
||||
28=Salita rulli zero frontale
|
||||
29=Discesa rulli zero frontale
|
||||
30=Salita rulli zero laterale
|
||||
31=Discesa rulli zero laterale
|
||||
32=Abilita rotazione oraria motore foratore destro
|
||||
33=Abilita rotazione antioraria motore foratore destro
|
||||
34=Abilita rotazione oraria motore foratore sinistro
|
||||
35=Abilita rotazione antioraria motore foratore sinistro
|
||||
36=Stop rotazione mandrini foratori
|
||||
37=Assegnazione manuale numero utensile nella testa a 5 assi (E80001=1; E80001=2;E80001=3;ETC...)
|
||||
|
||||
[PLC]
|
||||
|
||||
[CNC]
|
||||
@@ -0,0 +1,36 @@
|
||||
-- 2018/11/21 17:30:00
|
||||
-- Machining Exit for Essetre-TURN2T machine
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- *** Uscita da Lavorazioni ***
|
||||
|
||||
-- Nascondo il pezzo così marcato e le geometrie aggiunte, visualizzo il Box
|
||||
local function ProcessPart( PartId)
|
||||
-- visualizzo il Box
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.ON)
|
||||
end
|
||||
|
||||
-- Disabilito segnalazione modifica progetto
|
||||
local bEnMod = EgtGetEnableModified()
|
||||
EgtDisableModified()
|
||||
|
||||
-- Processo i pezzi nella radice (già chiusi tutti i gruppi di lavoro)
|
||||
local PartId = EgtGetFirstPart()
|
||||
while PartId do
|
||||
ProcessPart( PartId)
|
||||
PartId = EgtGetNextPart( PartId)
|
||||
end
|
||||
|
||||
EgtZoom( SCE_ZM.ALL, false)
|
||||
|
||||
-- Ripristino segnalazione modifica progetto
|
||||
if bEnMod then
|
||||
EgtEnableModified()
|
||||
end
|
||||
|
||||
MACH.ERR = 0
|
||||
@@ -0,0 +1,44 @@
|
||||
-- 2018/11/21 16:30:00
|
||||
-- Machining Init for Essetre-TURN2T machine
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- *** Ingresso in Lavorazioni ***
|
||||
|
||||
-- Rendo visibile il pezzo e le geometrie aggiunte, nascondo il Box
|
||||
local function ProcessPart( PartId)
|
||||
-- nascondo il Box
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.OFF)
|
||||
end
|
||||
|
||||
-- Disabilito segnalazione modifica progetto
|
||||
local bEnMod = EgtGetEnableModified()
|
||||
EgtDisableModified()
|
||||
|
||||
-- Processo i pezzi nella radice
|
||||
local PartId = EgtGetFirstPart()
|
||||
while PartId do
|
||||
ProcessPart( PartId)
|
||||
PartId = EgtGetNextPart( PartId)
|
||||
end
|
||||
|
||||
-- Processo i pezzi già nei gruppi di lavoro (quando appena lanciata Process)
|
||||
local GhostId = EgtGetFirstGhostPart()
|
||||
while GhostId do
|
||||
local PartId = EgtGetInfo( GhostId, GDB_SI.SOURCE, 'i')
|
||||
if PartId then
|
||||
ProcessPart( PartId)
|
||||
end
|
||||
GhostId = EgtGetNextGhostPart( GhostId)
|
||||
end
|
||||
|
||||
-- Ripristino segnalazione modifica progetto
|
||||
if bEnMod then
|
||||
EgtEnableModified()
|
||||
end
|
||||
|
||||
MACH.ERR = 0
|
||||
@@ -0,0 +1,214 @@
|
||||
-- Gestione attrezzaggio per Essetre-TURN2T - 2022/09/20
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Tavola di passaggio valori
|
||||
local STU = {}
|
||||
STU.TUUID = ""
|
||||
STU.TCPOS = ""
|
||||
STU.HEAD = ""
|
||||
STU.GROUP = ""
|
||||
STU.POS = ""
|
||||
STU.EXIT = 0
|
||||
STU.INDEX = 0
|
||||
STU.HEAD1 = ""
|
||||
STU.HEAD2 = ""
|
||||
STU.ISVALID = false
|
||||
STU.ERR = 0
|
||||
_G.STU = STU
|
||||
|
||||
local INVALIDPOS = ""
|
||||
local POS = "Pos"
|
||||
|
||||
-- Geom Set
|
||||
local GS = {}
|
||||
|
||||
-- Configurazione posizioni
|
||||
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos2", TcPos = "T2", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos3", TcPos = "T3", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos4", TcPos = "T4", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos5", TcPos = "T5", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos6", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos7", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T9", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos10", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos11", TcPos = "T11", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos12", TcPos = "T12", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos13", TcPos = "T42", Head = "H12", Group = "G1"},
|
||||
{Pos = "Pos14", TcPos = "T13", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos15", TcPos = "T14", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos16", TcPos = "T15", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos17", TcPos = "T16", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos18", TcPos = "T17", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos19", TcPos = "T18", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos20", TcPos = "T19", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos21", TcPos = "T20", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos22", TcPos = "T21", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos23", TcPos = "T22", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos24", TcPos = "T23", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos25", TcPos = "T24", Head = "H21", Group = "G2"},
|
||||
{Pos = "Pos26", TcPos = "T43", Head = "H22", Group = "G2"},
|
||||
{Pos = "Pos27", TcPos = "T101", Head = "H13", Group = "G3"}}
|
||||
|
||||
local UsePositionHead = true
|
||||
|
||||
local function IsInGeomSet( ToolHead, PosHead)
|
||||
for GsIndex = 1, #GS do
|
||||
local bToolHead = false
|
||||
local bPosHead = false
|
||||
for HIndex = 1, #GS[GsIndex] do
|
||||
if GS[GsIndex][HIndex] == ToolHead then
|
||||
bToolHead = true
|
||||
elseif GS[GsIndex][HIndex] == PosHead then
|
||||
bPosHead = true
|
||||
end
|
||||
if bToolHead and bPosHead then
|
||||
return true
|
||||
end
|
||||
end
|
||||
if bToolHead and bPosHead then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function STU.IsCompatibleHeads()
|
||||
STU.ISVALID = false
|
||||
if IsInGeomSet(STU.HEAD1, STU.HEAD2) then
|
||||
STU.ISVALID = true
|
||||
else
|
||||
STU.ISVALID = false
|
||||
end
|
||||
end
|
||||
|
||||
function STU.GetValidHeadExitForPos()
|
||||
-- se TUUID non valido restituisco errore
|
||||
local ToolName = EgtTdbGetToolFromUUID( STU.TUUID)
|
||||
if ToolName == nill then
|
||||
STU.ERR = 1
|
||||
return
|
||||
end
|
||||
EgtTdbSetCurrTool( ToolName)
|
||||
local CurrToolHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
STU.EXIT = EgtTdbGetCurrToolParam( MCH_TP.EXIT)
|
||||
-- recupero testa predefinita per la posizione corrente
|
||||
local CurrPosHead
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
CurrPosHead = PositionTable[i].Head
|
||||
break
|
||||
end
|
||||
end
|
||||
-- verifico se la testa è quella della posizione predefinita
|
||||
if CurrPosHead == CurrToolHead then
|
||||
STU.HEAD = CurrToolHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
-- verifico se la testa è compatibile con quella della posizione predefinita
|
||||
elseif IsInGeomSet( CurrToolHead, CurrPosHead) then
|
||||
if UsePositionHead then
|
||||
STU.HEAD = CurrPosHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
else
|
||||
STU.HEAD = CurrToolHead
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
-- la testa non è compatibile con quella della posizione predefinita
|
||||
else
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function STU.IsValidTcPosFromHead()
|
||||
STU.ISVALID = false
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
if PositionTable[i].Head == STU.HEAD then
|
||||
STU.ISVALID = true
|
||||
STU.ERR = 0
|
||||
return
|
||||
elseif IsInGeomSet(PositionTable[i].Head, STU.HEAD) then
|
||||
STU.ISVALID = true
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
STU.ISVALID = false
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function STU.GetTcPosHeadGroupFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.TCPOS = PositionTable[i].TcPos
|
||||
STU.HEAD = PositionTable[i].Head
|
||||
STU.GROUP = PositionTable[i].Group
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.TCPOS = INVALIDPOS
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.GROUP = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetPosFromTcPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
STU.POS = PositionTable[i].Pos
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.POS = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetGroupFromTcPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].TcPos == STU.TCPOS then
|
||||
STU.GROUP = PositionTable[i].Group
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.GROUP = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetHeadFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.HEAD = PositionTable[i].Head
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.HEAD = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
|
||||
function STU.GetTcPosFromPos()
|
||||
for i = 1, #PositionTable do
|
||||
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||
STU.TCPOS = PositionTable[i].TcPos
|
||||
STU.ERR = 0
|
||||
return
|
||||
end
|
||||
end
|
||||
STU.TCPOS = INVALIDPOS
|
||||
STU.ERR = 1
|
||||
end
|
||||
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.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user