- NON FUNZIONANTE -
Prima versione macchina derivata da Essetre-90480025
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
|||||||
|
/Tools
|
||||||
|
/Machinings
|
||||||
|
/SetUp
|
||||||
|
/Beam/Ts3Data.bak
|
||||||
|
/Beam/CutData.lua
|
||||||
|
/Beam/DrillData.lua
|
||||||
|
/Beam/MillingData.lua
|
||||||
|
/Beam/PocketingData.lua
|
||||||
|
/Beam/SawingData.lua
|
||||||
|
/Beam/Ts3Data.lua
|
||||||
|
/Wall/Ts3Data.bak
|
||||||
|
/Wall/CutData.lua
|
||||||
|
/Wall/DrillData.lua
|
||||||
|
/Wall/MillingData.lua
|
||||||
|
/Wall/PocketingData.lua
|
||||||
|
/Wall/SawingData.lua
|
||||||
|
/Wall/Ts3Data.lua
|
||||||
+318
@@ -0,0 +1,318 @@
|
|||||||
|
variables:
|
||||||
|
VERS_MAIN: '1.0'
|
||||||
|
MACH_NAME: ''
|
||||||
|
MACH_NAME_TEST: ''
|
||||||
|
MANUFACTURER: ''
|
||||||
|
NEW_REL: ''
|
||||||
|
NET_SHARE_X: '\\10.74.82.201\EgwTech'
|
||||||
|
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
|
||||||
|
NET_SHARE_S: '\\10.74.82.201\Scambio'
|
||||||
|
NET_SHARE_R: '\\10.74.82.201\EgwTech'
|
||||||
|
NET_SHARE_H: '\\10.74.82.252\team drives'
|
||||||
|
NET_USERQ: 'steamw\egalware'
|
||||||
|
NET_USER_SERVICES: 'steamw\services'
|
||||||
|
MACH_VERS: '0.0.0.0'
|
||||||
|
TEMP_PATH: 'C:\MachinesDeploy'
|
||||||
|
MACHINES_PATH_R: 'R:\EgtData\Machines_GIT'
|
||||||
|
DEST_MACHINES_PATH_H: 'H:'
|
||||||
|
SRC_PATH: ''
|
||||||
|
BASE_PATH: ''
|
||||||
|
TEST_PATH: ''
|
||||||
|
URL_VERSIONS_LOG: "https://liman.egalware.com/ELM.API/api/release/save"
|
||||||
|
MACH_VERS_NUM: '0.0.0.0'
|
||||||
|
CRITICAL_STRING: "#critical#"
|
||||||
|
TOOLS_MACHINE_PATH: ""
|
||||||
|
|
||||||
|
|
||||||
|
#Note compilazione LUA:
|
||||||
|
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
||||||
|
|
||||||
|
# helper copia script verso cartella di rete S:\ delle cartelle bin
|
||||||
|
.ReplicaS: &ReplicaS
|
||||||
|
- |
|
||||||
|
net use S: /delete
|
||||||
|
SLEEP 2
|
||||||
|
net use S: $env:NET_SHARE_S /u:$env:NET_USERQ $SDRIVE_PASSWD
|
||||||
|
ROBOCOPY /MIR $env:BASE_PATH S:\LucaM\MachinesDeploy\$env:MACH_NAME\$env:MACH_VERS\ /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||||
|
SLEEP 2
|
||||||
|
net use S: /delete
|
||||||
|
|
||||||
|
# helper copia script verso cartella di rete R:\
|
||||||
|
.ReplicaR: &ReplicaR
|
||||||
|
- |
|
||||||
|
net use R: /delete
|
||||||
|
SLEEP 2
|
||||||
|
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Copia macchina su R"
|
||||||
|
echo "-----------------------"
|
||||||
|
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||||
|
ROBOCOPY /MIR "$env:SRC_PATH" "$customerPathR\$env:MACH_NAME\" /XD "bin"
|
||||||
|
ROBOCOPY "$env:TEST_PATH" "$customerPathR\_TestMachines\$env:MACH_NAME_TEST\" /E /XD "bin"
|
||||||
|
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||||
|
SLEEP 2
|
||||||
|
net use R: /delete
|
||||||
|
|
||||||
|
# helper copia script verso drive condiviso
|
||||||
|
.ReplicaStor01: &ReplicaStor01
|
||||||
|
- |
|
||||||
|
net use H: /delete
|
||||||
|
SLEEP 2
|
||||||
|
net use H: $env:NET_SHARE_H /u:$env:NET_USER_SERVICES $SRVCS_PASSWD
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Copia macchina su stor01"
|
||||||
|
echo "-----------------------"
|
||||||
|
SLEEP 2
|
||||||
|
$customerPathH = $env:DEST_MACHINES_PATH_H + "\" + $env:MANUFACTURER + "\test"
|
||||||
|
$destinationPath = "$customerPathH\$env:MACH_NAME" + "\"
|
||||||
|
ROBOCOPY "$env:BASE_PATH" "$destinationPath\" *.zip
|
||||||
|
SLEEP 2
|
||||||
|
net use H: /delete
|
||||||
|
|
||||||
|
# helper copia script verso cartella di rete R:\ per develop
|
||||||
|
.ReplicaR_DEV: &ReplicaR_DEV
|
||||||
|
- |
|
||||||
|
net use R: /delete
|
||||||
|
SLEEP 2
|
||||||
|
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Copia macchina su R - DEV"
|
||||||
|
echo "-----------------------"
|
||||||
|
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||||
|
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\_DEV\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||||
|
SLEEP 2
|
||||||
|
net use R: /delete
|
||||||
|
|
||||||
|
#helper copia sorgenti da R a percorso temporaneo
|
||||||
|
.CreateBaseFolder: &CreateBaseFolder
|
||||||
|
- |
|
||||||
|
net use R: /delete
|
||||||
|
SLEEP 2
|
||||||
|
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Recupero file non git da R e copia su macchina virtuale"
|
||||||
|
echo "-----------------------"
|
||||||
|
# test se la cartella con gli utensili esiste per questa macchina
|
||||||
|
if (!(Test-Path -Path $env:TOOLS_MACHINE_PATH)) {
|
||||||
|
echo "-----------------------"
|
||||||
|
echo "CANNOT FIND TOOLS FOR THIS MACHINE!!"
|
||||||
|
echo "-----------------------"
|
||||||
|
Exit 1}
|
||||||
|
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:TEST_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
SLEEP 2
|
||||||
|
net use R: /delete
|
||||||
|
|
||||||
|
# helper compilazione LUA a 32 e 64 bit
|
||||||
|
.LuaCompile: &LuaCompile
|
||||||
|
- |
|
||||||
|
Set-Alias lua54 C:\Tools\Lua32\luac54
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Copia file su macchina virtuale"
|
||||||
|
echo "-----------------------"
|
||||||
|
ROBOCOPY . "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
ROBOCOPY . "$env:TEST_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.mlde" -NewName "$env:MACH_NAME_TEST.mlde"
|
||||||
|
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.ini" -NewName "$env:MACH_NAME_TEST.ini"
|
||||||
|
ROBOCOPY . "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Compilazione file *.lua 32/64bit"
|
||||||
|
echo "-----------------------"
|
||||||
|
$FileList = Get-ChildItem * -Include( "*.mlpe", "*.mlse")
|
||||||
|
ForEach ($File in $FileList) {
|
||||||
|
$FileName = Split-Path $File -leaf
|
||||||
|
lua54 -o $env:SRC_PATH\bin\$env:MACH_NAME\$FileName -s $FileName
|
||||||
|
echo "lua54 -o bin\$FileName -s $FileName"
|
||||||
|
}
|
||||||
|
|
||||||
|
# helper recupero nome macchina e costruttore
|
||||||
|
.machName-fix: &machName-fix
|
||||||
|
- |
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Recupero nome macchina e costruttore"
|
||||||
|
echo "-----------------------"
|
||||||
|
$fileName = dir *.mlde
|
||||||
|
$env:MACH_NAME = $fileName.BaseName
|
||||||
|
$env:MACH_NAME_TEST = $env:MACH_NAME + ".TEST"
|
||||||
|
$comp = $fileName.BaseName -split "-"
|
||||||
|
$env:MANUFACTURER = $comp[0]
|
||||||
|
Write-Output $env:MANUFACTURER
|
||||||
|
|
||||||
|
# helper calcolo versione
|
||||||
|
.version-fix: &version-fix
|
||||||
|
- |
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Calcolo versione"
|
||||||
|
echo "-----------------------"
|
||||||
|
|
||||||
|
# calcolo versione formato stringa
|
||||||
|
$fPath = "$env:MACH_NAME.mlde";
|
||||||
|
$vLine = Select-String -path $fPath -Pattern '^PP_VER';
|
||||||
|
$comp = $vLine -split "=";
|
||||||
|
$env:MACH_VERS = $comp[1].Replace("'","").Trim()
|
||||||
|
# display versione formato stringa
|
||||||
|
Write-Output $env:MACH_VERS
|
||||||
|
|
||||||
|
# calcolo versione formato numerico
|
||||||
|
$fPath = "$env:MACH_NAME.mlde";
|
||||||
|
$vLine = Select-String -path $fPath -Pattern '^PP_NVER';
|
||||||
|
$comp = $vLine -split "=";
|
||||||
|
$env:MACH_VERS_NUM = $comp[1].Replace("'","").Trim()
|
||||||
|
# display versione formato numerico
|
||||||
|
Write-Output $env:MACH_VERS_NUM
|
||||||
|
|
||||||
|
# helper calcolo versione se develop
|
||||||
|
.version-fix_DEV: &version-fix_DEV
|
||||||
|
- |
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Calcolo versione - DEV"
|
||||||
|
echo "-----------------------"
|
||||||
|
$commitAuthor = $CI_COMMIT_AUTHOR -split " "
|
||||||
|
$commitAuthor = $commitAuthor[0].Trim()
|
||||||
|
$env:MACH_VERS = $commitAuthor
|
||||||
|
# display versione
|
||||||
|
Write-Output $env:MACH_VERS
|
||||||
|
|
||||||
|
# helper creazione folders
|
||||||
|
.folder-fix: &folder-fix
|
||||||
|
- |
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Creazione cartelle su macchina virtuale"
|
||||||
|
echo "-----------------------"
|
||||||
|
$env:TOOLS_MACHINE_PATH = "$env:MACHINES_PATH_R\$env:MANUFACTURER\_DefaultMachineSetup\$env:MACH_NAME"
|
||||||
|
Write-Output $env:TOOLS_MACHINE_PATH
|
||||||
|
$env:SRC_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME";
|
||||||
|
$env:BASE_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS";
|
||||||
|
$env:TEST_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME_TEST";
|
||||||
|
Write-Output $env:BASE_PATH;
|
||||||
|
if (Test-Path $env:BASE_PATH) { Remove-Item -Path "$env:BASE_PATH\*" -R -Force };
|
||||||
|
Write-Output $env:TEST_PATH;
|
||||||
|
|
||||||
|
# helper compressione e pulizia folders
|
||||||
|
.ZipClean: &ZipClean
|
||||||
|
- |
|
||||||
|
" Compressione file su macchina virtuale"
|
||||||
|
$7zipPath = $env:ProgramFiles+"\7-Zip\7z.exe";
|
||||||
|
if (-not (Test-Path -Path $7zipPath -PathType Leaf)) {
|
||||||
|
throw "7 zip file '$7zipPath' not found"
|
||||||
|
}
|
||||||
|
Set-Alias 7zip $7zipPath
|
||||||
|
$Target = "$env:BASE_PATH\$env:MACH_NAME.zip"
|
||||||
|
cd "$env:SRC_PATH\bin\"
|
||||||
|
$Source = "*"
|
||||||
|
7zip a -tzip $Target $Source
|
||||||
|
Write-Output "called ZIP $Source --> $Target"
|
||||||
|
|
||||||
|
# helper invio notifica a log versioni online (LiMan)
|
||||||
|
.SendToVersionsLog: &SendToVersionsLog
|
||||||
|
- |
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Invio versione a log online"
|
||||||
|
echo "-----------------------"
|
||||||
|
$tags = ""
|
||||||
|
$date = ""
|
||||||
|
# se critico scrive tag
|
||||||
|
if ( $CI_COMMIT_MESSAGE | Select-String -Pattern $env:CRITICAL_STRING) {
|
||||||
|
$tags = "CRITICAL"
|
||||||
|
$date = (Get-Date).AddDays(1).toString("yyyy-MM-ddTHH:mm:ss.fffZ")
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$date = (Get-Date).AddDays(3).toString("yyyy-MM-ddTHH:mm:ss.fffZ")
|
||||||
|
}
|
||||||
|
$body =
|
||||||
|
@{
|
||||||
|
codInst = "EgalWare"
|
||||||
|
codApp = $env:MACH_NAME
|
||||||
|
uplAppId = "UpdateManager"
|
||||||
|
masterKey = $LiMan_Key
|
||||||
|
tipo = "Machine"
|
||||||
|
versNum = $env:MACH_VERS_NUM
|
||||||
|
versText = $env:MACH_VERS
|
||||||
|
releaseDate = $date
|
||||||
|
relTags = $tags
|
||||||
|
}
|
||||||
|
$jsonBody = ConvertTo-Json -InputObject $body
|
||||||
|
echo $jsonBody
|
||||||
|
Invoke-WebRequest -Method Post -URI $env:URL_VERSIONS_LOG -ContentType "application/json" -Body $jsonBody -UseBasicParsing
|
||||||
|
|
||||||
|
|
||||||
|
# helper esecuzione test
|
||||||
|
.RunTest: &RunTest
|
||||||
|
- |
|
||||||
|
Write-Output "Test done!"
|
||||||
|
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
# - test
|
||||||
|
# - deploy
|
||||||
|
|
||||||
|
LuaCompile:build:
|
||||||
|
stage: build
|
||||||
|
only:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- win
|
||||||
|
before_script:
|
||||||
|
- *machName-fix
|
||||||
|
- *version-fix
|
||||||
|
- *folder-fix
|
||||||
|
script:
|
||||||
|
- *CreateBaseFolder
|
||||||
|
- *LuaCompile
|
||||||
|
- *ZipClean
|
||||||
|
- *ReplicaR
|
||||||
|
- *ReplicaStor01
|
||||||
|
- *SendToVersionsLog
|
||||||
|
|
||||||
|
LuaCompileDev:build:
|
||||||
|
stage: build
|
||||||
|
only:
|
||||||
|
- develop
|
||||||
|
tags:
|
||||||
|
- win
|
||||||
|
before_script:
|
||||||
|
- *machName-fix
|
||||||
|
- *version-fix_DEV
|
||||||
|
- *folder-fix
|
||||||
|
script:
|
||||||
|
- *CreateBaseFolder
|
||||||
|
- *LuaCompile
|
||||||
|
- *ZipClean
|
||||||
|
- *ReplicaR_DEV
|
||||||
|
|
||||||
|
# LuaCompile:test:
|
||||||
|
# stage: test
|
||||||
|
# needs: ["LuaCompile:build"]
|
||||||
|
# only:
|
||||||
|
# - main
|
||||||
|
# - master
|
||||||
|
# - develop
|
||||||
|
# tags:
|
||||||
|
# - win
|
||||||
|
# before_script:
|
||||||
|
# - *version-fix
|
||||||
|
# - *folder-fix
|
||||||
|
# script:
|
||||||
|
# - *LuaCompile
|
||||||
|
# - *RunTest
|
||||||
|
|
||||||
|
# LuaCompile:deploy:
|
||||||
|
# stage: deploy
|
||||||
|
# needs: ["LuaCompile:test"]
|
||||||
|
# only:
|
||||||
|
# - main
|
||||||
|
# - master
|
||||||
|
# tags:
|
||||||
|
# - win
|
||||||
|
# before_script:
|
||||||
|
# - *version-fix
|
||||||
|
# - *folder-fix
|
||||||
|
# script:
|
||||||
|
# - *LuaCompile
|
||||||
|
# - *ZipClean
|
||||||
|
# - *ReplicaR
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
; 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
|
||||||
|
H1.1:SAW_FLAT=SawOnH1.nge
|
||||||
|
H2.1=SawOnAT.nge
|
||||||
|
H3.1=ChainSaw.nge
|
||||||
|
|
||||||
|
[Machinings]
|
||||||
|
Drilling=1
|
||||||
|
Sawing=1
|
||||||
|
Milling=1
|
||||||
|
Pocketing=1
|
||||||
|
Mortising=1
|
||||||
|
Chiseling=0
|
||||||
|
SawRoughing=0
|
||||||
|
SawFinishing=0
|
||||||
|
SurfRoughing=0
|
||||||
|
SurfFinishing=1
|
||||||
|
|
||||||
|
[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
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
Default=Standard
|
||||||
|
|
||||||
|
[Estimations]
|
||||||
|
Enable=1
|
||||||
|
WinPlace=0,514,138,847,847
|
||||||
|
|
||||||
|
[VMill]
|
||||||
|
Enable=1
|
||||||
|
Save=0
|
||||||
@@ -0,0 +1,660 @@
|
|||||||
|
-- Descrizione macchina Essetre-WALL by EgalTech s.r.l. 2022/07/19
|
||||||
|
-- Cliente PodBau
|
||||||
|
-- 2022/07/19 Ver.2.4g1 DS Aggiunti 9 utensili (T10-T18) rinominati quelli che collidevano come T.
|
||||||
|
-- 2024/09/25 Ver.2.6i1 AV NGE con solidi di collisione
|
||||||
|
-- Aggiunta controllo collisione con nuovi oggetti
|
||||||
|
|
||||||
|
require( 'EmtGenerator')
|
||||||
|
EgtEnableDebug( false)
|
||||||
|
if not EmtModifyHeadAuxDirection then error( 'A newer version of the program is required (minimum 2.3j5)') end
|
||||||
|
|
||||||
|
PP_VER = '3.1a1'
|
||||||
|
PP_NVER = '2.7.4.1'
|
||||||
|
|
||||||
|
-- Parametri macchina
|
||||||
|
NumericalControl = 'NUM' -- NUM o TPA
|
||||||
|
MinY = 0.0
|
||||||
|
MaxY = 18200.0
|
||||||
|
MinX1 = -7910.0
|
||||||
|
MaxX1 = 0.0
|
||||||
|
MinZ1 = -1585.0
|
||||||
|
MaxZ1 = 0.0
|
||||||
|
MinB1 = -135.0
|
||||||
|
MaxB1 = 135.0
|
||||||
|
MinC1 = -275.0
|
||||||
|
MaxC1 = 275.0
|
||||||
|
PosSpecC1 = 34
|
||||||
|
MillOffs = 202.0
|
||||||
|
ChSawLen = 96.0
|
||||||
|
ParkC1 = 0
|
||||||
|
ParkB1 = 0
|
||||||
|
ParkSawC1 = -90
|
||||||
|
ParkSawB1 = -90
|
||||||
|
MinX2 = -6500.0
|
||||||
|
MaxX2 = -670.0
|
||||||
|
MinZ2 = -1180.0
|
||||||
|
MaxZ2 = 0.0
|
||||||
|
MinB2 = 0.0
|
||||||
|
MaxB2 = 90.0
|
||||||
|
MinC2 = -275.0
|
||||||
|
MaxC2 = 275.0
|
||||||
|
SawDeltaX = 33.65
|
||||||
|
SawDeltaY = 210.0
|
||||||
|
SawDeltaZ = -133.0
|
||||||
|
SawOffs = 115.5
|
||||||
|
Nail11DeltaX = 457.7
|
||||||
|
Nail11DeltaY = 152.5
|
||||||
|
Nail11DeltaZ = -499
|
||||||
|
Nail12DeltaX = 457.7
|
||||||
|
Nail12DeltaY = -132.5
|
||||||
|
Nail12DeltaZ = -499
|
||||||
|
Nail13DeltaX = -7.34
|
||||||
|
Nail13DeltaY = -132.5
|
||||||
|
Nail13DeltaZ = -499
|
||||||
|
Nail14DeltaX = 383.8
|
||||||
|
Nail14DeltaY = 170.0
|
||||||
|
Nail14DeltaZ = 37.0
|
||||||
|
Orig2DeltaX = 0
|
||||||
|
Orig2DeltaY = -4000
|
||||||
|
Orig2DeltaZ = 0
|
||||||
|
Orig3DeltaX = 41550
|
||||||
|
Orig3DeltaY = 0
|
||||||
|
Orig3DeltaZ = 0
|
||||||
|
Orig4DeltaX = 41550
|
||||||
|
Orig4DeltaY = -4000
|
||||||
|
Orig4DeltaZ = 0
|
||||||
|
Orig5DeltaX = 27000
|
||||||
|
Orig5DeltaY = 0
|
||||||
|
Orig5DeltaZ = 0
|
||||||
|
Orig6DeltaX = 27000
|
||||||
|
Orig6DeltaY = -4000
|
||||||
|
Orig6DeltaZ = 0
|
||||||
|
DimTabX = 41550.0
|
||||||
|
DimTabY = 4000.0
|
||||||
|
DeltaTabX = 809.65
|
||||||
|
DeltaTabY = -5290.0
|
||||||
|
DeltaTabZ = -950.0
|
||||||
|
CoeffVM = 0.5
|
||||||
|
|
||||||
|
-- Aggiornamento con dati da TechnoEssetre7
|
||||||
|
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480023_XS-MW.data"
|
||||||
|
local sData = EgtGetCurrMachineDir().."\\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.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
|
||||||
|
DeltaTabY = ( MchOffs.ZERO_X_MILL - DimTabY) or DeltaTabY
|
||||||
|
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_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_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_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_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
|
||||||
|
if MchOffs.OFFSET_ZERO2_Z then Orig2DeltaZ = MchOffs.OFFSET_ZERO2_Z end
|
||||||
|
if MchOffs.OFFSET_ZERO3_Y then Orig3DeltaX = -MchOffs.OFFSET_ZERO3_Y end
|
||||||
|
if MchOffs.OFFSET_ZERO3_X then Orig3DeltaY = MchOffs.OFFSET_ZERO3_X end
|
||||||
|
if MchOffs.OFFSET_ZERO3_Z then Orig3DeltaZ = MchOffs.OFFSET_ZERO3_Z end
|
||||||
|
if MchOffs.OFFSET_ZERO4_Y then Orig4DeltaX = -MchOffs.OFFSET_ZERO4_Y end
|
||||||
|
if MchOffs.OFFSET_ZERO4_X then Orig4DeltaY = MchOffs.OFFSET_ZERO4_X end
|
||||||
|
if MchOffs.OFFSET_ZERO4_Z then Orig4DeltaZ = MchOffs.OFFSET_ZERO4_Z end
|
||||||
|
if MchOffs.OFFSET_ZERO5_Y then Orig5DeltaX = -MchOffs.OFFSET_ZERO5_Y end
|
||||||
|
if MchOffs.OFFSET_ZERO5_X then Orig5DeltaY = MchOffs.OFFSET_ZERO5_X end
|
||||||
|
if MchOffs.OFFSET_ZERO5_Z then Orig5DeltaZ = MchOffs.OFFSET_ZERO5_Z end
|
||||||
|
if MchOffs.OFFSET_ZERO6_Y then Orig6DeltaX = -MchOffs.OFFSET_ZERO6_Y end
|
||||||
|
if MchOffs.OFFSET_ZERO6_X then Orig6DeltaY = MchOffs.OFFSET_ZERO6_X end
|
||||||
|
if MchOffs.OFFSET_ZERO6_Z then Orig6DeltaZ = MchOffs.OFFSET_ZERO6_Z end
|
||||||
|
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 - 457.7
|
||||||
|
local Nail11OffsY = Nail11DeltaY - 152.5
|
||||||
|
local Nail11OffsZ = Nail11DeltaZ + 499
|
||||||
|
local Nail12OffsX = Nail12DeltaX - 457.7
|
||||||
|
local Nail12OffsY = Nail12DeltaY + 132.5
|
||||||
|
local Nail12OffsZ = Nail12DeltaZ + 499
|
||||||
|
local Nail13OffsX = Nail13DeltaX + 7.34
|
||||||
|
local Nail13OffsY = Nail13DeltaY + 132.5
|
||||||
|
local Nail13OffsZ = Nail13DeltaZ + 499
|
||||||
|
local Nail14OffsX = Nail14DeltaX - 383.8
|
||||||
|
local Nail14OffsY = Nail14DeltaY - 170.0
|
||||||
|
local Nail14OffsZ = Nail14DeltaZ - 37.0
|
||||||
|
|
||||||
|
EmtGeneral {
|
||||||
|
File='Essetre-WALL.nge',
|
||||||
|
Offset = Vector3d( -640.35, -3290.00, -1710.0),
|
||||||
|
AxisMaxAdjust = 1250,
|
||||||
|
ExitMaxAdjust = 1250,
|
||||||
|
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/FLIPDEVICE',
|
||||||
|
'BASE/MOD08', 'BASE/MOD09', 'BASE/MOD10', 'BASE/MOD11', 'BASE/MOD12', 'BASE/MOD13', 'BASE/MOD14', 'BASE/REF', 'BASE/COLLISION'}}
|
||||||
|
local vtMove = Vector3d( DeltaTabX - 809.65, DeltaTabY + 5290.0, DeltaTabZ + 990)
|
||||||
|
EgtMove( BaseId, vtMove, GDB_RT.GLOB)
|
||||||
|
-- Tavola
|
||||||
|
EmtTable {
|
||||||
|
Name = 'Tab',
|
||||||
|
Parent = 'Base',
|
||||||
|
Type = MCH_TT.FLAT,
|
||||||
|
Ref1 = Point3d( DeltaTabX, DeltaTabY, DeltaTabZ),
|
||||||
|
Scale = {DimTabX/41550, DimTabY/4000, 1},
|
||||||
|
Geo = 'TABLE/GEO'}
|
||||||
|
-- Traversa
|
||||||
|
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/COLLISION'}}
|
||||||
|
-- Carro 1
|
||||||
|
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', 'X1_AXIS/COLLISION'}}
|
||||||
|
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( Nail14DeltaX, Nail14DeltaY, Nail14DeltaZ),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
Geo = 'H14_HEAD/GEO',
|
||||||
|
Aux = {'H14_HEAD/SOLID'}}
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( H14Id, 'SOLID'), Vector3d( Nail14OffsX, Nail14OffsY, Nail14OffsZ), GDB_RT.GLOB)
|
||||||
|
-- Assi rotanti
|
||||||
|
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'}}
|
||||||
|
-- Testa principale
|
||||||
|
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)
|
||||||
|
-- Carro 2
|
||||||
|
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 H2Id = EmtHead {
|
||||||
|
Name = 'H2',
|
||||||
|
Parent = 'C2',
|
||||||
|
HSet = 'H2',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( SawDeltaX, SawDeltaY + SawOffs, SawDeltaZ),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = Z_AX(),
|
||||||
|
Rot1W = 0.2,
|
||||||
|
OthColl = {'C2/SOLID'},
|
||||||
|
Geo = 'H2_HEAD/GEO'}
|
||||||
|
local H21Id = EmtHead {
|
||||||
|
Name = 'H21',
|
||||||
|
Parent = 'Z2',
|
||||||
|
HSet = 'H21',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( Nail11DeltaX, Nail11DeltaY, Nail11DeltaZ),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
Geo = 'H21_HEAD/GEO',
|
||||||
|
Aux = {'H21_HEAD/SOLID'}}
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( H21Id, 'SOLID'), Vector3d( Nail11OffsX, Nail11OffsY, Nail11OffsZ), GDB_RT.GLOB)
|
||||||
|
local H22Id = EmtHead {
|
||||||
|
Name = 'H22',
|
||||||
|
Parent = 'Z2',
|
||||||
|
HSet = 'H22',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( Nail12DeltaX, Nail12DeltaY, Nail12DeltaZ),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
Geo = 'H22_HEAD/GEO',
|
||||||
|
Aux = {'H22_HEAD/SOLID'}}
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( H22Id, 'SOLID'), Vector3d( Nail12OffsX, Nail12OffsY, Nail12OffsZ), GDB_RT.GLOB)
|
||||||
|
local H23Id = EmtHead {
|
||||||
|
Name = 'H23',
|
||||||
|
Parent = 'Z2',
|
||||||
|
HSet = 'H23',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( Nail13DeltaX, Nail13DeltaY, Nail13DeltaZ),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
Geo = 'H23_HEAD/GEO',
|
||||||
|
Aux = {'H23_HEAD/SOLID'}}
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( H23Id, 'SOLID'), Vector3d( Nail13OffsX, Nail13OffsY, Nail13OffsZ), GDB_RT.GLOB)
|
||||||
|
-- ToolChanger
|
||||||
|
local ptTcA = Point3d( -375.6,-568.0,-79.8)
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T1',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA,
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA1'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T2',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 120 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA2'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T3',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 240 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA3'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T4',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 360 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA4'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T5',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 480 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA5'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T6',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 600 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA6'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T7',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 720 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA7'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T8',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 840 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA8'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T9',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcA - 960 * Z_AX(),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TA9'}
|
||||||
|
local ptTcB = Point3d( -495.6,-5226.7,17.0)
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T10',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB,
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB1'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T11',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB + 120 * Y_AX(),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB2'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T12',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB + 240 * Y_AX(),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB3'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T13',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB + 360 * Y_AX(),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB4'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T14',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB + 480 * Y_AX(),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB5'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T15',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB + 600 * Y_AX(),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB6'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T16',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB + 720 * Y_AX(),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB7'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T17',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = ptTcB + 840 * Y_AX(),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TB8'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T18',
|
||||||
|
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,-1307.4,-83.8),
|
||||||
|
TDir = X_AX(),
|
||||||
|
ADir = Z_AX(),
|
||||||
|
Geo = 'Y_AXIS/TC1'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T201',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = Point3d(-804.5,-1682.5,-39.5),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TC3A'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T202',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = Point3d(-804.5,-2042.5,-39.5),
|
||||||
|
TDir = Z_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TC3B'}
|
||||||
|
EmtTcPos {
|
||||||
|
Name = 'T203',
|
||||||
|
Parent = 'Y',
|
||||||
|
Pos = Point3d(-5.35,206.5,-416.14),
|
||||||
|
TDir = -Y_AX(),
|
||||||
|
ADir = X_AX(),
|
||||||
|
Geo = 'Y_AXIS/TC2'}
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- 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()
|
||||||
|
-- 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
|
||||||
|
EmtModifyAxisHome( 'Z1', -150)
|
||||||
|
EmtModifyAxisStroke( 'C1', { -180.1, 0.1})
|
||||||
|
EmtModifyAxisStroke( 'B1', { -90, 0})
|
||||||
|
EmtModifyAxisHome( 'C1', ParkSawC1)
|
||||||
|
EmtModifyAxisHome( 'B1', ParkSawB1)
|
||||||
|
-- altri casi su testa 5 assi
|
||||||
|
elseif EMC.HEAD == 'H1' then
|
||||||
|
EmtModifyAxisHome( 'Z1', MaxZ1)
|
||||||
|
EmtModifyAxisStroke( 'C1', { MinC1, MaxC1})
|
||||||
|
if EMC.TCPOS == 'T201' or EMC.TCPOS == 'T202' then
|
||||||
|
EmtModifyAxisStroke( 'B1', { -0.1, 0.1})
|
||||||
|
EmtModifyAxisHome( 'B1', 0)
|
||||||
|
EmtModifyAxisHome( 'C1', PosSpecC1)
|
||||||
|
EmtModifyHeadAuxDirection( 'H1', V_NULL())
|
||||||
|
else
|
||||||
|
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
|
||||||
|
EmtModifyAxisHome( 'B1', ParkB1)
|
||||||
|
EmtModifyAxisHome( 'C1', ParkC1)
|
||||||
|
EmtModifyHeadAuxDirection( 'H1', Y_AX())
|
||||||
|
end
|
||||||
|
else
|
||||||
|
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
|
||||||
|
EmtModifyAxisHome( 'C1', ParkC1)
|
||||||
|
EmtModifyHeadAuxDirection( 'H1', Y_AX())
|
||||||
|
end
|
||||||
|
if EMC.HEAD == 'H14' then
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'SOLID'), Z_AX(), 0, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'T1'), Z_AX(), 0, true)
|
||||||
|
EmtModifyAxisHome( 'C1', 90)
|
||||||
|
EgtResetAxisPos( 'C1')
|
||||||
|
EmtModifyAxisHome( 'B1', 90)
|
||||||
|
EgtResetAxisPos( 'B1')
|
||||||
|
else
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'SOLID'), Z_AX(), 680, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'T1'), Z_AX(), 680, true)
|
||||||
|
end
|
||||||
|
if EMC.HEAD == 'H21' then
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H21Id, 'SOLID'), Z_AX(), 0, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H21Id, 'T1'), Z_AX(), 0, true)
|
||||||
|
else
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H21Id, 'SOLID'), Z_AX(), 450, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H21Id, 'T1'), Z_AX(), 450, true)
|
||||||
|
end
|
||||||
|
if EMC.HEAD == 'H22' then
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H22Id, 'SOLID'), Z_AX(), 0, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H22Id, 'T1'), Z_AX(), 0, true)
|
||||||
|
else
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H22Id, 'SOLID'), Z_AX(), 450, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H22Id, 'T1'), Z_AX(), 450, true)
|
||||||
|
end
|
||||||
|
if EMC.HEAD == 'H23' then
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H23Id, 'SOLID'), Z_AX(), 0, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H23Id, 'T1'), Z_AX(), 0, true)
|
||||||
|
else
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H23Id, 'SOLID'), Z_AX(), 450, true)
|
||||||
|
MoveGroup( EgtGetFirstNameInGroup( H23Id, 'T1'), Z_AX(), 450, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
||||||
|
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
||||||
|
-- quota fissa
|
||||||
|
return -150
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- Funzione che calcola l'angolo Home di C per la sega a catena dal valore dell'asse virtuale
|
||||||
|
function GetChainSawCHomeFromVirtualAxis( dPosA)
|
||||||
|
-- se A=180 -> T104 -> HomeC = -90
|
||||||
|
if abs( dPosA - 180) < 0.1 then
|
||||||
|
return -90
|
||||||
|
-- altrimenti A=90 -> T101 -> HomeC = 0
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
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
|
||||||
@@ -0,0 +1,799 @@
|
|||||||
|
-- Processore macchina Essetre-WALL by EgalTech s.r.l. 2021/10/18
|
||||||
|
-- Con controllo numerico NUM
|
||||||
|
-- 2021/08/25 DS ver 2.3h1 Ridotta emissione G126 ad uno all'inizio e uno alla fine con EC-1.
|
||||||
|
-- 2021/09/20 DS ver 2.3i4 Aggiunta gestione origini da BtlInfo/REFPOS.
|
||||||
|
|
||||||
|
-- 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)
|
||||||
|
-- Se modalità test, rinomino il programma come XPI
|
||||||
|
if TEST_USE then
|
||||||
|
local sNewPath = EgtChangePathExtension( EMT.FILE, '.xpi')
|
||||||
|
EgtEraseFile( sNewPath)
|
||||||
|
EgtRenameFile( EMT.FILE, sNewPath)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function OnProgramStart()
|
||||||
|
-- Info da gruppo BtlInfo
|
||||||
|
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL
|
||||||
|
EMT.ORIG = EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 1
|
||||||
|
-- Intestazioni
|
||||||
|
if not TEST_USE then
|
||||||
|
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL
|
||||||
|
EMT.PRODID = EgtGetInfo( BtlInfoId, 'PRODID', 'i') or 0
|
||||||
|
EMT.PATTID = EgtGetInfo( BtlInfoId, 'PATTID', 'i') or 0
|
||||||
|
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..')')
|
||||||
|
-- Parametri macchina
|
||||||
|
local sOut = 'L151='..EgtNumToString( DeltaTabY + DimTabY - Nail11DeltaY, 2)..'\n'..
|
||||||
|
'L152='..EgtNumToString( -DeltaTabX + Nail11DeltaX, 2)..'\n'..
|
||||||
|
'L153='..EgtNumToString( DeltaTabZ - Nail11DeltaZ, 2)..'\n'..
|
||||||
|
'L154='..EgtNumToString( DeltaTabY + DimTabY - Nail12DeltaY, 2)..'\n'..
|
||||||
|
'L155='..EgtNumToString( -DeltaTabX + Nail12DeltaX, 2)..'\n'..
|
||||||
|
'L156='..EgtNumToString( DeltaTabZ - Nail12DeltaZ, 2)..'\n'..
|
||||||
|
'L157='..EgtNumToString( DeltaTabY + DimTabY - Nail13DeltaY, 2)..'\n'..
|
||||||
|
'L158='..EgtNumToString( -DeltaTabX + Nail13DeltaX, 2)..'\n'..
|
||||||
|
'L159='..EgtNumToString( DeltaTabZ - Nail13DeltaZ, 2)..'\n'..
|
||||||
|
'L160='..EgtNumToString( DeltaTabY + DimTabY - Nail14DeltaY, 2)..'\n'..
|
||||||
|
'L161='..EgtNumToString( -DeltaTabX + Nail14DeltaX, 2)..'\n'..
|
||||||
|
'L162='..EgtNumToString( DeltaTabZ - Nail14DeltaZ, 2)..'\n'..
|
||||||
|
'L163='..EgtNumToString( Orig2DeltaY, 2)..'\n'..
|
||||||
|
'L164='..EgtNumToString( -Orig2DeltaX, 2)..'\n'..
|
||||||
|
'L165='..EgtNumToString( Orig2DeltaZ, 2)..'\n'..
|
||||||
|
'L166='..EgtNumToString( Orig3DeltaY, 2)..'\n'..
|
||||||
|
'L167='..EgtNumToString( -Orig3DeltaX, 2)..'\n'..
|
||||||
|
'L168='..EgtNumToString( Orig3DeltaZ, 2)..'\n'..
|
||||||
|
'L169='..EgtNumToString( Orig4DeltaY, 2)..'\n'..
|
||||||
|
'L170='..EgtNumToString( -Orig4DeltaX, 2)..'\n'..
|
||||||
|
'L171='..EgtNumToString( Orig4DeltaZ, 2)..'\n'..
|
||||||
|
'L172='..EgtNumToString( Orig5DeltaY, 2)..'\n'..
|
||||||
|
'L173='..EgtNumToString( -Orig5DeltaX, 2)..'\n'..
|
||||||
|
'L174='..EgtNumToString( Orig5DeltaZ, 2)..'\n'..
|
||||||
|
'L175='..EgtNumToString( Orig6DeltaY, 2)..'\n'..
|
||||||
|
'L176='..EgtNumToString( -Orig6DeltaX, 2)..'\n'..
|
||||||
|
'L177='..EgtNumToString( Orig6DeltaZ, 2)..'\n'..
|
||||||
|
'G114'..' EA'..EgtNumToString( DeltaTabY + DimTabY - SawDeltaY, 2)..' EB'..EgtNumToString( -DeltaTabX + SawDeltaX, 2)..
|
||||||
|
' EC'..EgtNumToString( DeltaTabZ - SawDeltaZ, 2)..' ED'..EgtNumToString( 0, 2)..' EE'..EgtNumToString( SawOffs, 2)..
|
||||||
|
' EF'..EgtNumToString( DeltaTabY + DimTabY, 2)..' EG'..EgtNumToString( -DeltaTabX, 2)..
|
||||||
|
' EH'..EgtNumToString( DeltaTabZ, 2)..' EI'..EgtNumToString( MillOffs, 2)
|
||||||
|
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
|
||||||
|
local sOut = 'G126 EA'..tostring( EMT.PRODID)..' EB'..tostring( EMT.PATTID)..' EC'..tostring( -1)..' ED2'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
end
|
||||||
|
-- Arresto mandrino
|
||||||
|
EmtOutput( 'M05 E80000=1')
|
||||||
|
-- Tipo di scarico
|
||||||
|
if not TEST_USE then
|
||||||
|
EmtOutput( 'M27 E30057=1')
|
||||||
|
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)
|
||||||
|
EmtOutput( 'E30050='..EgtNumToString( 1000 * b3Raw:getDimY(), 0)..
|
||||||
|
' E30051='..EgtNumToString( 1000 * b3Raw:getDimX(), 0)..
|
||||||
|
' E30052='..EgtNumToString( 1000 * b3Raw:getDimZ(), 0))
|
||||||
|
EMT.ST = b3Raw:getDimZ()
|
||||||
|
-- Scelta origine
|
||||||
|
EmtOutput( 'M26 E30054='..EgtNumToString( EMT.ORIG, 0))
|
||||||
|
-- Posizione cuffia
|
||||||
|
local dHCuff = b3Raw:getDimZ() + 32
|
||||||
|
EmtOutput( 'E30039=' .. EgtNumToString( dHCuff * 1000, 0))
|
||||||
|
-- Eventuale salto a lavorazione in corso
|
||||||
|
EmtOutput( 'G79 NE80000')
|
||||||
|
-- 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
|
||||||
|
local sOut = 'G126 EA'..tostring( EMT.PRODID)..' EB'..tostring( EMT.PATTID)..' EC'..tostring( -1)..' ED1'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
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)
|
||||||
|
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||||
|
-- se chiodatura in doppio, imposto attivazione testa associata 12
|
||||||
|
local nDouble = GetValNotes( sNotes, 'Dbl', 'i')
|
||||||
|
if EMT.HEAD == 'H14' and nDouble and nDouble > 0 then
|
||||||
|
EMT.DOUBLE = nDouble
|
||||||
|
EMT.DELTA = GetValNotes( sNotes, 'Dlt', 'd') or 0
|
||||||
|
EMT.DBLACC = abs( EgtGetMachiningParam( MCH_MP.STARTADDLEN) + EgtGetMachiningParam( MCH_MP.ENDADDLEN))
|
||||||
|
end
|
||||||
|
-- non ancora iniziata la lavorazione
|
||||||
|
EMT.MCHFIRST = true
|
||||||
|
-- primo posizionamento sempre in globale
|
||||||
|
EMT.REFLOC = nil
|
||||||
|
EMT.IPLGL = false
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function OnMachiningEnd()
|
||||||
|
EMT.PREVTOOL = EMT.TOOL
|
||||||
|
EMT.DOUBLE = nil
|
||||||
|
EMT.DELTA = nil
|
||||||
|
EMT.DBLLEN = nil
|
||||||
|
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)
|
||||||
|
if EMT.HEAD == 'H21' or EMT.HEAD == 'H23' then
|
||||||
|
EmtOutput( 'G102 X'..EmtLenToString( EMT.NAIL_START_L1, 3)..' Y'..EmtLenToString( EMT.NAIL_START_L2, 3)..' Z'..EmtLenToString( EMT.NAIL_START_L3, 3)..
|
||||||
|
' U'..EmtLenToString( EMT.NAIL_END_L1, 3)..' V'..EmtLenToString( EMT.NAIL_END_L2, 3)..' A'..EmtLenToString( dStep, 3)..
|
||||||
|
' W'..EmtLenToString( dSafeZ, 3)..EMT.NAIL_END)
|
||||||
|
else
|
||||||
|
local sExtra = ''
|
||||||
|
local bInvert = false
|
||||||
|
if EMT.DOUBLE then
|
||||||
|
sExtra = ' EH' .. EmtLenToString( EMT.DELTA, 3)
|
||||||
|
-- se doppio parallelo alla traversa macchina devo andare sempre verso il negativo
|
||||||
|
if EMT.DOUBLE == 2 then
|
||||||
|
if EMT.NAIL_END_L1 > EMT.NAIL_START_L1 then
|
||||||
|
bInvert = true
|
||||||
|
end
|
||||||
|
--if EMT.NAIL_END_L1 > EMT.NAIL_START_L1 then
|
||||||
|
-- EMT.NAIL_START_L1, EMT.NAIL_END_L1 = EMT.NAIL_END_L1, EMT.NAIL_START_L1
|
||||||
|
-- EMT.NAIL_START_L2, EMT.NAIL_END_L2 = EMT.NAIL_END_L2, EMT.NAIL_START_L2
|
||||||
|
--end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local dX = EMT.NAIL_END_L1 - EMT.NAIL_START_L1
|
||||||
|
local dY = EMT.NAIL_END_L2 - EMT.NAIL_START_L2
|
||||||
|
local dLen = sqrt( dX * dX + dY * dY)
|
||||||
|
local nStep = max( ceil( ( dLen - 1) / dStep), 1)
|
||||||
|
for i = 0, nStep do
|
||||||
|
local dCoeff = i / nStep
|
||||||
|
local PosX = ( 1 - dCoeff) * EMT.NAIL_START_L1 + dCoeff * EMT.NAIL_END_L1
|
||||||
|
local PosY = ( 1 - dCoeff) * EMT.NAIL_START_L2 + dCoeff * EMT.NAIL_END_L2
|
||||||
|
local sExtra2 = ''
|
||||||
|
-- se doppio parallelo alla traversa macchina, disabilito testa 2 quando va oltre (0=abilitata, 2=disabilitata)
|
||||||
|
if EMT.DOUBLE == 2 then
|
||||||
|
local dCoeff2 = EgtIf( bInvert, 1 - dCoeff, dCoeff)
|
||||||
|
if dCoeff2 * dLen + EMT.DELTA < dLen + EMT.DBLACC + 0.1 then
|
||||||
|
sExtra2 = ' EI0'
|
||||||
|
else
|
||||||
|
sExtra2 = ' EI2'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
EmtOutput( 'G102 X'..EmtLenToString( PosX, 3)..' Y'..EmtLenToString( PosY, 3)..' Z'..EmtLenToString( EMT.NAIL_START_L3, 3)..
|
||||||
|
' U'..EmtLenToString( PosX, 3)..' V'..EmtLenToString( PosY, 3)..' A0 W'..EmtLenToString( dSafeZ, 3)..sExtra..sExtra2..EMT.NAIL_END)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if EMT.TO_ZMAX then
|
||||||
|
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
|
||||||
|
EMT.TO_ZMAX = nil
|
||||||
|
EMT.ZMAX = true
|
||||||
|
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 sEE = GetEE()
|
||||||
|
local sEF = GetEF()
|
||||||
|
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||||
|
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
|
||||||
|
local sEL = ' EL' .. EmtLenToString( ChSawLen, 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EMT.TLEN, 3)
|
||||||
|
sOut = sOut .. sET .. sEU .. sEE .. 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()
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
|
||||||
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1')
|
||||||
|
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' or ( EMT.HEAD == 'H14' and not EMT.DOUBLE) then
|
||||||
|
sOut = sOut .. ' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
|
||||||
|
elseif EMT.HEAD == 'H14' then
|
||||||
|
sOut = sOut .. ' U' .. EmtLenToString( EMT.L2 - EMT.DELTA, 3) .. ' W0 V0 A0'
|
||||||
|
elseif EMT.HEAD == 'H2' or EMT.HEAD == 'H21' or EMT.HEAD == 'H22' or EMT.HEAD == 'H23' then
|
||||||
|
sOut = sOut .. ' U' .. EmtLenToString( MaxX1, 3) .. ' W0 V0 A0'
|
||||||
|
else
|
||||||
|
EmtSetLastError( 1211, "Unknown Head : " .. EMT.HEAD)
|
||||||
|
end
|
||||||
|
local sET = GetET()
|
||||||
|
local sEU = GetEU()
|
||||||
|
local sEE = GetEE()
|
||||||
|
local sEF = GetEF()
|
||||||
|
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||||
|
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
|
||||||
|
local sEL = ' EL' .. EmtLenToString( 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 .. sEE .. sEF .. sEM .. sES .. sEL .. sER
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EMT.REFLOC = 0
|
||||||
|
EMT.MCHFIRST = false
|
||||||
|
EMT.ZMAX = false
|
||||||
|
-- se standard
|
||||||
|
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
|
||||||
|
-- se necessario, impostazione riferimento locale
|
||||||
|
if 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 sEE = GetEE()
|
||||||
|
local sEF = ' EF20000'
|
||||||
|
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||||
|
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
if not IsNailingHead( EMT.HEAD) then
|
||||||
|
EmtOutput( 'G102'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EmtGetAxis('R2')..EmtGetAxis('R1')..EMT.IPLGLSTR..sET..sEU..sEE..sEF..sEM..sES..sEL..sER)
|
||||||
|
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..sEE..sEF..sEM..sES..sEL..sER
|
||||||
|
end
|
||||||
|
else
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
end
|
||||||
|
-- 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
|
||||||
|
-- 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()
|
||||||
|
end
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
-- se fresa o punta su testa 1 raddrizzo l'utensile in risalita
|
||||||
|
if EMT.HEAD == 'H1' and EMT.TCPOS ~= 'T201' and EMT.TCPOS ~= 'T202' and EMT.TCPOS ~= 'T203' then
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
|
||||||
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') ..
|
||||||
|
' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
|
||||||
|
local sET = GetET()
|
||||||
|
local sEU = GetEU()
|
||||||
|
local sEE = GetEE()
|
||||||
|
local sEF = GetEF()
|
||||||
|
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||||
|
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EMT.TLEN, 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EMT.TDIAM / 2, 3)
|
||||||
|
sOut = sOut .. sET .. sEU .. sEE .. sEF .. sEM .. sES .. sEL .. sER
|
||||||
|
EmtOutput( sOut)
|
||||||
|
-- se altrimenti sega a catena
|
||||||
|
elseif EMT.HEAD == 'H3' then
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
|
||||||
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') ..
|
||||||
|
' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
|
||||||
|
local sET = GetET()
|
||||||
|
local sEU = GetEU()
|
||||||
|
local sEE = GetEE()
|
||||||
|
local sEF = GetEF()
|
||||||
|
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||||
|
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EMT.TLEN, 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EMT.TDIAM / 2, 3)
|
||||||
|
sOut = sOut .. sET .. sEU .. sEE .. sEF .. sEM .. sES .. sEL .. sER
|
||||||
|
EmtOutput( sOut)
|
||||||
|
sOut = 'G101' .. ' X' .. EmtLenToString( ( MinX1 + MaxX1) / 2, 3)..
|
||||||
|
' U' .. EmtLenToString( MinX2, 3) .. ' W0 V0 A0'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
end
|
||||||
|
-- dichiarazione risalita a Zmax
|
||||||
|
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
|
||||||
|
EMT.ZMAX = true
|
||||||
|
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 necessario, impostazione riferimento locale
|
||||||
|
if 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
|
||||||
|
-- imposto posizione precedente
|
||||||
|
EMT.L1 = EMT.L1o
|
||||||
|
EMT.L2 = EMT.L2o
|
||||||
|
EMT.L3 = EMT.L3o
|
||||||
|
-- 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 sEE = GetEE()
|
||||||
|
local sEF = ' EF20000'
|
||||||
|
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
|
||||||
|
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
if not IsNailingHead( EMT.HEAD) then
|
||||||
|
EmtOutput( 'G102'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EmtGetAxis('R2')..EmtGetAxis('R1')..EMT.IPLGLSTR..sET..sEU..sEE..sEF..sEM..sES..sEL..sER)
|
||||||
|
-- emissione movimento
|
||||||
|
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||||
|
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtUpdatePrev()
|
||||||
|
EMT.Fp = nil
|
||||||
|
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..sEE..sEF..sEM..sES..sEL..sER
|
||||||
|
end
|
||||||
|
-- ripristino posizione attuale
|
||||||
|
EMT.L1 = OldL1
|
||||||
|
EMT.L2 = OldL2
|
||||||
|
EMT.L3 = OldL3
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
-- aggiungo feed
|
||||||
|
local sFeed = EmtGetFeed()
|
||||||
|
-- emetto linea
|
||||||
|
EmtOutput( "G1"..sAxes..sFeed)
|
||||||
|
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)
|
||||||
|
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( Nail14DeltaX, Nail14DeltaY, Nail14DeltaZ)
|
||||||
|
vtE = Z_AX() * EMT.TLEN
|
||||||
|
elseif EMT.HEAD == 'H21' then
|
||||||
|
vtDelta = -Vector3d( Nail11DeltaX, Nail11DeltaY, Nail11DeltaZ)
|
||||||
|
vtE = Z_AX() * EMT.TLEN
|
||||||
|
elseif EMT.HEAD == 'H22' then
|
||||||
|
vtDelta = -Vector3d( Nail12DeltaX, Nail12DeltaY, Nail12DeltaZ)
|
||||||
|
vtE = Z_AX() * EMT.TLEN
|
||||||
|
elseif EMT.HEAD == 'H23' then
|
||||||
|
vtDelta = -Vector3d( Nail13DeltaX, Nail13DeltaY, Nail13DeltaZ)
|
||||||
|
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()
|
||||||
|
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.ST, 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
|
||||||
|
local xOut = yS - DeltaTabY - DimTabY
|
||||||
|
local yOut = - ( xS - DeltaTabX)
|
||||||
|
local zOut = zS
|
||||||
|
if EMT.ORIG == 2 then
|
||||||
|
xOut = yS - DeltaTabY
|
||||||
|
yOut = - ( xS - DeltaTabX)
|
||||||
|
elseif EMT.ORIG == 3 then
|
||||||
|
xOut = yS - DeltaTabY - DimTabY
|
||||||
|
yOut = - ( xS - DeltaTabX - DimTabX)
|
||||||
|
elseif EMT.ORIG == 4 then
|
||||||
|
xOut = yS - DeltaTabY
|
||||||
|
yOut = - ( xS - DeltaTabX - DimTabX)
|
||||||
|
elseif EMT.ORIG == 5 then
|
||||||
|
xOut = yS - DeltaTabY - DimTabY
|
||||||
|
yOut = - ( xS - DeltaTabX - Orig5DeltaX)
|
||||||
|
elseif EMT.ORIG == 6 then
|
||||||
|
xOut = yS - DeltaTabY
|
||||||
|
yOut = - ( xS - DeltaTabX - Orig5DeltaX)
|
||||||
|
end
|
||||||
|
EMT.IPLGLSTR = ' EX'..EmtLenToString( xOut)..' EY'..EmtLenToString( yOut)..' EZ'..EmtLenToString( zOut)..
|
||||||
|
' EA0'..' EB'..EgtNumToString( dAngV)..' EC'..EgtNumToString( dAngO)..' ED'..EgtNumToString( dAngO2)
|
||||||
|
EMT.IPLGL = true
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function GetET()
|
||||||
|
local sET
|
||||||
|
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
|
||||||
|
sET = ' ET2'
|
||||||
|
elseif EMT.HEAD == 'H2' then
|
||||||
|
sET = ' ET1'
|
||||||
|
elseif EMT.HEAD == 'H21' then
|
||||||
|
sET = ' ET11'
|
||||||
|
elseif EMT.HEAD == 'H22' then
|
||||||
|
sET = ' ET12'
|
||||||
|
elseif EMT.HEAD == 'H23' then
|
||||||
|
sET = ' ET13'
|
||||||
|
elseif EMT.HEAD == 'H14' then
|
||||||
|
sET = ' ET14'
|
||||||
|
end
|
||||||
|
return sET
|
||||||
|
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 GetEE()
|
||||||
|
return ' EE' .. EgtNumToString( EMT.ORIG, 0)
|
||||||
|
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' or sHead == 'H21' or sHead == 'H22' or sHead == 'H23')
|
||||||
|
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 ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
+1038
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,58 @@
|
|||||||
|
-- Special Operations macchina Essetre-WALL by EgalTech s.r.l. 2022/01/13
|
||||||
|
|
||||||
|
-- Intestazioni
|
||||||
|
require( 'EmtGenerator')
|
||||||
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function OnSpecialMoveZup()
|
||||||
|
|
||||||
|
-- Inizializzazioni
|
||||||
|
EMC.MODIF = false
|
||||||
|
EMC.ERR = 1
|
||||||
|
|
||||||
|
-- Se lama grande
|
||||||
|
if EMC.HEAD == 'H1' and EMC.TCPOS == 'T203' then
|
||||||
|
-- asse C già limitato per evitare problemi
|
||||||
|
-- se altrimenti fresa
|
||||||
|
elseif 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, EgtGetAxisHomePos( 'Z1'))
|
||||||
|
R1New = EgtGetAxisHomePos( 'C1')
|
||||||
|
R2New = EgtGetAxisHomePos( 'B1')
|
||||||
|
EMC.MODIF = true
|
||||||
|
end
|
||||||
|
if EMC.L2 > -1800 then
|
||||||
|
R1New = -90
|
||||||
|
EMC.MODIF = true
|
||||||
|
elseif EMC.L2 < -4800 then
|
||||||
|
R1New = -90
|
||||||
|
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 altre teste
|
||||||
|
elseif EMC.HEAD == 'H14' or EMC.HEAD == 'H2' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' or EMC.HEAD == 'H23' then
|
||||||
|
-- non è necessaria una gestione speciale
|
||||||
|
-- altrimenti errore
|
||||||
|
else
|
||||||
|
error( "Unknown Head")
|
||||||
|
end
|
||||||
|
EMC.ERR = 0
|
||||||
|
end
|
||||||
Binary file not shown.
@@ -1,93 +0,0 @@
|
|||||||
# Essetre-90480023_XS-MW
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Getting started
|
|
||||||
|
|
||||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
|
||||||
|
|
||||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
|
||||||
|
|
||||||
## Add your files
|
|
||||||
|
|
||||||
* [Create](https://docs.gitlab.com/user/project/repository/web_editor/#create-a-file) or [upload](https://docs.gitlab.com/user/project/repository/web_editor/#upload-a-file) files
|
|
||||||
* [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
|
|
||||||
|
|
||||||
```
|
|
||||||
cd existing_repo
|
|
||||||
git remote add origin https://gitlab.steamware.net/egalware-machines/essetre/essetre-90480023_xs-mw.git
|
|
||||||
git branch -M main
|
|
||||||
git push -uf origin main
|
|
||||||
```
|
|
||||||
|
|
||||||
## Integrate with your tools
|
|
||||||
|
|
||||||
* [Set up project integrations](https://gitlab.steamware.net/egalware-machines/essetre/essetre-90480023_xs-mw/-/settings/integrations)
|
|
||||||
|
|
||||||
## Collaborate with your team
|
|
||||||
|
|
||||||
* [Invite team members and collaborators](https://docs.gitlab.com/user/project/members/)
|
|
||||||
* [Create a new merge request](https://docs.gitlab.com/user/project/merge_requests/creating_merge_requests/)
|
|
||||||
* [Automatically close issues from merge requests](https://docs.gitlab.com/user/project/issues/managing_issues/#closing-issues-automatically)
|
|
||||||
* [Enable merge request approvals](https://docs.gitlab.com/user/project/merge_requests/approvals/)
|
|
||||||
* [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
|
|
||||||
|
|
||||||
## Test and Deploy
|
|
||||||
|
|
||||||
Use the built-in continuous integration in GitLab.
|
|
||||||
|
|
||||||
* [Get started with GitLab CI/CD](https://docs.gitlab.com/ci/quick_start/)
|
|
||||||
* [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/user/application_security/sast/)
|
|
||||||
* [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/topics/autodevops/requirements/)
|
|
||||||
* [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/user/clusters/agent/)
|
|
||||||
* [Set up protected environments](https://docs.gitlab.com/ci/environments/protected_environments/)
|
|
||||||
|
|
||||||
***
|
|
||||||
|
|
||||||
# Editing this README
|
|
||||||
|
|
||||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
|
||||||
|
|
||||||
## Suggestions for a good README
|
|
||||||
|
|
||||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
|
||||||
|
|
||||||
## Name
|
|
||||||
Choose a self-explaining name for your project.
|
|
||||||
|
|
||||||
## Description
|
|
||||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
|
||||||
|
|
||||||
## Badges
|
|
||||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
|
||||||
|
|
||||||
## Visuals
|
|
||||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
|
||||||
|
|
||||||
## Support
|
|
||||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
|
||||||
|
|
||||||
## Roadmap
|
|
||||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
State if you are open to contributions and what your requirements are for accepting them.
|
|
||||||
|
|
||||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
|
||||||
|
|
||||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
|
||||||
|
|
||||||
## Authors and acknowledgment
|
|
||||||
Show your appreciation to those who have contributed to the project.
|
|
||||||
|
|
||||||
## License
|
|
||||||
For open source projects, say how it is licensed.
|
|
||||||
|
|
||||||
## Project status
|
|
||||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
|
||||||
@@ -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,215 @@
|
|||||||
|
-- 2017/01/18 12:30:00
|
||||||
|
-- Gestione attrezzaggio per Essetre-FAST
|
||||||
|
|
||||||
|
-- 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 = "T10", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos11", TcPos = "T11", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos12", TcPos = "T12", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos13", TcPos = "T13", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos14", TcPos = "T14", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos15", TcPos = "T15", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos16", TcPos = "T16", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos17", TcPos = "T17", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos18", TcPos = "T18", Head = "H1", Group = "G2"},
|
||||||
|
{Pos = "Pos19", TcPos = "T101", Head = "H3", Group = "G3"},
|
||||||
|
{Pos = "Pos20", TcPos = "T201", Head = "H1", Group = "G3"},
|
||||||
|
{Pos = "Pos21", TcPos = "T202", Head = "H1", Group = "G3"},
|
||||||
|
{Pos = "Pos22", TcPos = "T203", Head = "H1", Group = "G3"},
|
||||||
|
{Pos = "Pos23", TcPos = "T42", Head = "H2", Group = "G3"},
|
||||||
|
{Pos = "Pos24", TcPos = "T31", Head = "H21", Group = "G4"},
|
||||||
|
{Pos = "Pos25", TcPos = "T32", Head = "H22", Group = "G4"},
|
||||||
|
{Pos = "Pos26", TcPos = "T33", Head = "H23", Group = "G4"},
|
||||||
|
{Pos = "Pos27", TcPos = "T34", Head = "H14", Group = "G4"}}
|
||||||
|
|
||||||
|
local UsePositionHead = true
|
||||||
|
|
||||||
|
local function IsInGeomSet( ToolHead, PosHead)
|
||||||
|
for GsIndex = 1, #GS do
|
||||||
|
local bToolHead = false
|
||||||
|
local bPosHead = false
|
||||||
|
for HIndex = 1, #GS[GsIndex] do
|
||||||
|
if GS[GsIndex][HIndex] == ToolHead then
|
||||||
|
bToolHead = true
|
||||||
|
elseif GS[GsIndex][HIndex] == PosHead then
|
||||||
|
bPosHead = true
|
||||||
|
end
|
||||||
|
if bToolHead and bPosHead then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if bToolHead and bPosHead then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.IsCompatibleHeads()
|
||||||
|
STU.ISVALID = false
|
||||||
|
if IsInGeomSet(STU.HEAD1, STU.HEAD2) then
|
||||||
|
STU.ISVALID = true
|
||||||
|
else
|
||||||
|
STU.ISVALID = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.GetValidHeadExitForPos()
|
||||||
|
-- se TUUID non valido restituisco errore
|
||||||
|
local ToolName = EgtTdbGetToolFromUUID( STU.TUUID)
|
||||||
|
if ToolName == nill then
|
||||||
|
STU.ERR = 1
|
||||||
|
return
|
||||||
|
end
|
||||||
|
EgtTdbSetCurrTool( ToolName)
|
||||||
|
local CurrToolHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
STU.EXIT = EgtTdbGetCurrToolParam( MCH_TP.EXIT)
|
||||||
|
-- recupero testa predefinita per la posizione corrente
|
||||||
|
local CurrPosHead
|
||||||
|
for i = 1, #PositionTable do
|
||||||
|
if PositionTable[i].TcPos == STU.TCPOS then
|
||||||
|
CurrPosHead = PositionTable[i].Head
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- verifico se la testa è quella della posizione predefinita
|
||||||
|
if CurrPosHead == CurrToolHead then
|
||||||
|
STU.HEAD = CurrToolHead
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
-- verifico se la testa è compatibile con quella della posizione predefinita
|
||||||
|
elseif IsInGeomSet( CurrToolHead, CurrPosHead) then
|
||||||
|
if UsePositionHead then
|
||||||
|
STU.HEAD = CurrPosHead
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
else
|
||||||
|
STU.HEAD = CurrToolHead
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- la testa non è compatibile con quella della posizione predefinita
|
||||||
|
else
|
||||||
|
STU.HEAD = INVALIDPOS
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.IsValidTcPosFromHead()
|
||||||
|
STU.ISVALID = false
|
||||||
|
for i = 1, #PositionTable do
|
||||||
|
if PositionTable[i].TcPos == STU.TCPOS then
|
||||||
|
if PositionTable[i].Head == STU.HEAD then
|
||||||
|
STU.ISVALID = true
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
elseif IsInGeomSet(PositionTable[i].Head, STU.HEAD) then
|
||||||
|
STU.ISVALID = true
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
STU.ISVALID = false
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.GetTcPosHeadGroupFromPos()
|
||||||
|
for i = 1, #PositionTable do
|
||||||
|
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||||
|
STU.TCPOS = PositionTable[i].TcPos
|
||||||
|
STU.HEAD = PositionTable[i].Head
|
||||||
|
STU.GROUP = PositionTable[i].Group
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
STU.TCPOS = INVALIDPOS
|
||||||
|
STU.HEAD = INVALIDPOS
|
||||||
|
STU.GROUP = INVALIDPOS
|
||||||
|
STU.ERR = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.GetPosFromTcPos()
|
||||||
|
for i = 1, #PositionTable do
|
||||||
|
if PositionTable[i].TcPos == STU.TCPOS then
|
||||||
|
STU.POS = PositionTable[i].Pos
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
STU.POS = INVALIDPOS
|
||||||
|
STU.ERR = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.GetGroupFromTcPos()
|
||||||
|
for i = 1, #PositionTable do
|
||||||
|
if PositionTable[i].TcPos == STU.TCPOS then
|
||||||
|
STU.GROUP = PositionTable[i].Group
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
STU.GROUP = INVALIDPOS
|
||||||
|
STU.ERR = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.GetHeadFromPos()
|
||||||
|
for i = 1, #PositionTable do
|
||||||
|
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||||
|
STU.HEAD = PositionTable[i].Head
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
STU.HEAD = INVALIDPOS
|
||||||
|
STU.ERR = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function STU.GetTcPosFromPos()
|
||||||
|
for i = 1, #PositionTable do
|
||||||
|
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
|
||||||
|
STU.TCPOS = PositionTable[i].TcPos
|
||||||
|
STU.ERR = 0
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
STU.TCPOS = INVALIDPOS
|
||||||
|
STU.ERR = 1
|
||||||
|
end
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,29 @@
|
|||||||
|
[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
|
||||||
|
|
||||||
|
[Surfacing]
|
||||||
|
1=Roughing
|
||||||
|
2=Finishing
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
-- SurfacingData.lua by Egaltech s.r.l. 21/01/2026 19:59:24
|
||||||
|
-- Gestione dati lavorazioni per Travi
|
||||||
|
|
||||||
|
-- Tabella per definizione modulo
|
||||||
|
local SurfacingData = {
|
||||||
|
{ On = true, Name = 'SurfRoughing', Type = 'Roughing'},
|
||||||
|
{ On = true, Name = 'Surffinishing', Type = 'Finishing'},
|
||||||
|
{ On = true, Name = 'Surffinishing_DIA', Type = 'Finishing'}
|
||||||
|
}
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
return SurfacingData
|
||||||
@@ -0,0 +1,182 @@
|
|||||||
|
-- WallData.lua by Egaltech s.r.l. 2022/01/12
|
||||||
|
-- Raccolta dati generali per Pareti
|
||||||
|
|
||||||
|
EgtOutLog( ' 90480023_XS-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 = 0, -- 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
|
||||||
|
MAX_CLEAN_CRN30 = 60, -- massimo spessore per pulitura angolo con fresa 30deg
|
||||||
|
MAX_CLEAN_CRN60 = 150, -- massimo spessore per pulitura angolo con fresa 60deg
|
||||||
|
MILL_MAX_DEPTH_AS_MAT = true, -- massimo affondamento frese uguale ad altezza tagliente (max materiale)
|
||||||
|
T14_T12_DOUBLE = true, -- abilita chiodatura in doppio con teste T14 e T12
|
||||||
|
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
|
||||||
|
SIMUL_VIEW_DIR = 3, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
||||||
|
ORIG_CORNER = 'TL', -- posizione origine (TL,BL,TR,BR,TM,BM)
|
||||||
|
MID_REF = 27000, -- posizione X dell'origine intermedia
|
||||||
|
USE_POSY = true -- utilizzare POSY di BTL (spostamento sullo spessore per pareti a layer)
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Aggiornamento con dati da TechnoEssetre7
|
||||||
|
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480023_XS-MW.data"
|
||||||
|
local sData = EgtGetCurrMachineDir().."\\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 then
|
||||||
|
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
|
||||||
|
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
|
||||||
|
return 'TL'
|
||||||
|
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
|
||||||
|
return EgtIf( dSpeed > 0, MCH_SAW_HS.LEFT, MCH_SAW_HS.RIGHT)
|
||||||
|
else
|
||||||
|
return EgtIf( dSpeed < 0, MCH_SAW_HS.LEFT, MCH_SAW_HS.RIGHT)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
WallData.GetSawHeadSide = GetSawHeadSide
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
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