primo commit
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
[General]
|
||||
Material=Beam
|
||||
|
||||
[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]
|
||||
H1.1=Standard.nge
|
||||
H1.1:MILL_NOTIP=MillNoTip.nge
|
||||
H2.1=SawOnH2.nge
|
||||
H3.1=ChainSaw.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
|
||||
H1=6608
|
||||
; 5 axis saw
|
||||
H2=6615
|
||||
; Chainsaw
|
||||
H3=6616
|
||||
; Horizontal drill
|
||||
H5=6621
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
|
||||
[Estimations]
|
||||
Enable=1
|
||||
WinPlace=0,514,138,628,810
|
||||
|
||||
[VMill]
|
||||
Enable=1
|
||||
Save=0
|
||||
@@ -0,0 +1,489 @@
|
||||
-- Descrizione macchina Essetre-90480026 by EgalTech s.r.l. 2023/03/16
|
||||
-- Macchina Wall.
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.5c5'
|
||||
|
||||
-- Parametri macchina
|
||||
NumericalControl = 'NUM' -- NUM o TPA
|
||||
MinY = 0.0
|
||||
MaxY = 30000.0
|
||||
MinX1 = -5400.0
|
||||
MaxX1 = 100.0
|
||||
MinZ1 = -1570.0
|
||||
MaxZ1 = 0.0
|
||||
MinB1 = -127.0
|
||||
MaxB1 = 127.0
|
||||
MinC1 = -275.0
|
||||
MaxC1 = 275.0
|
||||
MillOffs = 202.0
|
||||
ChSawLen = 101.0
|
||||
MinX2 = -6080.0
|
||||
MaxX2 = -770.0
|
||||
MinZ2 = -1180.0
|
||||
MaxZ2 = 0.0
|
||||
MinB2 = 0.0
|
||||
MaxB2 = 90.0
|
||||
MinC2 = -275.0
|
||||
MaxC2 = 275.0
|
||||
MinX3 = 370
|
||||
MaxX3 = 2300
|
||||
HomeX3 = 2300
|
||||
MinZ3 = 0
|
||||
MaxZ3 = 500
|
||||
SawDeltaX = 347.5
|
||||
SawDeltaY = 0.0
|
||||
SawDeltaZ = -117.9
|
||||
SawOffs = 163.5
|
||||
NailDeltaX = 457.7
|
||||
NailDeltaY = 152.5
|
||||
NailDeltaZ = -499
|
||||
DrillDeltaX = -306.35
|
||||
DrillDeltaY = -1131.785
|
||||
DrillDeltaZ = -971.0
|
||||
DimTabX = 31200.0
|
||||
DimTabY = 3500.0
|
||||
DeltaTabX = 1019.6
|
||||
DeltaTabY = -1294.3 - DimTabY
|
||||
DeltaTabZ = -1090.0
|
||||
CoeffVM = 0.75
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480023_MW.data"
|
||||
local sData = EgtGetSourceDir().."\\Wall\\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 and Machine.Offsets then
|
||||
local MchOffs = Machine.Offsets
|
||||
NumericalControl = EgtIf( MchOffs.TIPO_CN ~= 1, 'NUM', 'TPA')
|
||||
if MchOffs.MAX_Y then MinY = -MchOffs.MAX_Y end
|
||||
if MchOffs.MIN_Y then MaxY = -MchOffs.MIN_Y end
|
||||
MinX1 = MchOffs.MIN_X or MinX1
|
||||
MaxX1 = MchOffs.MAX_X or MaxX1
|
||||
MinZ1 = MchOffs.MIN_Z or MinZ1
|
||||
MaxZ1 = MchOffs.MAX_Z or MaxZ1
|
||||
MinB1 = MchOffs.MIN_B or MinB1
|
||||
MaxB1 = MchOffs.MAX_B or MaxB1
|
||||
MinC1 = MchOffs.MIN_C or MinC1
|
||||
MaxC1 = MchOffs.MAX_C or MaxC1
|
||||
MinX2 = MchOffs.MIN_U or MinX2
|
||||
MaxX2 = MchOffs.MAX_U or MaxX2
|
||||
MinZ2 = MchOffs.MIN_W or MinZ2
|
||||
MaxZ2 = MchOffs.MAX_W or MaxZ2
|
||||
MinB2 = MchOffs.MIN_V or MinB2
|
||||
MaxB2 = MchOffs.MAX_V or MaxB2
|
||||
MinC2 = MchOffs.MIN_A or MinC2
|
||||
MaxC2 = MchOffs.MAX_A or MaxC2
|
||||
MillOffs = MchOffs.PIVOT_MILL or MillOffs
|
||||
SawOffs = MchOffs.PIVOT_SAW or SawOffs
|
||||
if MchOffs.ZERO_Y_MILL then DeltaTabX = -MchOffs.ZERO_Y_MILL end
|
||||
if MchOffs.ZERO_X_MILL then DeltaTabY = MchOffs.ZERO_X_MILL - DimTabY end
|
||||
DeltaTabZ = MchOffs.ZERO_Z_MILL or DeltaTabZ
|
||||
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_Y_NAIL then NailDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_NAIL) end
|
||||
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_NAIL then NailDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_NAIL) end
|
||||
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_NAIL then NailDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_NAIL) end
|
||||
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_DRILL then DrillDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_DRILL) end
|
||||
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_DRILL then DrillDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_DRILL) end
|
||||
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_DRILL then DrillDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_DRILL) end
|
||||
end
|
||||
end
|
||||
|
||||
-- Posizione media asse X
|
||||
MidX1 = ( MinX1 + MaxX1) / 2
|
||||
|
||||
-- Spostamenti della lama rispetto al disegno
|
||||
local SawOffsX = SawDeltaX - 347.5
|
||||
local SawOffsY = SawDeltaY - 0
|
||||
local SawOffsZ = SawDeltaZ + 117.9
|
||||
|
||||
-- Spostamenti del chiodatore rispetto al disegno
|
||||
local NailOffsX = NailDeltaX - 383.8
|
||||
local NailOffsY = NailDeltaY - 170.0
|
||||
local NailOffsZ = NailDeltaZ - 37.0
|
||||
|
||||
-- Spostamenti del foratore rispetto al disegno
|
||||
local DrillOffsX = DrillDeltaX + 306.35
|
||||
local DrillOffsY = DrillDeltaY + 1131.785
|
||||
local DrillOffsZ = DrillDeltaZ + 971.0
|
||||
|
||||
|
||||
EmtGeneral {
|
||||
File='Essetre-90480023_MW.nge',
|
||||
Offset = Vector3d( -640.35, -3620.00, -1710.0),
|
||||
AxisMaxAdjust = 250,
|
||||
ExitMaxAdjust = 250,
|
||||
ExitMaxRotAdj = 91,
|
||||
Special = 'Essetre-WALL.mlse',
|
||||
Processor = 'Essetre-WALL.mlpe'}
|
||||
local BaseId = EmtBase {
|
||||
Name = 'Base',
|
||||
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/REF', 'BASE/COLLISION'}}
|
||||
local vtMove = Vector3d( DeltaTabX - 1019.6, DeltaTabY + 4794.3, DeltaTabZ + 1090)
|
||||
EgtMove( BaseId, vtMove, GDB_RT.GLOB)
|
||||
-- Tavola
|
||||
EmtTable {
|
||||
Name = 'Tab',
|
||||
Parent = 'Base',
|
||||
Type = MCH_TT.FLAT,
|
||||
Ref1 = Point3d( DeltaTabX, DeltaTabY, DeltaTabZ),
|
||||
Geo = 'TABLE/GEO'}
|
||||
-- Traversa
|
||||
local YId = EmtAxis {
|
||||
Name = 'Y',
|
||||
Parent = 'Base',
|
||||
Invert = true,
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = X_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinY, MaxY},
|
||||
Home = 0,
|
||||
Geo = 'Y_AXIS/GEO',
|
||||
Aux = {'Y_AXIS/SOLID', 'Y_AXIS/TC', 'Y_AXIS/DRILL_BASE', 'Y_AXIS/COLLISION'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( YId, 'DRILL_BASE'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
|
||||
-- Testa per frese
|
||||
EmtAxis {
|
||||
Name = 'X1',
|
||||
Parent = 'Y',
|
||||
Token = 'X',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Y_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinX1, MaxX1},
|
||||
Home = MaxX1,
|
||||
Geo = 'X1_AXIS/GEO',
|
||||
Aux = {'X1_AXIS/SOLID'}}
|
||||
EmtAxis {
|
||||
Name = 'Z1',
|
||||
Parent = 'X1',
|
||||
Token = 'Z',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinZ1, MaxZ1},
|
||||
Home = 0,
|
||||
Geo = 'Z1_AXIS/GEO',
|
||||
Aux = {'Z1_AXIS/SOLID'}}
|
||||
-- Chiodatrice
|
||||
local H14Id = EmtHead {
|
||||
Name = 'H14',
|
||||
Parent = 'Z1',
|
||||
HSet = 'H14',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( NailDeltaX, NailDeltaY, NailDeltaZ),
|
||||
TDir = Z_AX(),
|
||||
Geo = 'H14_HEAD/GEO',
|
||||
Aux = {'H14_HEAD/SOLID'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( H14Id, 'SOLID'), Vector3d( NailOffsX, NailOffsY, NailOffsZ), GDB_RT.GLOB)
|
||||
EmtAxis {
|
||||
Name = 'C1',
|
||||
Parent = 'Z1',
|
||||
Token = 'C',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinC1, MaxC1},
|
||||
Home = 0,
|
||||
Geo = 'C1_AXIS/GEO',
|
||||
Aux = {'C1_AXIS/SOLID', 'C1_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'B1',
|
||||
Parent = 'C1',
|
||||
Token = 'B',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 0, 0, MillOffs),
|
||||
Stroke = {MinB1, MaxB1},
|
||||
Home = 0,
|
||||
Geo = 'B1_AXIS/GEO',
|
||||
Aux = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION'}}
|
||||
EmtHead {
|
||||
Name = 'H1',
|
||||
Parent = 'B1',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = Y_AX(),
|
||||
Rot1W = 0.1,
|
||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||
Geo = 'H1_HEAD/GEO'}
|
||||
-- Sega a catena
|
||||
EmtAxis {
|
||||
Name = 'A1',
|
||||
Parent = 'B1',
|
||||
Token = '**',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = { 0, 270},
|
||||
Home = 180,
|
||||
Geo = 'A1_AXIS/GEO'}
|
||||
local H3Id = EmtHead {
|
||||
Name = 'H3',
|
||||
Parent = 'A1',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, -ChSawLen),
|
||||
TDir = Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.1,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||
Geo = 'H3_HEAD/GEO'}
|
||||
EgtSetInfo( H3Id, 'ZSAFEDELTA', 60)
|
||||
-- Testa per Lama
|
||||
local X2Id = EmtAxis {
|
||||
Name = 'X2',
|
||||
Parent = 'Y',
|
||||
Token = 'X',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Y_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinX2, MaxX2},
|
||||
Home = MinX2,
|
||||
Geo = 'X2_AXIS/GEO',
|
||||
Aux = {'X2_AXIS/SOLID'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, 0), GDB_RT.GLOB)
|
||||
local Z2Id = EmtAxis {
|
||||
Name = 'Z2',
|
||||
Parent = 'X2',
|
||||
Token = 'Z',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinZ2, MaxZ2},
|
||||
Home = 0,
|
||||
Geo = 'Z2_AXIS/GEO',
|
||||
Aux = {'Z2_AXIS/SOLID'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
||||
local C2Id = EmtAxis {
|
||||
Name = 'C2',
|
||||
Parent = 'Z2',
|
||||
Token = 'C',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( SawDeltaX, SawDeltaY, 0),
|
||||
Stroke = {MinC2, MaxC2},
|
||||
Home = 0,
|
||||
Geo = 'C2_AXIS/GEO',
|
||||
Aux = {'C2_AXIS/SOLID', 'C2_AXIS/COLLISION'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( C2Id, 'COLLISION'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
||||
local B2Id = EmtAxis {
|
||||
Name = 'B2',
|
||||
Parent = 'C2',
|
||||
Token = 'B',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( SawDeltaX, SawDeltaY, SawDeltaZ + SawOffs),
|
||||
Stroke = {MinB2, MaxB2},
|
||||
Home = 90,
|
||||
Geo = 'B2_AXIS/GEO',
|
||||
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( B2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( B2Id, 'COLLISION'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
|
||||
local H2Id = EmtHead {
|
||||
Name = 'H2',
|
||||
Parent = 'B2',
|
||||
HSet = 'H2',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( SawDeltaX, SawDeltaY, SawDeltaZ),
|
||||
TDir = Z_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Rot1W = 0.2,
|
||||
OthColl = {'B2/SOLID', 'C2/SOLID'},
|
||||
Geo = 'H2_HEAD/GEO'}
|
||||
-- Foratore
|
||||
local Z3Id = EmtAxis {
|
||||
Name = 'Z3',
|
||||
Parent = 'Y',
|
||||
Token = 'Z',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinZ3, MaxZ3},
|
||||
Home = 0,
|
||||
Geo = 'Z3_AXIS/GEO',
|
||||
Aux = {'Z3_AXIS/SOLID'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( Z3Id, 'SOLID'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
|
||||
local X3Id = EmtAxis {
|
||||
Name = 'X3',
|
||||
Parent = 'Z3',
|
||||
Token = 'X',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Y_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinX3, MaxX3},
|
||||
Home = HomeX3,
|
||||
Geo = 'X3_AXIS/GEO',
|
||||
Aux = {'X3_AXIS/SOLID'}}
|
||||
EgtMove( EgtGetFirstNameInGroup( X3Id, 'SOLID'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
|
||||
local H5Id = EmtHead {
|
||||
Name = 'H5',
|
||||
Parent = 'X3',
|
||||
HSet = 'H5',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( DrillDeltaX, DrillDeltaY, DrillDeltaZ),
|
||||
TDir = Y_AX(),
|
||||
Geo = 'H5_HEAD/GEO'}
|
||||
EgtSetInfo( H5Id, 'ABOVE', '0')
|
||||
-- ToolChanger
|
||||
local ptTcB = Point3d( -494.6,-4556.6,14.0)
|
||||
EmtTcPos {
|
||||
Name = 'T1',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB,
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB1'}
|
||||
EmtTcPos {
|
||||
Name = 'T2',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 120 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB2'}
|
||||
EmtTcPos {
|
||||
Name = 'T3',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 240 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB3'}
|
||||
EmtTcPos {
|
||||
Name = 'T4',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 360 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB4'}
|
||||
EmtTcPos {
|
||||
Name = 'T5',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 480 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB5'}
|
||||
EmtTcPos {
|
||||
Name = 'T6',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 600 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB6'}
|
||||
EmtTcPos {
|
||||
Name = 'T7',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 720 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB7'}
|
||||
EmtTcPos {
|
||||
Name = 'T8',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 840 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB8'}
|
||||
EmtTcPos {
|
||||
Name = 'T9',
|
||||
Parent = 'Y',
|
||||
Pos = ptTcB + 960 * Y_AX(),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TB9'}
|
||||
EmtTcPos {
|
||||
Name = 'T101',
|
||||
Parent = 'Y',
|
||||
Pos = Point3d(-568.3,-1312.4,9-92.8),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'Y_AXIS/TC1'}
|
||||
EmtTcPos {
|
||||
Name = 'T201',
|
||||
Parent = 'Y',
|
||||
Pos = Point3d(-926.3,-1855.0,28),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TC2'}
|
||||
EmtTcPos {
|
||||
Name = 'T202',
|
||||
Parent = 'Y',
|
||||
Pos = Point3d(-926.3,-2555.0,28),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'Y_AXIS/TC3'}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
||||
--function OnSetTable()
|
||||
--end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function MoveGroup( nGrpId, vtVers, dPos, bLoc)
|
||||
local dVal = EgtGetInfo( nGrpId or GDB_ID.NULL, 'Val')
|
||||
if not dVal then return end
|
||||
if abs( dPos - dVal) > GEO.EPS_SMALL then
|
||||
local nRT = EgtIf( bLoc, GDB_RT.LOC, GDB_RT.GLOB)
|
||||
EgtMove( nGrpId, ( dPos - dVal) * vtVers, nRT)
|
||||
EgtSetInfo( nGrpId, 'Val', dPos)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSetHead()
|
||||
-- impostazioni assi
|
||||
if EMC.HEAD == 'H1' then
|
||||
EmtModifyAxisHome( 'X1', MaxX1)
|
||||
EmtModifyAxisHome( 'Z1', MaxZ1)
|
||||
EmtModifyAxisHome( 'C1', 0)
|
||||
EmtModifyAxisHome( 'B1', 0)
|
||||
elseif EMC.HEAD == 'H3' then
|
||||
EmtModifyAxisHome( 'X1', MidX1)
|
||||
EmtModifyAxisHome( 'Z1', -250)
|
||||
EmtModifyAxisHome( 'C1', 90)
|
||||
EmtModifyAxisHome( 'B1', 0)
|
||||
elseif EMC.HEAD == 'H14' then
|
||||
EmtModifyAxisHome( 'X1', MaxX1)
|
||||
EmtModifyAxisHome( 'Z1', MaxZ1)
|
||||
EmtModifyAxisHome( 'C1', 90)
|
||||
EmtModifyAxisHome( 'B1', 90)
|
||||
end
|
||||
-- abilitazione/disabilitazione graffatrice
|
||||
local dPos = EgtIf( EMC.HEAD == 'H14', 0, 680)
|
||||
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'SOLID'), Z_AX(), dPos, true)
|
||||
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'T1'), Z_AX(), dPos, true)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per resettare tutte le attivazioni della macchina
|
||||
function OnResetMachine()
|
||||
EmtUnlinkAllRawPartsFromGroups()
|
||||
EmtUnlinkAllFixturesFromGroups()
|
||||
-- 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
|
||||
Binary file not shown.
@@ -0,0 +1,742 @@
|
||||
-- Processore macchina Essetre-WALL by EgalTech s.r.l. 2023/03/14
|
||||
-- Con controllo numerico NUM
|
||||
-- 2023/03/13 DS Prima versione.
|
||||
|
||||
-- Variabili di modulo
|
||||
local MLE_INFO = 'Essetre-WALL.NUM.mlpe ver.'..PP_VER..' by EgalTech s.r.l.'
|
||||
local TEST_USE = false
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** GENERATION ***
|
||||
---------------------------------------------------------------------
|
||||
function OnStart()
|
||||
EMT.USETO1 = false -- abilitazione uso origine tavola
|
||||
EMT.MODAL = true -- abilitazione emissione modale
|
||||
EMT.INCHES = false -- unità di misura mm/inches
|
||||
EMT.NUM = false -- abilitazione numerazione linee
|
||||
--EMT.Nt = 'N' -- token per la numerazione di linea
|
||||
--EMT.LINENBR = 0 -- numero di linea
|
||||
--EMT.LINEINC = 1 -- incremento numerazione linee
|
||||
--EMT.Ft = 'F' -- token per feed
|
||||
--EMT.St = 'S' -- token per speed
|
||||
EMT.FMAXPINZE = 154000 -- feed massima pinze
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnEnd()
|
||||
-- Ripristino fase iniziale come corrente
|
||||
EgtSetCurrPhase( 1)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnProgramStart()
|
||||
-- Info da gruppo BtlInfo (se mancano prova dal gruppo di lavoro corrente)
|
||||
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or EgtGetCurrMachGroup() or GDB_ID.NULL
|
||||
EMT.ORIG = EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 1
|
||||
EMT.LOAD90 = EgtGetInfo( BtlInfoId, 'LOAD90', 'i') or 0
|
||||
-- Intestazioni
|
||||
if not TEST_USE then
|
||||
EMT.PRODID = EgtGetInfo( BtlInfoId, 'PRODID', 'i') or 0
|
||||
EMT.PATTID = EgtGetInfo( BtlInfoId, 'PATTID', 'i') or 0
|
||||
end
|
||||
if EMT.PATTID and EMT.PATTID > 0 then
|
||||
EmtOutput( '%' .. tostring( EMT.PATTID) .. '.0')
|
||||
else
|
||||
EmtOutput( '%40.0')
|
||||
end
|
||||
if EMT.INFO then
|
||||
EmtOutput( '('..EMT.INFO..')')
|
||||
else
|
||||
EmtOutput( '(Program Start)')
|
||||
end
|
||||
EmtOutput( '('.. MLE_INFO..')')
|
||||
-- Se modalità test vado in posizione sicura
|
||||
if TEST_USE then
|
||||
EmtOutput( 'G77 H9000 N1000 N2000')
|
||||
end
|
||||
-- Parametri macchina
|
||||
local sOut = 'G114'..' EA'..EgtNumToString( DeltaTabY - SawDeltaY + DimTabY, -2)..' EB'..EgtNumToString( -DeltaTabX + SawDeltaX, -2)..
|
||||
' EC'..EgtNumToString( DeltaTabZ - SawDeltaZ, -2)..' ED'..EgtNumToString( SawOffs, -2)..' EE'..EgtNumToString( 0, -2)..
|
||||
' EF'..EgtNumToString( DeltaTabY + DimTabY, -2)..' EG'..EgtNumToString( -DeltaTabX, -2)..
|
||||
' EH'..EgtNumToString( DeltaTabZ, -2)..' EI'..EgtNumToString( MillOffs, -2)..
|
||||
' EL'..EgtNumToString( DeltaTabY - NailDeltaY + DimTabY, -2)..' EM'..EgtNumToString( -DeltaTabX + NailDeltaX, -2)..
|
||||
' EN'..EgtNumToString( DeltaTabZ - NailDeltaZ, -2)..' EO'..EgtNumToString( DeltaTabY - DrillDeltaY + DimTabY, -2)..
|
||||
' EP'..EgtNumToString( -DeltaTabX + DrillDeltaX, -2)..' EQ'..EgtNumToString( DeltaTabZ - DrillDeltaZ, -2)
|
||||
EmtOutput( sOut)
|
||||
-- Indice lavorazione
|
||||
EMT.CNT = 0
|
||||
-- Non effettuate lavorazioni con sega a catena sul fianco
|
||||
EMT.CSAWFIRST = true
|
||||
-- Non effettuata pausa per rimozione sfridi
|
||||
EMT.SCRAPFIRST = true
|
||||
-- Cerco primo utensile su testa 1
|
||||
EMT.TOOL_1, EMT.TLEN_1 = FindFirstToolOnHead( 'H1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnProgramEnd()
|
||||
EmtOutput( '( *** Program End *** )')
|
||||
EmitCount()
|
||||
-- Dichiarazione conclusione pezzi
|
||||
if EMT.PRODID then
|
||||
local PartId = EgtGetFirstPartInRawPart( EMT.RAWID)
|
||||
while PartId do
|
||||
local CutId = EgtGetInfo( PartId, 'CUTID', 'i') or 0
|
||||
local sOut = 'G126 EA'..tostring( EMT.PRODID)..' EB'..tostring( EMT.PATTID)..' EC'..tostring( CutId)..' ED2'
|
||||
EmtOutput( sOut)
|
||||
PartId = EgtGetNextPartInRawPart( PartId)
|
||||
end
|
||||
end
|
||||
-- Arresto mandrino
|
||||
EmtOutput( 'M05 E80000=1')
|
||||
-- Tipo di scarico
|
||||
if not TEST_USE then
|
||||
EmtOutput( '(M12 $PRESS START FOR CLEANING)')
|
||||
EmtOutput( 'M27 E30057=0')
|
||||
end
|
||||
-- Se modalità test, termino il programma
|
||||
if TEST_USE then
|
||||
EmtOutput( 'M02')
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnToolData()
|
||||
-- emissione dati utensile (esclusa lama e sega a catena)
|
||||
if EMT.HEAD == 'H1' then
|
||||
-- cerco posizione di attrezzaggio del primo utensile di lavorazione
|
||||
if EMT.TOOL == EMT.TOOL_1 and EMT.TLEN_1 < 215.5 then
|
||||
EMT.TCPOS_1 = EMT.TCPOS
|
||||
end
|
||||
-- emissione dati sega a catena
|
||||
elseif EMT.HEAD == 'H3' then
|
||||
;
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnDispositionStart()
|
||||
--EmtOutput( '(Disposition '..EMT.DISPIND..' = '..EMT.DISPID..')')
|
||||
EMT.OPEISDISP = true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnDispositionEnd()
|
||||
-- Se prima disposizione
|
||||
if EMT.PHASE == 1 then
|
||||
-- Dimensioni grezzo
|
||||
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
|
||||
EMT.LP = b3Raw:getDimX()
|
||||
EMT.HP = b3Raw:getDimY()
|
||||
EMT.SP = b3Raw:getDimZ()
|
||||
EmtOutput( 'E30050='..EgtNumToString( 1000 * EMT.HP, 0)..
|
||||
' E30051='..EgtNumToString( 1000 * EMT.LP, 0)..
|
||||
' E30052='..EgtNumToString( 1000 * EMT.SP, 0))
|
||||
-- Posizione cuffia
|
||||
local dHCuff = b3Raw:getDimZ() + 32
|
||||
EmtOutput( 'E30039=' .. EgtNumToString( dHCuff * 1000, 0))
|
||||
-- Eventuale salto a lavorazione in corso
|
||||
EmtOutput( 'G79 NE80000')
|
||||
-- Lancio del carico
|
||||
EmitCount()
|
||||
if not TEST_USE then
|
||||
EmtOutput( 'M26 E30054=' .. EgtIf( EMT.LOAD90 == 1, '5', '1'))
|
||||
end
|
||||
-- Dichiarazione inizio lavorazione pezzi
|
||||
if EMT.PRODID then
|
||||
EmitCount()
|
||||
local PartId = EgtGetFirstPartInRawPart( EMT.RAWID)
|
||||
while PartId do
|
||||
local CutId = EgtGetInfo( PartId, 'CUTID', 'i') or 0
|
||||
local sOut = 'G126 EA'..tostring( EMT.PRODID)..' EB'..tostring( EMT.PATTID)..' EC'..tostring( CutId)..' ED1'
|
||||
EmtOutput( sOut)
|
||||
PartId = EgtGetNextPartInRawPart( PartId)
|
||||
end
|
||||
end
|
||||
end
|
||||
EMT.OPEISDISP = false
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnTableData()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnFixtureData()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnRawMoveData()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnToolSelect()
|
||||
-- se utensile definito (non definito per disposizioni con movimento)
|
||||
if EMT.TOOL ~= '' then
|
||||
-- verifiche su utensile
|
||||
local sTool = EgtTdbGetToolFromUUID( EgtGetMachiningParam( MCH_MP.TUUID) or "")
|
||||
if sTool ~= EMT.TOOL then EmtSetLastError( 1213, 'Tool name mismatch') end
|
||||
-- predefinite EMT.TCPOS EMT.HEAD EMT.EXIT
|
||||
EMT.TOOLTYPE = EgtTdbGetCurrToolParam( MCH_TP.TYPE)
|
||||
EMT.TOOLSEL = EMT.TCPOS..' M06'
|
||||
EMT.TDIAM = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
|
||||
EMT.TTOTDIAM = EgtTdbGetCurrToolParam( MCH_TP.TOTDIAM)
|
||||
EMT.TLEN = EgtTdbGetCurrToolParam( MCH_TP.LEN)
|
||||
EMT.TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnToolDeselect()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnMachiningStart()
|
||||
--EMT.MCHLIBNAME = EgtGetMachiningParam( MCH_MP.NAME)
|
||||
EMT.MCHNAME = EgtGetOperationName( EMT.MCHID)
|
||||
EMT.MCHTYPE = EgtGetMachiningParam(MCH_MP.TYPE)
|
||||
-- non ancora iniziata la lavorazione
|
||||
EMT.MCHFIRST = true
|
||||
-- primo posizionamento sempre in globale
|
||||
EMT.REFLOC = nil
|
||||
EMT.IPLGL = false
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnMachiningEnd()
|
||||
if not EMT.ZMAX and not IsNailingHead( EMT.HEAD) then
|
||||
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
|
||||
end
|
||||
EMT.PREVTOOL = EMT.TOOL
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnPathStart()
|
||||
-- reset valori precedenti (per forzare emissione di tutti gli assi del 1° movimento)
|
||||
EmtResetPrev()
|
||||
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 = EgtMdbGetGeneralParam( MCH_GP.SAFEZ)
|
||||
local sEB = ' EB0'
|
||||
if EMT.TO_ZMAX then
|
||||
sEB = ' EB1'
|
||||
EMT.TO_ZMAX = nil
|
||||
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'..
|
||||
' W'..EmtLenToString( dSafeZ, 3)..EMT.NAIL_END)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnRapid()
|
||||
-- se primo movimento della lavorazione, gestione speciale
|
||||
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EmtOutput( '( *** '..EMT.MCHNAME..'/'..EMT.TOOL..' *** )')
|
||||
EmitCount()
|
||||
-- se lavorazione con sega a catena
|
||||
if EMT.HEAD == 'H3' then
|
||||
-- se prima lavorazione sui fianchi con sega a catena
|
||||
if EMT.CSAWFIRST and string.sub( EMT.MCHNAME, 1, 5) == 'Csaw_' then
|
||||
EMT.CSAWFIRST = false
|
||||
-- eventuale pausa per rimozione sfridi
|
||||
if EMT.SCRAPFIRST then
|
||||
EMT.SCRAPFIRST = false
|
||||
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
|
||||
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
|
||||
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
|
||||
end
|
||||
-- pre-posizionamento
|
||||
EmitCount()
|
||||
EmtResetPrev()
|
||||
local sOut = 'G101' .. EmtGetAxis( 'R1')
|
||||
local sET = GetET()
|
||||
local sEU = GetEU()
|
||||
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 sER = ' ER' .. EmtLenToString( EMT.TLEN, 3)
|
||||
sOut = sOut .. sET .. sEU .. sEF .. sEM .. sES .. sEL .. sER
|
||||
EmtOutput( sOut)
|
||||
end
|
||||
-- altrimenti verifico se necessaria pausa
|
||||
else
|
||||
if EMT.SCRAPFIRST and EgtExistsInfo( EMT.MCHID, 'MOVE_AFTER') then
|
||||
EMT.SCRAPFIRST = false
|
||||
-- pausa per rimozione sfridi
|
||||
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
|
||||
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
|
||||
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
|
||||
end
|
||||
end
|
||||
-- primo posizionamento
|
||||
EmtResetPrev()
|
||||
if EMT.HEAD ~= 'H5' then
|
||||
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' then
|
||||
sOut = sOut .. ' U' .. EmtLenToString( MinX2, 3) .. ' W0 V90 A0'
|
||||
elseif EMT.HEAD == 'H2' then
|
||||
sOut = sOut .. ' U' .. EmtLenToString( MaxX1, 3) .. ' W0 V0 A0'
|
||||
else
|
||||
EmtSetLastError( 1211, "Unknown Head : " .. EMT.HEAD)
|
||||
end
|
||||
local sET = GetET()
|
||||
local sEU = GetEU()
|
||||
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 sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||
sOut = sOut .. sET .. sEU .. sEF .. sEM .. sES .. sEL .. sER
|
||||
if not IsNailingHead( EMT.HEAD) then
|
||||
EmtOutput( sOut)
|
||||
end
|
||||
EMT.REFLOC = 0
|
||||
EMT.MCHFIRST = false
|
||||
EMT.ZMAX = false
|
||||
else -- H5 (foratore orizzontale)
|
||||
-- rinvio l'emissione al prossimo movimento con Z del foro
|
||||
EMT.FIRST_HDRILL = true
|
||||
EMT.REFLOC = nil
|
||||
EMT.MCHFIRST = false
|
||||
end
|
||||
-- se standard
|
||||
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
|
||||
-- se prima emissione di foratura orizzontale
|
||||
if EMT.FIRST_HDRILL then
|
||||
EMT.FIRST_HDRILL = false
|
||||
local sET = GetET()
|
||||
local sEU = GetEU()
|
||||
EMT.L1 = -EMT.L1
|
||||
local sOut = 'G101 X0' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L3')..' U0 V0 W0'..sET..sEU..' EF60000'
|
||||
EmtOutput( sOut)
|
||||
EMT.L1 = -EMT.L1
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EmtResetPrev()
|
||||
local sEF = ' EF20000'
|
||||
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||
local sX = ' X40'
|
||||
local sEX = ' EX0'
|
||||
sOut = 'G102' .. sX ..' Y0 Z0'..sEX..' EY'..EmtLenToString( EMT.L1)..' EZ'..EmtLenToString( EMT.L3) .. ' EA0 EB0 EC0 ED0' .. sET .. sEU .. sEM .. sEF
|
||||
EmtOutput( sOut)
|
||||
EMT.ZMAX = false
|
||||
-- se necessario, impostazione riferimento locale
|
||||
elseif EMT.REFLOC == 0 then
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = 1
|
||||
-- trasformo i punti nel piano
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EMT.L1p = nil
|
||||
EMT.L2p = nil
|
||||
EMT.L3p = nil
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
local sET = GetET()
|
||||
local sEU = GetEU()
|
||||
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 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..sEF..sEM..sES..sEL..sER)
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
EmtOutput( sOut)
|
||||
else
|
||||
EMT.NAIL_START_L1 = EMT.L1
|
||||
EMT.NAIL_START_L2 = EMT.L2
|
||||
EMT.NAIL_START_L3 = EMT.L3
|
||||
EMT.NAIL_END_L1 = EMT.L1
|
||||
EMT.NAIL_END_L2 = EMT.L2
|
||||
EMT.NAIL_END = EMT.IPLGLSTR..sET..sEU..sEF..sEM..sES..sEL..sER
|
||||
end
|
||||
else
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
-- emissione movimento
|
||||
if not IsNailingHead( EMT.HEAD) then
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
EmtOutput( sOut)
|
||||
else
|
||||
if EMT.L1 then EMT.NAIL_END_L1 = EMT.L1 end
|
||||
if EMT.L2 then EMT.NAIL_END_L2 = EMT.L2 end
|
||||
if EMT.L3 and EMT.L3 < EMT.NAIL_START_L3 then
|
||||
EMT.NAIL_START_L3 = EMT.L3
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se altrimenti risalita a Z max a fine lavorazione
|
||||
elseif EMT.FLAG == 3 then
|
||||
if not IsNailingHead( EMT.HEAD) then
|
||||
if EMT.REFLOC then
|
||||
EMT.REFLOC = nil
|
||||
EMT.IPLGL = false
|
||||
EmtResetPrev()
|
||||
-- dichiarazione fine lavorazione
|
||||
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
local sOut = 'G101' .. EmtGetAxis( 'L3') .. EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. GetET() .. GetEF()
|
||||
EmtOutput( sOut)
|
||||
EMT.ZMAX = true
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
EmtResetPrev()
|
||||
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EMT.ZMAX = true
|
||||
end
|
||||
else
|
||||
EMT.TO_ZMAX = true
|
||||
end
|
||||
-- se altrimenti movimento in Home
|
||||
elseif EMT.FLAG == 4 then
|
||||
-- non previsto
|
||||
-- altrimenti errore
|
||||
else
|
||||
EmtSetLastError( 1214, 'Unknown Rapid flag')
|
||||
end
|
||||
-- aggiorno valori come precedenti
|
||||
EmtUpdatePrev()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnLinear()
|
||||
-- se prima emissione di foratura orizzontale
|
||||
if EMT.FIRST_HDRILL then
|
||||
EMT.FIRST_HDRILL = false
|
||||
local sET = GetET()
|
||||
local sEU = GetEU()
|
||||
EMT.L1 = -EMT.L1
|
||||
local sOut = 'G101 X0' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L3')..' U0 V0 W0'..sET..sEU..' EF60000'
|
||||
EmtOutput( sOut)
|
||||
EMT.L1 = -EMT.L1
|
||||
-- salvo posizione attuale
|
||||
local OldL1 = EMT.L1
|
||||
local OldL2 = EMT.L2
|
||||
local OldL3 = EMT.L3
|
||||
local OldR1p = EMT.R1p
|
||||
local OldR2p = EMT.R2p
|
||||
-- trasformo i punti
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EmtResetPrev()
|
||||
local sEF = ' EF20000'
|
||||
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||
local sX = ' X40'
|
||||
local sEX = ' EX0'
|
||||
sOut = 'G102' .. sX ..' Y0 Z0'..sEX..' EY'..EmtLenToString( EMT.L1)..' EZ'..EmtLenToString( EMT.L3) .. ' EA0 EB0 EC0 ED0' .. sET .. sEU .. sEM .. sEF
|
||||
EmtOutput( sOut)
|
||||
-- ripristino posizione attuale
|
||||
EMT.L1 = OldL1
|
||||
EMT.L2 = OldL2
|
||||
EMT.L3 = OldL3
|
||||
EMT.R1p = OldR1p
|
||||
EMT.R2p = OldR2p
|
||||
EMT.ZMAX = false
|
||||
-- se necessario, impostazione riferimento locale
|
||||
elseif EMT.REFLOC == 0 then
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = 1
|
||||
-- salvo posizione attuale
|
||||
local OldL1 = EMT.L1
|
||||
local OldL2 = EMT.L2
|
||||
local OldL3 = EMT.L3
|
||||
local OldR1p = EMT.R1p
|
||||
local OldR2p = EMT.R2p
|
||||
-- imposto posizione precedente
|
||||
EMT.L1 = EMT.L1o
|
||||
EMT.L2 = EMT.L2o
|
||||
EMT.L3 = EMT.L3o
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
-- trasformo i punti nel piano
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
local sET = GetET()
|
||||
local sEU = GetEU()
|
||||
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 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..sEF..sEM..sES..sEL..sER)
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
EmtOutput( sOut)
|
||||
else
|
||||
EMT.NAIL_START_L1 = EMT.L1
|
||||
EMT.NAIL_START_L2 = EMT.L2
|
||||
EMT.NAIL_START_L3 = EMT.L3
|
||||
EMT.NAIL_END_L1 = EMT.L1
|
||||
EMT.NAIL_END_L2 = EMT.L2
|
||||
EMT.NAIL_END = EMT.IPLGLSTR..sET..sEU..sEF..sEM..sES..sEL..sER
|
||||
end
|
||||
-- ripristino posizione attuale
|
||||
EMT.L1 = OldL1
|
||||
EMT.L2 = OldL2
|
||||
EMT.L3 = OldL3
|
||||
EMT.R1p = OldR1p
|
||||
EMT.R2p = OldR2p
|
||||
end
|
||||
|
||||
-- aggiustamento valori
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
|
||||
if not IsNailingHead( EMT.HEAD) then
|
||||
-- valori degli assi
|
||||
local sAxes
|
||||
if EMT.HEAD ~= 'H5' then
|
||||
sAxes = EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
else
|
||||
sAxes = EmtGetAxis('L2')
|
||||
end
|
||||
-- se nulla da emettere, esco
|
||||
if #sAxes == 0 then
|
||||
return
|
||||
end
|
||||
-- aggiungo feed
|
||||
local sFeed = EmtGetFeed()
|
||||
-- emetto linea
|
||||
EmtOutput( "G1"..sAxes..sFeed)
|
||||
-- eventuale gestione fondo foro
|
||||
if EMT.FLAG == 101 and EMT.HEAD == 'H5' then
|
||||
EmtOutput( 'M155')
|
||||
end
|
||||
else
|
||||
if EMT.L1 then EMT.NAIL_END_L1 = EMT.L1 end
|
||||
if EMT.L2 then EMT.NAIL_END_L2 = EMT.L2 end
|
||||
if EMT.L3 and EMT.L3 < EMT.NAIL_START_L3 then
|
||||
EMT.NAIL_START_L3 = EMT.L3
|
||||
end
|
||||
end
|
||||
|
||||
-- aggiorno valori come precedenti
|
||||
EmtUpdatePrev()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnArc()
|
||||
-- non modale su archi
|
||||
local dPrevZ = EMT.L3p
|
||||
EmtResetPrevLinear()
|
||||
-- aggiustamento valori
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
|
||||
if not IsNailingHead( EMT.HEAD) then
|
||||
-- valori degli assi
|
||||
local sAxes = EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
-- se nulla da emettere, esco
|
||||
if string.len( sAxes) == 0 then
|
||||
return
|
||||
end
|
||||
-- valori delle coordinate del centro
|
||||
EmtAdjustCenterAxes()
|
||||
-- coordinate centro (per ora solo archi nel piano XY)
|
||||
--local sCen = ' ' .. EMT.C1t .. EmtLenToString(EMT.C1,3) ..
|
||||
-- ' ' .. EMT.C2t .. EmtLenToString(EMT.C2,3)
|
||||
-- raggio
|
||||
local sRad = ' ' .. EMT.RRt .. EmtLenToString(EMT.RR,3)
|
||||
-- aggiungo feed
|
||||
local sFeed = EmtGetFeed()
|
||||
-- tipo arco
|
||||
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
||||
-- se elica, aggiungo il pitch
|
||||
local sPitch = ''
|
||||
local dDeltaZ = EMT.L3 - dPrevZ
|
||||
if abs( dDeltaZ) > GEO.EPS_SMALL then
|
||||
local dPitch = dDeltaZ * 360.0 / abs( EMT.AC)
|
||||
sPitch = ' K' .. EmtLenToString( dPitch, 3)
|
||||
end
|
||||
-- emetto arco
|
||||
EmtOutput( sArc..sAxes..sRad..sPitch..sFeed)
|
||||
else
|
||||
-- Archi non previsti con chiodature
|
||||
EmtSetLastError( 1212, 'Arcs non allowed with nailing')
|
||||
end
|
||||
|
||||
-- aggiorno valori come precedenti
|
||||
EmtUpdatePrev()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function MyAdjustLinearAxes()
|
||||
if EMT.REFLOC then
|
||||
local vtDelta = V_NULL()
|
||||
local vtE = V_NULL()
|
||||
if EMT.HEAD == 'H1' then
|
||||
local Len = EMT.TLEN + MillOffs
|
||||
local LenRef = MillOffs
|
||||
local vtTool = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtTool * Len - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H2' then
|
||||
vtDelta = -Vector3d( SawDeltaX, SawDeltaY, SawDeltaZ)
|
||||
local Len = EMT.TLEN + SawOffs
|
||||
local LenRef = SawOffs
|
||||
local vtTool = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtTool * Len - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H3' then
|
||||
local Len = ChSawLen + MillOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * Len - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H14' then
|
||||
vtDelta = -Vector3d( NailDeltaX, NailDeltaY, NailDeltaZ)
|
||||
vtE = Z_AX() * EMT.TLEN
|
||||
end
|
||||
EMT.L1 = EMT.L1 - vtDelta:getX() - vtE:getX()
|
||||
EMT.L2 = EMT.L2 - vtDelta:getY() - vtE:getY()
|
||||
EMT.L3 = EMT.L3 - vtDelta:getZ() - DeltaTabZ - vtE:getZ()
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
EMT.L1 = EMT.L1 - DeltaTabX + DrillDeltaX
|
||||
EMT.L2 = EMT.L2 - DeltaTabY + DrillDeltaY - DimTabY - EMT.TLEN
|
||||
EMT.L3 = EMT.L3 - DeltaTabZ + DrillDeltaZ
|
||||
end
|
||||
|
||||
EmtAdjustLinearAxes()
|
||||
|
||||
if not EMT.REFLOC then
|
||||
EMT.L1 = - EMT.L1
|
||||
EMT.L1t = 'Y'
|
||||
EMT.L2t = 'X'
|
||||
else
|
||||
EMT.L1t = 'X'
|
||||
EMT.L2t = 'Y'
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function CalcInterpPlane()
|
||||
-- origine del piano
|
||||
local xS = EMT.START[1]
|
||||
local yS = EMT.START[2]
|
||||
local zS = EgtIf( IsNailingHead( EMT.HEAD), EMT.SP, 0)
|
||||
local ptS = Point3d( xS, yS, zS)
|
||||
-- calcolo per piano generico
|
||||
local vtE
|
||||
if EMT.HEAD == 'H1' 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
|
||||
EMT.IPLGLFR = Frame3d( ptS, vtE)
|
||||
else
|
||||
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 + 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
|
||||
end
|
||||
-- A seconda del corner di riferimento scelto togliere o meno da EX DimTabY e da EY DimTabX (BL non li usa, TR li richiede entrambi)
|
||||
local xOut = yS - DeltaTabY - DimTabY
|
||||
local yOut = - ( xS - DeltaTabX)
|
||||
local zOut = zS
|
||||
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()
|
||||
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
|
||||
return ' ET2'
|
||||
elseif EMT.HEAD == 'H2' then
|
||||
return ' ET1'
|
||||
elseif EMT.HEAD == 'H5' then
|
||||
return ' ET3'
|
||||
elseif EMT.HEAD == 'H14' then
|
||||
return ' ET1'
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetEU()
|
||||
local sEU
|
||||
if EMT.HEAD == 'H1' then
|
||||
sEU = ' EU'..string.sub( EMT.TCPOS, 2)
|
||||
elseif EMT.HEAD == 'H2' then
|
||||
sEU = ' EU0'
|
||||
elseif EMT.HEAD == 'H3' then
|
||||
if abs( EMT.R3 - 0) < 0.1 then
|
||||
sEU = ' EU104'
|
||||
elseif abs( EMT.R3 - 270) < 0.1 then
|
||||
sEU = ' EU101'
|
||||
elseif abs( EMT.R3 - 180) < 0.1 then
|
||||
sEU = ' EU102'
|
||||
elseif abs( EMT.R3 - 90) < 0.1 then
|
||||
sEU = ' EU103'
|
||||
else
|
||||
EmtSetLastError( 1210, 'Chain saw orientation not allowed')
|
||||
end
|
||||
else
|
||||
sEU = ' EU0'
|
||||
end
|
||||
return sEU
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetEF()
|
||||
return ' EF60000'
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function EmitCount()
|
||||
EMT.CNT = EMT.CNT + 1
|
||||
EmtOutput( 'N'..tostring( EMT.CNT)..' E80000='..tostring( EMT.CNT))
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function IsNailingHead( sHead)
|
||||
return ( sHead == 'H14')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetValNotes( sNotes, sKey, sType)
|
||||
local vsChunk = EgtSplitString( sNotes or '', ';')
|
||||
local dVal
|
||||
for i = 1, #vsChunk do
|
||||
local dTmp = EgtGetVal( vsChunk[i], sKey, sType)
|
||||
if dTmp then dVal = dTmp end
|
||||
end
|
||||
return dVal
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** END GENERATION ***
|
||||
---------------------------------------------------------------------
|
||||
+1077
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,67 @@
|
||||
-- Special Operations macchina Essetre-WALL by EgalTech s.r.l. 2023/03/14
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
EgtOutLog ( '** Essetre-WALL.mlse '..PP_VER..' **', 1)
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSpecialMoveZup()
|
||||
|
||||
-- Inizializzazioni
|
||||
EMC.MODIF = false
|
||||
EMC.ERR = 1
|
||||
|
||||
-- Se fresa
|
||||
if EMC.HEAD == 'H1' 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 altrimenti sega a catena
|
||||
elseif EMC.HEAD == 'H3' then
|
||||
local L3New = EMC.L3
|
||||
local R1New = EMC.R1
|
||||
local R2New = EMC.R2
|
||||
if EMC.L3 > -300 then
|
||||
L3New = min( EMC.L3, -250)
|
||||
R1New = EgtGetAxisHomePos( 'C1')
|
||||
R2New = EgtGetAxisHomePos( 'B1')
|
||||
EMC.MODIF = true
|
||||
end
|
||||
if EMC.L2 > -1200 then
|
||||
R1New = 180
|
||||
EMC.MODIF = true
|
||||
elseif EMC.L2 < -4700 then
|
||||
R1New = 0
|
||||
EMC.MODIF = true
|
||||
end
|
||||
if EMC.MODIF then
|
||||
EMC.L3 = L3New
|
||||
EMC.R1 = R1New
|
||||
EMC.R2 = R2New
|
||||
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2, EMC.R3)
|
||||
end
|
||||
-- se altrimenti lama
|
||||
elseif EMC.HEAD == 'H2' then
|
||||
if EMC.L3 > -200 then
|
||||
EMC.R1 = EgtGetAxisHomePos( 'C2')
|
||||
EMC.R2 = EgtGetAxisHomePos( 'B2')
|
||||
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
|
||||
EMC.MODIF = true
|
||||
end
|
||||
-- se foratore orizzontale
|
||||
elseif EMC.HEAD == 'H5' then
|
||||
;
|
||||
-- se chiodatrice
|
||||
elseif EMC.HEAD == 'H14' then
|
||||
;
|
||||
-- altrimenti errore
|
||||
else
|
||||
error( "Unknown Head")
|
||||
end
|
||||
EMC.ERR = 0
|
||||
end
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,36 @@
|
||||
-- 2018/11/21 17:30:00
|
||||
-- Machining Exit for Essetre-FAST 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-FAST 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,208 @@
|
||||
-- 2023/03/14
|
||||
-- Gestione attrezzaggio per Essetre-Wall con caso speciale fresa possibile anche su T101.
|
||||
|
||||
-- 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 = "H1", Group = "G1"},
|
||||
{Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos3", TcPos = "T3", 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 = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos10", TcPos = "T42", Head = "H2", Group = "G2"},
|
||||
{Pos = "Pos11", TcPos = "T101", Head = "H3", Group = "G2"},
|
||||
{Pos = "Pos12", TcPos = "T201", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos13", TcPos = "T202", Head = "H1", Group = "G2"},
|
||||
{Pos = "Pos14", TcPos = "T14", Head = "H14", Group = "G2"},
|
||||
{Pos = "Pos15", TcPos = "T301", Head = "H5", Group = "G3"}}
|
||||
|
||||
local UsePositionHead = false
|
||||
|
||||
local function IsInGeomSet( ToolHead, PosHead)
|
||||
-- speciale per questa macchina
|
||||
if ToolHead == 'H1' and PosHead == 'H3' then
|
||||
return true
|
||||
end
|
||||
-- standard
|
||||
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( STU.HEAD, PositionTable[i].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
|
||||
@@ -0,0 +1,17 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
[General]
|
||||
Pos1=T1
|
||||
Pos2=T2;H1;1/0A54F32E-C48D-45DB-8502-953CA94FD7A0/NUTFRAESER_25x130
|
||||
Pos3=T3;H1;1/951FD4FC-EB64-44E3-97E0-348DBBD79C68/Smusso45
|
||||
Pos4=T4;H1;1/8A2B00DE-C8F3-4AE6-8C51-D9D6FAEC36F6/SPIRAL_FREASER_40x160
|
||||
Pos5=T5;H1;1/294F6AD8-E4BE-41BF-ACDA-A9F812413607/Smusso60
|
||||
Pos6=T6
|
||||
Pos7=T7;H1;1/E51AC36C-31A5-4C27-9517-E3E33AED5604/NUTFRAESER_80X305
|
||||
Pos8=T8;H1;1/23052E85-6EED-4FC8-89CF-92AA95F22D2A/NUTFRAESER_20x130
|
||||
Pos9=T9
|
||||
Pos10=T42;H2;1/6CB00A83-DDCD-49E6-A301-E1A0482615CA/Sageblatt_1000
|
||||
Pos11=T101;H1;1/89157C3F-9444-45CE-91B0-391C8AAD8693/WALZENFRAESER_200
|
||||
Pos12=T201;H1;1/3AC43952-CC00-44CC-AF54-9C27714C344D/WALZENFRAESER_350X60
|
||||
Pos13=T202;H1;1/EF2F6C56-D37D-4AF4-9C5E-8802CDF0F276/WALZENFRAESER_350X20
|
||||
Pos14=T14;H14;1/9580BE15-3B48-4903-BBED-F4F0912E0A28/14
|
||||
Pos15=T301;H5;1/988C8FE5-70C2-418A-B8EA-53476324D1ED/Bohrer_D35X1800
|
||||
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.
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.
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
-- CutData.lua by Egaltech s.r.l. 16/02/2021 11:50:31
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local CutData = {
|
||||
{ On = true, Name = 'Cutting1000', Type = 'Standard'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return CutData
|
||||
@@ -0,0 +1,12 @@
|
||||
-- DrillData.lua by Egaltech s.r.l. 14/03/2023 09:56:29
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local DrillData = {
|
||||
{ On = true, Name = 'DrillD35', Type = 'Drill'},
|
||||
{ On = true, Name = 'DrillPockD40', Type = 'Pocket'},
|
||||
{ On = true, Name = 'DrillPockD25', Type = 'Pocket'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return DrillData
|
||||
@@ -0,0 +1,25 @@
|
||||
[Cut]
|
||||
1=Standard
|
||||
|
||||
[Drill]
|
||||
1=Drill
|
||||
2=Pocket
|
||||
|
||||
[Milling]
|
||||
1=FreeContour
|
||||
2=Side
|
||||
3=SideGroove
|
||||
4=DtMortise
|
||||
5=Mark
|
||||
6=Text
|
||||
7=CleanCorner60
|
||||
8=CleanCorner30
|
||||
9=Nailing
|
||||
|
||||
[Pocketing]
|
||||
1=Pocket
|
||||
2=OpenPocket
|
||||
3=Mortise
|
||||
|
||||
[Sawing]
|
||||
1=Sawing
|
||||
@@ -0,0 +1,18 @@
|
||||
-- MillingData.lua by Egaltech s.r.l. 14/03/2023 20:41:48
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local MillingData = {
|
||||
{ On = true, Name = 'Spig30x40', Type = 'CleanCorner30'},
|
||||
{ On = true, Name = 'Spig60x70', Type = 'CleanCorner60'},
|
||||
{ On = false, Name = 'Milling200x63', Type = 'SideGroove'},
|
||||
{ On = true, Name = 'Milling200x63', Type = 'Side'},
|
||||
{ On = true, Name = 'SawM_480', Type = 'SideGroove'},
|
||||
{ On = true, Name = 'Milling200x63', Type = 'FreeContour'},
|
||||
{ On = true, Name = 'Milling62x67', Type = 'FreeContour'},
|
||||
{ On = true, Name = 'Milling25x130', Type = 'FreeContour'},
|
||||
{ On = true, Name = 'Nailing_14', Type = 'Nailing'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return MillingData
|
||||
@@ -0,0 +1,14 @@
|
||||
-- PocketingData.lua by Egaltech s.r.l. 14/03/2023 20:12:19
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local PocketingData = {
|
||||
{ On = true, Name = 'Svuot200x63', Type = 'OpenPocket'},
|
||||
{ On = true, Name = 'Svuot62x67', Type = 'OpenPocket'},
|
||||
{ On = true, Name = 'Svuot62x67', Type = 'Pocket'},
|
||||
{ On = true, Name = 'Svuot20x50', Type = 'Pocket'},
|
||||
{ On = true, Name = 'Svuot25x130', Type = 'Pocket'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return PocketingData
|
||||
@@ -0,0 +1,10 @@
|
||||
-- SawingData.lua by Egaltech s.r.l. 12/11/2020 17:56:03
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local SawingData = {
|
||||
{ On = true, Name = 'TaglioCatena', Type = 'Sawing'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return SawingData
|
||||
@@ -0,0 +1,235 @@
|
||||
-- C:\TechnoEssetre7\EgtData\Essetre-90480023_MW.data
|
||||
|
||||
local Offsets = {
|
||||
MIN_X=-5070,
|
||||
MAX_X=0,
|
||||
MIN_Y=-30000,
|
||||
MAX_Y=0,
|
||||
MIN_Z=-1350,
|
||||
MAX_Z=0,
|
||||
MIN_B=-135,
|
||||
MAX_B=135,
|
||||
MIN_C=-275,
|
||||
MAX_C=275,
|
||||
MIN_U=-5840,
|
||||
MAX_U=-770,
|
||||
MIN_W=-1220,
|
||||
MAX_W=0,
|
||||
MIN_V=0,
|
||||
MAX_V=90,
|
||||
MIN_A=-275,
|
||||
MAX_A=275,
|
||||
ZERO_X_SAW=-1273.5,
|
||||
ZERO_Y_SAW=-788.6,
|
||||
ZERO_Z_SAW=-1032.6,
|
||||
PIVOT_SAW=163.5,
|
||||
ZERO_X_MILL=-1278.2,
|
||||
ZERO_Y_MILL=-1137.4,
|
||||
ZERO_Z_MILL=-1115.3,
|
||||
PIVOT_MILL=208,
|
||||
INTRULLI=1200,
|
||||
TYPEWORK=1,
|
||||
ZERO_X_DRILL=-133,
|
||||
ZERO_Y_DRILL=-1441,
|
||||
ZERO_Z_DRILL=0,
|
||||
ZERO_X_NAIL=-1445,
|
||||
ZERO_Y_NAIL=-756,
|
||||
ZERO_Z_NAIL=-1184.4,
|
||||
DELTA_X=0,
|
||||
DELTA_Y=0,
|
||||
DELTA_Z=0,
|
||||
Zzz=1
|
||||
}
|
||||
|
||||
local Trave = {
|
||||
XMIN=10,
|
||||
XMAX=3500,
|
||||
YMIN=50,
|
||||
YMAX=30000,
|
||||
ZMIN=1,
|
||||
ZMAX=400,
|
||||
Zzz=1
|
||||
}
|
||||
|
||||
local User = {
|
||||
VELOCITA_VELOCITARAPIDOFRESE=10000,
|
||||
VELOCITA_VELOCITA_USCITA_LAMA=20000,
|
||||
VELOCITA_FEED_ENTRY=5000,
|
||||
VELOCITA_FEED_EXIT=20000,
|
||||
NESTING_MATERIAL=1,
|
||||
NESTING_TYPEEXTERNALOP=1,
|
||||
NESTING_FROM_BTL=1,
|
||||
NESTING_ORDINA=1,
|
||||
NESTING_NOCOMPAT=0,
|
||||
PROFILES_PROF_SMUSSO=5,
|
||||
PAUSE_ACTIVE_PAUSE=0,
|
||||
SAFETY_DISTANCE_ZSAVE=40,
|
||||
OPTIMIZATIONS_ENABLE_SLICES_F5=0,
|
||||
OPTIMIZATIONS_LENGTH_MAX_SCRAP_F5=799,
|
||||
OPTIMIZATIONS_LENGTH_MAX_SCRAP_F5_P5=1350,
|
||||
OPTIMIZATIONS_ENABLE_SLICES_F6=0,
|
||||
OPTIMIZATIONS_LENGTH_SLICES=150,
|
||||
OPTIMIZATIONS_SYMMETRIC_HEADS_PF=0,
|
||||
OPTIMIZATIONS_RECOVERY_PRINT_ONLY=1,
|
||||
L056_DISTSICUR=5,
|
||||
L056_ENTRY_SPLINTER=10,
|
||||
L056_ACTIVE_AS=1,
|
||||
L055_ADD_P13=0,
|
||||
L055_MODSAG=1,
|
||||
L055_DISTSICUR=20,
|
||||
L055_ENTRY_SPLINTER=20,
|
||||
L055_TOLL_W=0,
|
||||
L055_ACTIVE_AS=1,
|
||||
L051_FORCE_P4=0,
|
||||
L050_ATTIVA_CICLO_L050=0,
|
||||
L050_FORCE_P4=0,
|
||||
L050_ISOOUTSVUOTA=1,
|
||||
L050_ADDDEPTH=0,
|
||||
L050_DIAM_LUNG=1,
|
||||
L050_USE2HEAD=0,
|
||||
L053_ISOOUTSVUOTA=2,
|
||||
L053_DIAM_LUNG=1,
|
||||
L060_PEN_F2=2,
|
||||
L060_PEN_F1=2,
|
||||
L060_ORTHO_WRITER=0,
|
||||
L060_ORTHO_WRITER_ADD_Y=0,
|
||||
L060_DISABLE_L060=0,
|
||||
L060_PEN_POSITION=0,
|
||||
L101_MANUAL_POSITIONING=0,
|
||||
L102_MANUAL_POSITIONING=0,
|
||||
L103_MANUAL_POSITIONING=0,
|
||||
L103_RID_SCALA_SMUSSO=5,
|
||||
L103_ADD_WIDTH=0,
|
||||
L103_ADD_WIDTH_CHAMFER=0,
|
||||
L106_MANUAL_POSITIONING=0,
|
||||
L106_RANGE=0,
|
||||
L106_ADD_WIDTH=0,
|
||||
L106_ASL=0,
|
||||
L106_ASL_DEPTH=0,
|
||||
L138_TOLLERANZA=0,
|
||||
L052_ATTIVA_CICLO_MASCHIO=2,
|
||||
L052_RIDLARGL052=0,
|
||||
L052_REDUCTION=0,
|
||||
L037_FEED_1=2000,
|
||||
L037_FEED_2=4000,
|
||||
L037_FEED_3=3000,
|
||||
L037_MIN_LENGTH_ROT_AXE_A=130,
|
||||
L037_TOOL_WIDTH=0,
|
||||
L034_CHAMFER=0,
|
||||
L034_FEED_CHAMFER=3000,
|
||||
L034_PROF_AS=180,
|
||||
L034_USE_SAW=19,
|
||||
L034_LENGTH_MIN_DIV=900,
|
||||
L032_ADD_P13=0,
|
||||
L032_LENGTH_MIN_DIV=900,
|
||||
T055_DISTSICURTENON=5,
|
||||
T055_RIDP11=1,
|
||||
T055_RIDLARGT055=0,
|
||||
T055_ACTIVE_AS=1,
|
||||
T055_ADDP15=0,
|
||||
T050_REDUCTION=2,
|
||||
T050_RIDLARGT050=0,
|
||||
T050_RIDALTET050=0,
|
||||
T050_FORCE_P4=0,
|
||||
T050_ATTIVA_CICLO_MASCHIO=0,
|
||||
T050_FEED_ENTRY=1500,
|
||||
L040_ADD_P11=1,
|
||||
L040_ADD_P11_PASS=0,
|
||||
L040_OFFSET_P1=-1,
|
||||
L040_OFFSET_P1_MAX_DISTANCE=0,
|
||||
L040_2_DRILLINGS=0,
|
||||
L040_TYPEDRILLING=1,
|
||||
L040_USE2HEAD=0,
|
||||
L017_ATTIVA_CICLO_MASCHIO=0,
|
||||
L017_USAMORTASA_TURN=0,
|
||||
L017_USAMORTASA=0,
|
||||
L017_USE_SAW=0,
|
||||
L017_GLOBAL_CUT=0,
|
||||
L017_P7MAGG90=0,
|
||||
L017_DIAM_LUNG=1,
|
||||
L012_ENABLE_180=0,
|
||||
L012_LIM=1,
|
||||
L012_WORK_F1=0,
|
||||
L012_MM_WORK_F1=0,
|
||||
L012_LENGTH_MIN_DIV=900,
|
||||
L012_USCITA_COMPLUVIO=0,
|
||||
L012_ALT_MAX_LAMA=361,
|
||||
L010_ENABLE_180=0,
|
||||
L010_LIM=0,
|
||||
L010_MM_SLICES=150,
|
||||
L010_LONGITUDINAL_CYCLE=0,
|
||||
L010_LENGTH_MIN_DIV=900,
|
||||
L010_ALT_MAX_LAMA=361,
|
||||
L016_CYCLE_ZPASS=0,
|
||||
L016_USAMORTASA=0,
|
||||
L016_LENGTH_MIN_DIV=2000,
|
||||
L020_DIAM_HOLE=0,
|
||||
L020_OFFSET_P1=0,
|
||||
L020_MANUAL_POSITIONING=0,
|
||||
L020_DIAM_HOLE_INV=0,
|
||||
L020_DOUBLE_HOLE=1,
|
||||
L020_ANTISCHEGGIA_LAMA=0,
|
||||
L020_ALTMAXLAMA=360,
|
||||
L030_NO_CAT_FIN=1,
|
||||
L030_AUM_DIM=0,
|
||||
L030_USE_ONLY_MILLER=0,
|
||||
L030_PAUSE_PARETI=2,
|
||||
L030_DELTA_PORTALE=500,
|
||||
L030_ANTISCHEGGIA_FRESA=0,
|
||||
L030_ANTISCHEGGIA_LAMA=0,
|
||||
L030_ANTISCHEGGIA_LIMITE_MINIMO=0,
|
||||
L030_USE_BIG_MILLER=1,
|
||||
L030_MAX_HAUTEUR_OUTIL_203=350,
|
||||
L030_MAX_LARGEUR_OUTIL_203=250,
|
||||
L030_OFFSET_P1_OUTIL_203=0,
|
||||
L030_SORMONTO_TASCA=0,
|
||||
L030_ATTIVA_CICLO_FEMMINA=0,
|
||||
L030_DISTANCE_FOR_TOOL_TYPE_4=135,
|
||||
L030_USE_SAW_P4_12=16,
|
||||
L030_LENGTH_MIN_DIV=900,
|
||||
L030_OFFSETPIANOCATENA=15,
|
||||
T010_TYPECUT=0,
|
||||
T010_LENGHT_SLICES=400,
|
||||
T010_ADD_EXIT_ORIZZ=26,
|
||||
T010_ADD_EXIT=26,
|
||||
T010_DISTSICURCUT=15,
|
||||
T010_ADD_EXIT_DOLAMA=10,
|
||||
T010_TRONCA_DOPPIA_PENDENZA=0,
|
||||
T010_TRONCATURA_CON_G107=1,
|
||||
T010_DISABILITA_TRONCATURA=0,
|
||||
T010_DOUBLE_CUT_HALF=0,
|
||||
T010_ALT_CAMBIO_TRONCATURA_FAST=360,
|
||||
T010_NO_START_X=0,
|
||||
T010_DIST_INF_HEAD=110,
|
||||
T010_ADD_ENTRY_CUT=20,
|
||||
T010_USACATENA=1,
|
||||
T010_ALTCATENA=362,
|
||||
T010_USA_TRUCIOLATORE=1,
|
||||
T010_OFFSETPIANOCATENA=20,
|
||||
T010_DISABLE_MILLING_AFTER_DIVISION=0,
|
||||
T010_SAFETY_DISTANCE=5,
|
||||
T010_ROT_C_SAW=700,
|
||||
T010_FEED_ENTRY_SAW=4900,
|
||||
T010_USASEMPRECATENA=0,
|
||||
T010_T010ORIZZFINITURA=0,
|
||||
T010_TAGLLAT=0,
|
||||
P010_DEPTH=6,
|
||||
P011_DISTSICURTENON=5,
|
||||
P011_RIDLARGT055=0,
|
||||
P011_RIDP11=2,
|
||||
P011_ACTIVE_AS=1,
|
||||
L038_ACTIVE_CUT=1,
|
||||
L036_LENGTH_MIN_DIV=900,
|
||||
T138_OFFSETTIMBERLAKE=0,
|
||||
WUP_LAVSOLOEST=1,
|
||||
T030_LENGTH_MIN_DIV=500,
|
||||
T030_ANGMAXINF=15,
|
||||
L013_LENGTH_MIN_DIV=2000,
|
||||
P003_ALT_MAX_LAMA=440,
|
||||
P003_OFFSETPIANOCATENA=0,
|
||||
T080_ALTCATENA=399,
|
||||
Zzz=1
|
||||
}
|
||||
|
||||
local Machine = { Offsets=Offsets, Trave=Trave, User=User}
|
||||
return Machine
|
||||
@@ -0,0 +1,81 @@
|
||||
-- WallData.lua by Egaltech s.r.l. 2023/03/16
|
||||
-- Raccolta dati generali per Pareti
|
||||
|
||||
EgtOutLog( ' 90480023_MW-WallData started', 1)
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WallData = {
|
||||
MIN_LENGTH = 100, -- lunghezza minima del grezzo
|
||||
MIN_WIDTH = 100, -- larghezza minima del grezzo
|
||||
MIN_HEIGHT = 10, -- altezza minima del grezzo
|
||||
MAX_LENGTH = 18000, -- lunghezza massima del grezzo
|
||||
MAX_WIDTH = 4900, -- larghezza massima del grezzo
|
||||
MAX_HEIGHT = 400, -- altezza massima del grezzo
|
||||
STD_RAW_LENGTH = 10000, -- lunghezza standard del grezzo
|
||||
STD_RAW_WIDTH = 4000, -- larghezza standard del grezzo
|
||||
OVM_HEAD = 60, -- sovramateriale testa
|
||||
OVM_MID = 50, -- sovramateriale intermedio
|
||||
COLL_SIC = 5, -- distanza di sicurezza per collisioni
|
||||
CUT_SIC = 20, -- distanza di sicurezza per tagli
|
||||
CUT_EXTRA = 3, -- affondamento extra standard per tagli di lama e fresature
|
||||
CUT_EXTRA_MIN = 0, -- affondamento extra ridotto per tagli di lama e fresature
|
||||
NZ_MINA = 0.5, -- componente limite in Z normale di una faccia (-30deg)
|
||||
NZ_MINB = -0.4, -- componente limite in Z normale di un insieme di facce (-23deg)
|
||||
DRILL_TOL = 0.5, -- tolleranza tra diametro foro e diametro punta
|
||||
DRILL_VZ_MIN = 0.5, -- componente limite in Z del versore di un foro
|
||||
DRILL_VX_MAX = 0.866, -- 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
|
||||
HOR_DRILL_Y_SPLIT = -6000, -- quota di split dei fori orizzontali speciali lungo Y (quota di metà tavola)
|
||||
HOR_DRILL_Y_TABLE = 3500, -- dimensione di riferimento tavola in Y per fori orizzontali speciali lungo Y
|
||||
HOR_DRILL_YNEG_MAXMIN = -3994.3, -- massimo minimo in Y per fori da Y negativo
|
||||
HOR_DRILL_LEN = 1500, -- lunghezza della punta per fori orizzontali speciali lungo Y
|
||||
HOR_DRILL_DIAM = 35, -- diametro della punta per fori orizzontali speciali lungo Y
|
||||
HOR_DRILL_5AX = false, -- abilita lavorazione dei fori orizzontali (default true)
|
||||
MINRAWY_HOR_DRILL = 3500, -- dimensione y minima del grezzo per fori orizzontali in vista
|
||||
MAX_CLEAN_CRN30 = 60, -- massimo spessore per pulitura angolo con fresa 30deg
|
||||
MAX_CLEAN_CRN60 = 200, -- massimo spessore per pulitura angolo con fresa 70deg
|
||||
MIN_DIM_ALLOW_CLEAN = 200, -- apertura minima per lavorazione pulitura spigolo
|
||||
MILL_MAX_DEPTH_AS_MAT = false, -- massimo affondamento frese uguale ad altezza tagliente (max materiale)
|
||||
MAXDIAM_POCK_CORNER= 81, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||
CHECK_MIN_Z_SAW = true, -- controlla la quota minima della lama rispetto alla tavola (default true)
|
||||
MIN_Z_SAW = -5, -- quota minima rispetto alla tavola (default 0)
|
||||
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
|
||||
DELTA_X = 0, -- offset in X dal corner di riferimento
|
||||
DELTA_Y = 0, -- offset in Y dal corner di riferimento
|
||||
DELTA_Z = 0, -- offset in Z dalla tavola
|
||||
SIMUL_VIEW_DIR = 3, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
||||
ORIG_CORNER = 'TL', -- angolo tavola per origine di battuta (BR (defualt), TR, BL, TL)
|
||||
NESTING_CORNER = 'TL', -- angolo di origine del grezzo per posizionamento pezzi (BR (defualt), TR, BL, TL)
|
||||
}
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480026.data"
|
||||
local sData = EgtGetSourceDir().."\\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
|
||||
WallData.DELTA_X = Machine.Offsets.DELTA_Y or WallData.DELTA_X
|
||||
WallData.DELTA_Y = Machine.Offsets.DELTA_X or WallData.DELTA_Y
|
||||
WallData.DELTA_Z = Machine.Offsets.DELTA_Z or WallData.DELTA_Z
|
||||
end
|
||||
if Machine.Trave then
|
||||
WallData.MIN_LENGTH = Machine.Trave.YMIN or BeamData.MIN_LENGTH
|
||||
WallData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
WallData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT
|
||||
WallData.MAX_LENGTH = Machine.Trave.YMAX or BeamData.MAX_LENGTH
|
||||
WallData.MAX_WIDTH = Machine.Trave.XMAX or BeamData.MAX_WIDTH
|
||||
WallData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return WallData
|
||||
@@ -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%
|
||||
Reference in New Issue
Block a user