Compare commits

...

8 Commits

Author SHA1 Message Date
andrea.villa bd7c69ac0a - Tolto funzioni per chiodature in doppio
- Anche se ci viene passata origine 1, si considera come fosse la 3
2026-04-07 11:43:46 +02:00
andrea.villa 5734560db2 Corrette origini 2026-04-07 10:33:05 +02:00
andrea.villa 912dd11c64 Merge branch 'develop' of https://gitlab.steamware.net/egalware-machines/essetre/essetre-90480023_xs-mw into develop 2026-04-07 09:27:26 +02:00
andrea.villa 5fe8e8caf0 Aggiunta gestione testa H12, lama su rinvio anche in generazione 2026-04-07 09:25:40 +02:00
daniele.nicoli 43518c80ff - Modificato nuovamente ordine chiodatrici.
- mlse, ZMax() Aggiunta testa H12.
- mlpe, ToolDeselect() Aggiunta testa H12.
- Variabili disassamenti Lama (SawDelta).
- mlde, OnSetHead() Aggiunta gestione H12
2026-04-07 09:18:00 +02:00
daniele.nicoli 9585b06976 -Aggiunta lama non ancora implementata funzionante.
-aggiunti TH da PF
- Modificati nomi magazzino
- Aggiunte Machnotes e Toolnotes
2026-04-03 16:56:37 +02:00
daniele.nicoli 7351e269c9 cambio versione DEV3 2026-04-03 09:24:42 +02:00
daniele.nicoli c431363005 Sistemati segni chiodatrici in - 2026-04-03 09:22:03 +02:00
18 changed files with 217 additions and 194 deletions
+6 -6
View File
@@ -18,9 +18,7 @@ Active=1
[ToolHolder]
H1.1=Standard.nge
H1.1:MILL_NOTIP=MillNoTip.nge
H1.1:SAW_FLAT=SawOnH1.nge
H2.1=SawOnAT.nge
H3.1=ChainSaw.nge
H12.1=Saw.nge
[Machinings]
Drilling=1
@@ -45,9 +43,11 @@ ExitScript=ExitMach.lua
; 5 axis head
H1=6608
; 5 axis saw
H2=6615
; Chainsaw
H3=6616
H12=6615
; Nail
H21=6630
H22=6630
H23=6630
[SetUp]
Default=Standard
+73 -64
View File
@@ -8,7 +8,7 @@ require( 'EmtGenerator')
EgtEnableDebug( false)
if not EmtModifyHeadAuxDirection then error( 'A newer version of the program is required (minimum 2.3j5)') end
PP_VER = '3.1d1_DEV2'
PP_VER = '3.1d1_DEV7'
PP_NVER = '2.7.4.1'
-- Parametri macchina
@@ -25,7 +25,7 @@ MinC1 = -275.0
MaxC1 = 275.0
PosSpecC1 = 34
MillOffs = 170
ChSawLen = 96.0
ChSawLen = 0.0
ParkC1 = 0
ParkB1 = 0
ParkSawC1 = -90
@@ -34,18 +34,20 @@ MinX2 = 1047.0
MaxX2 = 6080.0
MinZ2 = -770.0
MaxZ2 = 0.0
SawDeltaX = 33.65
SawDeltaY = 210.0
SawDeltaZ = -133.0
SawOffs = 115.5
Nail11DeltaX = 318.0 -- Distanza da Mandrino a Graffettatrice H21
Nail11DeltaY = -111.5
SawOffsX = 111.0
SawOffsY = 0
SawOffsZ = -150.25
SawC1Offs = 0
SawB1Offs = 0
SawOffs = 0.0
Nail11DeltaX = -277.0 -- Distanza da Mandrino a Graffettatrice H21
Nail11DeltaY = -112.5
Nail11DeltaZ = -421.6497
Nail12DeltaX = 315.8125 -- Distanza da Mandrino a Graffettatrice H22
Nail12DeltaY = 136.1311
Nail12DeltaX = -279.1874 -- Distanza da Mandrino a Graffettatrice H22
Nail12DeltaY = 135.1311
Nail12DeltaZ = -421.6497
Nail13DeltaX = -277.0 -- Distanza da Mandrino a Graffettatrice H23
Nail13DeltaY = -111.5
Nail13DeltaX = 318.0 -- Distanza da Mandrino a Graffettatrice H23
Nail13DeltaY = -112.5
Nail13DeltaZ = -421.6497
Nail14DeltaX = 0 -- Distanza da Mandrino a Graffettatrice H24 (non esiste su questa macchina)
Nail14DeltaY = 0
@@ -68,9 +70,11 @@ Orig6DeltaZ = 0
DimTabX = 33383.0--31200.0 -- Dimensione tavola
DimTabY = 3500.0
DeltaTabX = -34391.9582---34200.00 -- Distanza da Mandrino a origine principale angolo tavola.
DeltaTabY = 1291.0--1289.00
DeltaTabY = 1290.0--1289.00
DeltaTabZ = -1227.6497
CoeffVM = 0.5
OffsetH12X = 110
OffsetH12Z = 150
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480023_XS-MW.data"
@@ -109,23 +113,27 @@ if EgtExistsFile( sData) then
SawOffs = MchOffs.PIVOT_SAW or SawOffs
if MchOffs.OFFSET_ZERO3_Y then DimTabX = - MchOffs.OFFSET_ZERO3_Y end
if MchOffs.OFFSET_ZERO2_X then DimTabY = - MchOffs.OFFSET_ZERO2_X end
if MchOffs.ZERO_Y_MILL then DeltaTabX = -MchOffs.ZERO_Y_MILL end
if MchOffs.ZERO_X_MILL then DeltaTabY = MchOffs.ZERO_X_MILL or DeltaTabY end
if MchOffs.ZERO_Y_MILL then DeltaTabX = MchOffs.ZERO_Y_MILL end
if MchOffs.ZERO_X_MILL then DeltaTabY = - MchOffs.ZERO_X_MILL or DeltaTabY end
if MchOffs.ZERO_Z_MILL then DeltaTabZ = MchOffs.ZERO_Z_MILL or DeltaTabZ end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_SAW then SawDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_SAW) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_SAW then SawDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_SAW) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_SAW then SawDeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_SAW) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_SAW then SawDeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_SAW) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_SAW then SawDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_SAW) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL11_Y then Nail11DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL11_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL11_X then Nail11DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL11_X) end
if Machine.SAWOFFSX then SawOffsX = Machine.SAWOFFSX end
if Machine.SAWOFFSZ then SawOffsZ = Machine.SAWOFFSZ end
if Machine.OFFSETCLAMAT1 then SawC1Offs= Machine.OFFSETCLAMAT1 end
if Machine.OFFSETBLAMAT1 then SawB1Offs= Machine.OFFSETBLAMAT1 end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL11_Y then Nail11DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL11_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL11_X then Nail11DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL11_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL11_Z then Nail11DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL11_Z) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL12_Y then Nail12DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL12_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL12_X then Nail12DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL12_X) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL12_Y then Nail12DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL12_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL12_X then Nail12DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL12_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL12_Z then Nail12DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL12_Z) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL13_Y then Nail13DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL13_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL13_X then Nail13DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL13_X) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL13_Y then Nail13DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL13_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL13_X then Nail13DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL13_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL13_Z then Nail13DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL13_Z) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL14_Y then Nail14DeltaX = -( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL14_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL14_X then Nail14DeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL14_X) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_NAIL14_Y then Nail14DeltaX = ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_NAIL14_Y) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_NAIL14_X then Nail14DeltaY = - ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_NAIL14_X) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_NAIL14_Z then Nail14DeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_NAIL14_Z) end
if MchOffs.OFFSET_ZERO2_Y then Orig2DeltaX = -MchOffs.OFFSET_ZERO2_Y end
if MchOffs.OFFSET_ZERO2_X then Orig2DeltaY = MchOffs.OFFSET_ZERO2_X end
@@ -145,19 +153,15 @@ if EgtExistsFile( sData) then
end
end
-- Spostamenti della lama rispetto al disegno
local SawOffsX = SawDeltaX - 33.65
local SawOffsY = SawDeltaY - 210.0
local SawOffsZ = SawDeltaZ + 133.0
-- Spostamenti delle chiodatrici rispetto al disegno
local Nail11OffsX = Nail11DeltaX - 318.0
local Nail11OffsY = Nail11DeltaY + 111.5
local Nail11OffsX = Nail11DeltaX + 277.0
local Nail11OffsY = Nail11DeltaY + 112.5
local Nail11OffsZ = Nail11DeltaZ + 421.6497
local Nail12OffsX = Nail12DeltaX - 315.8125
local Nail12OffsY = Nail12DeltaY - 136.1311
local Nail12OffsX = Nail12DeltaX + 279.1874
local Nail12OffsY = Nail12DeltaY - 135.1311
local Nail12OffsZ = Nail12DeltaZ + 421.6497
local Nail13OffsX = Nail13DeltaX + 277.0
local Nail13OffsY = Nail13DeltaY + 111.5
local Nail13OffsX = Nail13DeltaX - 318.0
local Nail13OffsY = Nail13DeltaY + 112.5
local Nail13OffsZ = Nail13DeltaZ + 421.6497
EmtGeneral {
@@ -172,7 +176,7 @@ local BaseId = EmtBase {
Geo='BASE/GEO',
Aux={'BASE/LOAD', 'BASE/MOD01', 'BASE/MOD02', 'BASE/MOD03', 'BASE/MOD04', 'BASE/MOD05', 'BASE/MOD06', 'BASE/MOD07',
'BASE/MOD08', 'BASE/MOD09', 'BASE/MOD10', 'BASE/MOD11', 'BASE/MOD12', 'BASE/MOD13', 'BASE/MOD14', 'BASE/REF', 'BASE/COLLISION', 'BASE/UNLOAD'}}
local vtMove = Vector3d( DeltaTabX + 34391.9582, DeltaTabY - 1291.0, DeltaTabZ + 1227.6497 )
local vtMove = Vector3d( DeltaTabX + 34391.9582, DeltaTabY - 1290.0, DeltaTabZ + 1227.6497 )
EgtMove( BaseId, vtMove, GDB_RT.GLOB)
-- Tavola
EmtTable {
@@ -226,7 +230,7 @@ EmtAxis {
Token = 'C',
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d( 0, 1, 485.5966),
Pos = Point3d( 0, 0, 485.5966),
Stroke = {MinC1, MaxC1},
Home = 0,
Geo = 'C1_AXIS/GEO',
@@ -236,7 +240,7 @@ EmtAxis {
Parent = 'C1',
Token = 'B',
Type = MCH_AT.ROTARY,
Dir = -Y_AX(),
Dir = X_AX(),
Pos = Point3d( 0, 0, MillOffs),--( 0, 52.5966, MillOffs),
Stroke = {MinB1, MaxB1},
Home = 0,
@@ -254,6 +258,18 @@ EmtHead {
Rot1W = 0.1,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H1_HEAD/GEO'}
-- Testa Lama
EmtHead {
Name = 'H12',
Parent = 'B1',
HSet = 'H1',
Type = MCH_HT.STD,
Pos = Point3d( -SawOffsX, SawOffsY, SawOffsZ),
TDir = Vector3d( 0, sin( SawB1Offs), cos( SawB1Offs)),
ADir = X_AX(),
Rot1W = 0.1,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H12_HEAD/GEO'}
-- Sega a catena
EmtAxis {
Name = 'A1',
@@ -265,7 +281,6 @@ EmtAxis {
Stroke = { 0, 270},
Home = 180,
Geo = 'A1_AXIS/GEO'}
-- Carro 2
local X2Id = EmtAxis {
Name = 'X2',
@@ -278,7 +293,7 @@ local X2Id = EmtAxis {
Home = MaxX2,
Geo = 'X2_AXIS/GEO',
Aux = {'X2_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, 0), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), Vector3d( Nail11OffsX, Nail11OffsY, 0), GDB_RT.GLOB)
local Z2Id = EmtAxis {
Name = 'Z2',
Parent = 'X2',
@@ -291,7 +306,7 @@ local Z2Id = EmtAxis {
Home = 0,
Geo = 'Z2_AXIS/GEO',
Aux = {'Z2_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), Vector3d( Nail11OffsX, Nail11OffsY, Nail11OffsZ), GDB_RT.GLOB)
local H21Id = EmtHead {
Name = 'H21',
@@ -324,56 +339,56 @@ local H23Id = EmtHead {
Aux = {'H23_HEAD/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( H23Id, 'SOLID'), Vector3d( Nail13OffsX, Nail13OffsY, Nail13OffsZ), GDB_RT.GLOB)
-- ToolChanger
local ptTcA = Point3d( -600.1772, 334, -592.1636)
local ptTcA = Point3d( -600.1772, 333, -592.1636)
EmtTcPos {
Name = 'T1',
Parent = 'Y',
Pos = ptTcA,
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA1'}
EmtTcPos {
Name = 'T2',
Parent = 'Y',
Pos = ptTcA - 102.5 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA2'}
EmtTcPos {
Name = 'T3',
Parent = 'Y',
Pos = ptTcA - 205 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA3'}
EmtTcPos {
Name = 'T4',
Parent = 'Y',
Pos = ptTcA - 307.5 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA4'}
EmtTcPos {
Name = 'T5',
Parent = 'Y',
Pos = ptTcA - 410 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA5'}
EmtTcPos {
Name = 'T6',
Parent = 'Y',
Pos = ptTcA - 512.5 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA6'}
EmtTcPos {
Name = 'T7',
Name = 'T8',
Parent = 'Y',
Pos = ptTcA - 717.5 * Z_AX(),
Pos = ptTcA - 717.5 * Z_AX() + Vector3d( -OffsetH12X, -OffsetH12Z, 0),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TA7'}
ADir = X_AX(),
Geo = 'Y_AXIS/TA8'}
---------------------------------------------------------------------
-- Funzioni richiamate per modificare i dati macchina in casi particolari
@@ -393,19 +408,8 @@ end
---------------------------------------------------------------------
function OnSetHead()
-- se sega a catena
if EMC.HEAD == 'H3' then
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
local CSawPosA = EgtGetVal( sVal, 'A1', 'd') or 180
EmtModifyAxisHome( 'X1', ( MinX1 + MaxX1) / 2)
EmtModifyAxisHome( 'Z1', GetChainSawZHomeFromVirtualAxis( CSawPosA))
EmtModifyAxisStroke( 'C1', { MinC1, MaxC1})
EmtModifyAxisStroke( 'B1', { -0.1, MaxB1})
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA))
EmtModifyAxisHome( 'B1', 0)
EmtModifyAxisHome( 'A1', CSawPosA)
-- se lama su testa 5 assi
elseif EMC.HEAD == 'H1' and EMC.TOTDIAM > 600 then
if EMC.HEAD == 'H1' and EMC.TOTDIAM > 600 then
EmtModifyAxisHome( 'Z1', -150)
EmtModifyAxisStroke( 'C1', { -180.1, 0.1})
EmtModifyAxisStroke( 'B1', { -90, 0})
@@ -426,6 +430,11 @@ function OnSetHead()
EmtModifyAxisHome( 'C1', ParkC1)
EmtModifyHeadAuxDirection( 'H1', Y_AX())
end
elseif EMC.HEAD == 'H12' then
EmtModifyAxisHome( 'Z1', -150)
EmtModifyAxisHome( 'C1', ParkC1)
EmtModifyAxisHome( 'B1', ParkB1)
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
else
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
EmtModifyAxisHome( 'C1', ParkC1)
+13 -19
View File
@@ -77,12 +77,6 @@ function OnProgramStart()
'L169='..EgtNumToString( Orig4DeltaY, 2)..'\n'..
'L170='..EgtNumToString( -Orig4DeltaX, 2)..'\n'..
'L171='..EgtNumToString( Orig4DeltaZ, 2)..'\n'..
'L172='..EgtNumToString( Orig5DeltaY, 2)..'\n'..
'L173='..EgtNumToString( -Orig5DeltaX, 2)..'\n'..
'L174='..EgtNumToString( Orig5DeltaZ, 2)..'\n'..
'L175='..EgtNumToString( Orig6DeltaY, 2)..'\n'..
'L176='..EgtNumToString( -Orig6DeltaX, 2)..'\n'..
'L177='..EgtNumToString( Orig6DeltaZ, 2)..'\n'..
'G114'..' EA'..EgtNumToString( DeltaTabY + DimTabY - SawDeltaY, 2)..' EB'..EgtNumToString( -DeltaTabX + SawDeltaX, 2)..
' EC'..EgtNumToString( DeltaTabZ - SawDeltaZ, 2)..' ED'..EgtNumToString( 0, 2)..' EE'..EgtNumToString( SawOffs, 2)..
' EF'..EgtNumToString( DeltaTabY + DimTabY, 2)..' EG'..EgtNumToString( -DeltaTabX, 2)..
@@ -352,7 +346,7 @@ function OnRapid()
EmtResetPrev()
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1')
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' or ( EMT.HEAD == 'H14' and not EMT.DOUBLE) then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' or ( EMT.HEAD == 'H14' and not EMT.DOUBLE) then
sOut = sOut .. ' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
elseif EMT.HEAD == 'H14' then
sOut = sOut .. ' U' .. EmtLenToString( EMT.L2 - EMT.DELTA, 3) .. ' W0 V0 A0'
@@ -616,11 +610,11 @@ function MyAdjustLinearAxes()
if EMT.REFLOC then
local vtDelta = V_NULL()
local vtE = V_NULL()
if EMT.HEAD == 'H1' then
local Len = EMT.TLEN + MillOffs
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' then
local dAddLen = EgtIf( EMT.HEAD == 'H12', -SawOffsZ, 0)
local Len = EMT.TLEN + dAddLen + MillOffs
local LenRef = MillOffs
local vtTool = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
vtE = vtTool * Len - Z_AX() * LenRef
vtE = Vector3d( EMT.TDIR) * Len - Z_AX() * LenRef
elseif EMT.HEAD == 'H2' then
vtDelta = -Vector3d( SawDeltaX, SawDeltaY, SawDeltaZ)
elseif EMT.HEAD == 'H3' then
@@ -667,14 +661,14 @@ function CalcInterpPlane()
local ptS = Point3d( xS, yS, zS)
-- calcolo per piano generico
local vtE
if EMT.HEAD == 'H1' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' then
vtE = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
elseif EMT.HEAD == 'H3' then
vtE = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
else
vtE = Z_AX()
end
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' then
EMT.IPLGLFR = Frame3d( ptS, vtE)
else
EMT.IPLGLFR = Frame3d( ptS, Y_AX(), -X_AX(), Z_AX())
@@ -694,17 +688,17 @@ function CalcInterpPlane()
end
dAngO = 0
end
local xOut = yS - DeltaTabY - DimTabY
local yOut = - ( xS - DeltaTabX)
local xOut = yS - DeltaTabY
local yOut = - ( xS - DeltaTabX - DimTabX)
local zOut = zS
if EMT.ORIG == 2 then
xOut = yS - DeltaTabY
yOut = - ( xS - DeltaTabX)
elseif EMT.ORIG == 3 then
xOut = yS - DeltaTabY - DimTabY
xOut = yS - DeltaTabY
yOut = - ( xS - DeltaTabX - DimTabX)
elseif EMT.ORIG == 4 then
xOut = yS - DeltaTabY
xOut = yS - DeltaTabY - DimTabY
yOut = - ( xS - DeltaTabX - DimTabX)
elseif EMT.ORIG == 5 then
xOut = yS - DeltaTabY - DimTabY
@@ -721,7 +715,7 @@ end
---------------------------------------------------------------------
function GetET()
local sET
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' then
sET = ' ET2'
elseif EMT.HEAD == 'H2' then
sET = ' ET1'
@@ -738,7 +732,7 @@ end
---------------------------------------------------------------------
function GetEU()
local sEU
if EMT.HEAD == 'H1' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' then
sEU = ' EU'..string.sub( EMT.TCPOS, 2)
elseif EMT.HEAD == 'H2' then
sEU = ' EU0'
+16 -3
View File
@@ -228,7 +228,7 @@ function OnSimulToolSelect()
EMT.TOOLTYPE = EgtTdbGetCurrToolParam( MCH_TP.TYPE)
EMT.TOOLTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
-- se non lama su rinvio o graffettatrici, carico utensile
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
if EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3' then
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
if EMT.HEAD == 'H3' then
-- recupero la lavorazione successiva
@@ -306,8 +306,15 @@ function OnSimulToolDeselect()
EMT.TOOL_1 = nil
EMT.TCPOS_1 = nil
end
-- se testa attuale è lama devo depositarla
if EMT.HEAD == 'H12' then
ShowToolInTcPos( EMT.TCPOS_1, true)
EgtUnloadTool( 'H12', 1)
EMT.TOOL_1 = nil
EMT.TCPOS_1 = nil
end
-- deposito utensile se non lama su rinvio o graffettatrici
if ( EMT.NEXTHEAD == 'H1' or EMT.NEXTHEAD == 'H3') and ( EMT.HEAD == 'H1' or EMT.HEAD == 'H3') then
if ( EMT.NEXTHEAD == 'H1' or EMT.NEXTHEAD == 'H12' or EMT.NEXTHEAD == 'H3') and ( EMT.HEAD == 'H1' or EMT.HEAD == 'H12' or EMT.HEAD == 'H3') then
if EMT.NEXTTOOL ~= EMT.TOOL_1 then
EgtOutText( 'Tool change in progress...')
-- simulo movimento
@@ -647,11 +654,17 @@ end
---------------------------------------------------------------------
function ShowToolInTcPos( sTcPos, bShow)
-- recupero identificativo della posizione sul TC
local TcPosId = EgtGetTcPosId( sTcPos or '')
if not TcPosId then return end
-- recupero il gruppo dell'utensile
local TcExitId = EgtGetFirstNameInGroup( EgtGetTcPosId( sTcPos or '') or GDB_ID.NULL, 'T1')
local TcExitId = EgtGetFirstNameInGroup( TcPosId or GDB_ID.NULL, 'T1')
if not TcExitId then return end
-- imposto lo stato di visualizzazione
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
-- recupero eventuale gruppo ausiliario da visualizzare/nascondere
local TcHSId = EgtGetFirstNameInGroup( TcPosId, sTcPos .. '_HS')
if TcHSId then EgtSetStatus( TcHSId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF)) end
end
---------------------------------------------------------------------
+9 -1
View File
@@ -47,8 +47,16 @@ function OnSpecialMoveZup()
EMC.R2 = R2New
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2, EMC.R3)
end
-- Se altrimenti Lama normale
elseif EMC.HEAD == 'H12' then
if EMC.L3 > -300 then
EMC.R1 = EgtGetAxisHomePos( 'C1')
EMC.R2 = EgtGetAxisHomePos( 'B1')
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
EMC.MODIF = true
end
-- se altre teste
elseif EMC.HEAD == 'H14' or EMC.HEAD == 'H2' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' or EMC.HEAD == 'H23' then
elseif EMC.HEAD == 'H14' or EMC.HEAD == 'H12' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' or EMC.HEAD == 'H23' then
-- non è necessaria una gestione speciale
-- altrimenti errore
else
BIN
View File
Binary file not shown.
+50
View File
@@ -0,0 +1,50 @@
; Commento per evitare BOM con UTF-8
;Index = Type, Description, Default Value
; Type : b=boolean, d=double, l=lenght, s=string
[Drilling]
[Sawing]
[Milling]
0=d,MaxElev,0
1=d,OutRaw,0
2=d,SideElev,0
3=d,TrimExt,0
4=sr,VtFaceUse,0,0,0
[Pocketing]
0=d,MaxElev,0
1=b,Open,0
2=d,OpenMinSave,0
3=d,OpenOutRaw,0
4=d,MaxOptSize,0
[Mortising]
0=d,MaxElev,0
[Chiseling]
[SawRoughing]
[SawFinishing]
[GenMachining]
0=l,LinTol,0.1
1=l,MaxLen,2
2=s,Type,ZigZag
3=d,SideAng,90
4=l,Step,10
5=l,OffsProj,0
6=l,LiTang,0
7=l,LiOrth,0
8=l,LiElev,0
9=l,LoTang,0
10=l,LoOrth,0
11=l,LoElev,0
12=b,DirFromGuide,1
[SurfRoughing]
[SurfFinishing]
0=b,SkipMaxDown,1
+1 -1
View File
@@ -34,7 +34,7 @@ local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
{Pos = "Pos4", TcPos = "T4", Head = "H1", Group = "G1"},
{Pos = "Pos5", TcPos = "T5", Head = "H1", Group = "G1"},
{Pos = "Pos6", TcPos = "T6", Head = "H1", Group = "G1"},
{Pos = "Pos7", TcPos = "T7", Head = "H1", Group = "G1"},
{Pos = "Pos7", TcPos = "T8", Head = "H12", Group = "G1"},
{Pos = "Pos8", TcPos = "T11", Head = "H21", Group = "G2"},
{Pos = "Pos9", TcPos = "T12", Head = "H22", Group = "G2"},
{Pos = "Pos10", TcPos = "T13", Head = "H23", Group = "G2"}}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+41
View File
@@ -0,0 +1,41 @@
; Commento per evitare BOM con UTF-8
; Index, Type, Description, Value
; Index = 0,1,..,n
; Type : d=double, l=lenght, s=string, b=boolean, dr=double recalc, sr= string recalc, lr=lenght recalc, br=boolean recalc, th=toolholder
; Description : STEP, SIDESTEP, ...
[DRILL_STD]
0=th,TH,
1=d,STEP
2=s,DOUBLE
[SAW_STD]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=b,LONGCUT
[SAW_FLAT]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=b,LONGCUT
[MILL_STD]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=d,SIDEDEPTH
4=s,DOUBLE
[MILL_NOTIP]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=d,SIDEDEPTH
4=s,DOUBLE
[MORTISE_STD]
0=b,MORTISE
1=d,STEP
2=d,SIDESTEP
+8 -100
View File
@@ -32,7 +32,7 @@ local WallData = {
T14_T12_DOUBLE = true, -- abilita chiodatura in doppio con teste T14 e T12
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
SIMUL_VIEW_DIR = 3, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
ORIG_CORNER = 'TL', -- posizione origine (TL,BL,TR,BR,TM,BM)
ORIG_CORNER = 'BL', -- posizione origine (TL,BL,TR,BR,TM,BM)
MID_REF = 27000, -- posizione X dell'origine intermedia
USE_POSY = true -- utilizzare POSY di BTL (spostamento sullo spessore per pareti a layer)
}
@@ -57,117 +57,25 @@ if EgtExistsFile( sData) then
WallData.MAX_WIDTH = Machine.Trave.XMAX or BeamData.MAX_WIDTH
WallData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
end
if Machine.Offsets then
WallData.MID_REF = -Machine.Offsets.OFFSET_ZERO5_Y
WallData.T14_T12_DOUBLE = ( Machine.Offsets.T14_T12_DOUBLE == 1)
end
end
end
-------------------------------------------------------------------------------------------------------------
local function GetOrigCorner( RefPos)
if RefPos == 1 then
return 'TL'
elseif RefPos == 2 then
return 'BL'
elseif RefPos == 3 then
return 'TR'
elseif RefPos == 4 then
return 'BR'
elseif RefPos == 5 then
return 'TM'
elseif RefPos == 6 then
return 'BM'
else
elseif RefPos == 2 then
return 'TL'
elseif RefPos == 3 then
return 'BL'
elseif RefPos == 4 then
return 'TL'
else
return 'BL'
end
end
WallData.GetOrigCorner = GetOrigCorner
-------------------------------------------------------------------------------------------------------------
local function VerifyFeatureForDouble( Proc)
-- deve essere attiva
if Proc.Flg == 0 then return 0 end
-- non deve essere già associata
if Proc.Double then return 0 end
-- deve essere contorno libero
if not ( ( Proc.Grp == 0 or Proc.Grp == 3 or Proc.Grp == 4) and ( Proc.Prc == 250)) then return 0 end
-- non deve essere una svuotatura
if EgtGetInfo( Proc.Id, 'PCKT', 'i') == 1 then return 0 end
-- deve richiedere utensili opportuni
local nTool = EgtGetInfo( Proc.Id, 'CNT_DATA', 'i')
if nTool ~= 12 and nTool ~= 14 then return 0 end
-- deve avere una curva ausiliaria associata
local AuxId = EgtGetInfo( Proc.Id, 'AUXID', 'i')
if not AuxId then return 0 end
AuxId = AuxId + Proc.Id
-- questa curva deve essere una retta orientata come gli assi X o Y
if Proc.Box:getDimY() > 1 and Proc.Box:getDimX() > 1 then return 0 end
local ptS = EgtSP( AuxId, GDB_ID.ROOT)
local ptE = EgtEP( AuxId, GDB_ID.ROOT)
-- va bene se diretta come l'asse X
if abs( ptS:getY() - ptE:getY()) < 1 then
if ptS:getX() <ptE:getX() then
return 1, ptS, ptE
else
return 1, ptE, ptS
end
end
-- va bene se diretta come l'asse Y
if abs( ptS:getX() - ptE:getX()) < 1 then
return 2, ptS, ptE
end
-- non va bene
return 0
end
-------------------------------------------------------------------------------------------------------------
local function FindFeaturesInDouble( vProc, b3Raw)
if not WallData.T14_T12_DOUBLE then return end
local MIN_INTERAX = 1350
local MIN_EXTRA_Y = 400
for i = 1, #vProc do
local Proc = vProc[i]
local nType, ptS, ptE = VerifyFeatureForDouble( Proc)
-- se linea lungo X
if nType == 1 then
for j = i + 1, #vProc do
local OtherProc = vProc[j]
local nOtherType, ptOtherS, ptOtherE = VerifyFeatureForDouble( OtherProc)
if nOtherType == 1 and abs( ptS:getX() - ptOtherS:getX()) < 1 and abs( ptE:getX() - ptOtherE:getX()) < 1 then
-- verifico l'interasse come distanza tra i due inizi
local dDeltaY = ptS:getY() - ptOtherS:getY()
if dDeltaY >= MIN_INTERAX then
Proc.Double = 1
Proc.Delta = dDeltaY
EgtSetInfo( Proc.Id, 'CNT_DATA', '14')
OtherProc.Flg = 0
OtherProc.Double = -1
break
elseif dDeltaY <= -MIN_INTERAX then
OtherProc.Double = 1
OtherProc.Delta = -dDeltaY
EgtSetInfo( OtherProc.Id, 'CNT_DATA', '14')
Proc.Flg = 0
Proc.Double = -1
break
end
end
end
-- se altrimenti linea lungo Y
elseif nType == 2 then
local dLen = ptS:getY() - ptE:getY()
if abs( dLen) >= MIN_INTERAX + MIN_EXTRA_Y then
Proc.Double = 2
Proc.Delta = max( abs( dLen) / 2, MIN_INTERAX) * EgtIf( dLen > 0, 1, -1)
Proc.DblAcc = abs( dLen) - abs( Proc.Delta)
EgtSetInfo( Proc.Id, 'CNT_DATA', '14')
end
end
end
end
WallData.FindFeaturesInDouble = FindFeaturesInDouble
-------------------------------------------------------------------------------------------------------------
local function GetSawHeadSide( dSpeed, sHead)
if sHead == 'H2' then