Compare commits
94 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 69d41c02b0 | |||
| f5b79d6f6d | |||
| 91414cf313 | |||
| 530b03c5d0 | |||
| 296f55042e | |||
| a858f6785d | |||
| 01435f40ea | |||
| 8c19fd7c7f | |||
| d75fd52179 | |||
| 893f695633 | |||
| 148c226479 | |||
| 98ae212816 | |||
| e246bd329f | |||
| 4100624c08 | |||
| 91fb6887e2 | |||
| 1f888528d1 | |||
| aba14fa0e4 | |||
| a3255c957b | |||
| 4a7fa2bfa8 | |||
| 3aba6374cf | |||
| 016ccf0224 | |||
| b3e7cefd0c | |||
| 5979f55c01 | |||
| 9d50af71c6 | |||
| f5d33f780a | |||
| b771a537d6 | |||
| 19cd08c362 | |||
| 5fb8a51a25 | |||
| 4c09b35eab | |||
| 7998af903c | |||
| 30d119fecf | |||
| cf698a25be | |||
| 7db43a20e3 | |||
| 2374bbd96a | |||
| 9a6de02364 | |||
| 0ac498e17b | |||
| 0a24d14e8c | |||
| 9c6694d5ef | |||
| ad46345b8e | |||
| 0fc1fd89d1 | |||
| 09d5c3c152 | |||
| cc9f676866 | |||
| be9c6305fb | |||
| f54320bf30 | |||
| 04c4b8f756 | |||
| 027094d67e | |||
| f0385c5558 | |||
| 4b35bf714e | |||
| c2d4489879 | |||
| d0f062ab32 | |||
| 26b673fc83 | |||
| 5a681e3d60 | |||
| 948ea31698 | |||
| 7ba2d56749 | |||
| f2816185cd | |||
| 205a44075d | |||
| f876850772 | |||
| 2a60d00f61 | |||
| 4d7297c498 | |||
| 9c358734ba | |||
| 88691bddcc | |||
| b633dc4349 | |||
| c443adc95b | |||
| 0f18e03948 | |||
| d8793d5a7a | |||
| deccc61aa1 | |||
| d609a50996 | |||
| 8d01762144 | |||
| ea4c237ab9 | |||
| dc31cfba27 | |||
| a908e52b77 | |||
| fca1cc97a0 | |||
| 37a0b8de9e | |||
| f48d69d54b | |||
| dffbe1fd9e | |||
| e74ed0b666 | |||
| 1ea3ec7c3a | |||
| 167d0ceece | |||
| c462826bbd | |||
| 2faa86507d | |||
| ae2746025e | |||
| 3d1e6dcbf8 | |||
| 038eed3541 | |||
| 5ead166d6d | |||
| 19b0efa341 | |||
| 5f343e9806 | |||
| 827e9e3c03 | |||
| f8c217a85d | |||
| e029dfa64b | |||
| e925500b5f | |||
| cf04020f10 | |||
| f06bfab111 | |||
| d344027033 | |||
| c082727044 |
+101
-22
@@ -2,19 +2,27 @@ variables:
|
|||||||
VERS_MAIN: '1.0'
|
VERS_MAIN: '1.0'
|
||||||
MACH_NAME: ''
|
MACH_NAME: ''
|
||||||
MACH_NAME_TEST: ''
|
MACH_NAME_TEST: ''
|
||||||
|
MANUFACTURER: ''
|
||||||
NEW_REL: ''
|
NEW_REL: ''
|
||||||
NET_SHARE_X: '\\10.74.82.201\EgwTech'
|
NET_SHARE_X: '\\10.74.82.201\EgwTech'
|
||||||
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
|
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
|
||||||
NET_SHARE_S: '\\10.74.82.201\Scambio'
|
NET_SHARE_S: '\\10.74.82.201\Scambio'
|
||||||
NET_SHARE_R: '\\10.74.82.201\EgwTech'
|
NET_SHARE_R: '\\10.74.82.201\EgwTech'
|
||||||
|
NET_SHARE_H: '\\10.74.82.252\team drives'
|
||||||
NET_USERQ: 'steamw\egalware'
|
NET_USERQ: 'steamw\egalware'
|
||||||
|
NET_USER_SERVICES: 'steamw\services'
|
||||||
MACH_VERS: '0.0.0.0'
|
MACH_VERS: '0.0.0.0'
|
||||||
TEMP_PATH: 'C:\MachinesDeploy'
|
TEMP_PATH: 'C:\MachinesDeploy'
|
||||||
MACHINES_PATH_R: 'R:\EgtData\Machines'
|
MACHINES_PATH_R: 'R:\EgtData\Machines_GIT'
|
||||||
DEST_MACHINES_PATH_R: 'R:\EgtData\Machines\zTestYAML'
|
DEST_MACHINES_PATH_H: 'H:'
|
||||||
SRC_PATH: ''
|
SRC_PATH: ''
|
||||||
BASE_PATH: ''
|
BASE_PATH: ''
|
||||||
TEST_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:
|
#Note compilazione LUA:
|
||||||
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
||||||
@@ -38,12 +46,29 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Copia macchina su R"
|
echo " Copia macchina su R"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
ROBOCOPY /MIR "$env:SRC_PATH" "$env:DEST_MACHINES_PATH_R\$env:MACH_NAME\" /XD "bin"
|
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||||
ROBOCOPY "$env:TEST_PATH" "$env:DEST_MACHINES_PATH_R\$env:MACH_NAME_TEST\" /E /XD "bin"
|
ROBOCOPY /MIR "$env:SRC_PATH" "$customerPathR\$env:MACH_NAME\" /XD "bin"
|
||||||
ROBOCOPY /MIR "$env:BASE_PATH" "$env:DEST_MACHINES_PATH_R\Deploy\$env:MACH_NAME\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
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
|
SLEEP 2
|
||||||
net use R: /delete
|
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
|
# helper copia script verso cartella di rete R:\ per develop
|
||||||
.ReplicaR_DEV: &ReplicaR_DEV
|
.ReplicaR_DEV: &ReplicaR_DEV
|
||||||
- |
|
- |
|
||||||
@@ -53,7 +78,8 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Copia macchina su R - DEV"
|
echo " Copia macchina su R - DEV"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
ROBOCOPY /MIR "$env:BASE_PATH" "$env:DEST_MACHINES_PATH_R\Deploy\$env:MACH_NAME\_DEV\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
$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
|
SLEEP 2
|
||||||
net use R: /delete
|
net use R: /delete
|
||||||
|
|
||||||
@@ -66,8 +92,15 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Recupero file non git da R e copia su macchina virtuale"
|
echo " Recupero file non git da R e copia su macchina virtuale"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
ROBOCOPY "$env:LAST_MACHINE_PATH" "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
# test se la cartella con gli utensili esiste per questa macchina
|
||||||
ROBOCOPY "$env:LAST_MACHINE_PATH" "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
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
|
SLEEP 2
|
||||||
net use R: /delete
|
net use R: /delete
|
||||||
|
|
||||||
@@ -84,27 +117,27 @@ variables:
|
|||||||
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.ini" -NewName "$env:MACH_NAME_TEST.ini"
|
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"
|
ROBOCOPY . "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Compilazione file *.lua 32/64bit di Common*"
|
echo " Compilazione file *.lua 32/64bit"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
$FileList = Get-ChildItem("Common*")
|
$FileList = Get-ChildItem * -Include( "*.mlpe", "*.mlse")
|
||||||
ForEach ($File in $FileList) {
|
ForEach ($File in $FileList) {
|
||||||
$FileName = Split-Path $File -leaf
|
$FileName = Split-Path $File -leaf
|
||||||
lua54 -o $env:SRC_PATH\bin\$env:MACH_NAME\$FileName -s $FileName
|
lua54 -o $env:SRC_PATH\bin\$env:MACH_NAME\$FileName -s $FileName
|
||||||
echo "lua54 -o bin\$FileName -s $FileName"
|
echo "lua54 -o bin\$FileName -s $FileName"
|
||||||
}
|
}
|
||||||
echo "-----------------------"
|
|
||||||
echo " FINE Compilazione"
|
|
||||||
echo "-----------------------"
|
|
||||||
|
|
||||||
# helper recupero nome macchina
|
# helper recupero nome macchina e costruttore
|
||||||
.machName-fix: &machName-fix
|
.machName-fix: &machName-fix
|
||||||
- |
|
- |
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Recupero nome macchina"
|
echo " Recupero nome macchina e costruttore"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
$fileName = dir *.mlde
|
$fileName = dir *.mlde
|
||||||
$env:MACH_NAME = $fileName.BaseName
|
$env:MACH_NAME = $fileName.BaseName
|
||||||
$env:MACH_NAME_TEST = $env:MACH_NAME + ".TEST"
|
$env:MACH_NAME_TEST = $env:MACH_NAME + ".TEST"
|
||||||
|
$comp = $fileName.BaseName -split "-"
|
||||||
|
$env:MANUFACTURER = $comp[0]
|
||||||
|
Write-Output $env:MANUFACTURER
|
||||||
|
|
||||||
# helper calcolo versione
|
# helper calcolo versione
|
||||||
.version-fix: &version-fix
|
.version-fix: &version-fix
|
||||||
@@ -112,12 +145,22 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Calcolo versione"
|
echo " Calcolo versione"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
|
|
||||||
|
# calcolo versione formato stringa
|
||||||
$fPath = "$env:MACH_NAME.mlde";
|
$fPath = "$env:MACH_NAME.mlde";
|
||||||
$vLine = Select-String -path $fPath -Pattern 'PP_VER';
|
$vLine = Select-String -path $fPath -Pattern '^PP_VER';
|
||||||
$comp = $vLine -split "=";
|
$comp = $vLine -split "=";
|
||||||
$env:MACH_VERS = $comp[1].Replace("'","").Trim()
|
$env:MACH_VERS = $comp[1].Replace("'","").Trim()
|
||||||
# display versione
|
# display versione formato stringa
|
||||||
Write-Output $env:MACH_VERS;
|
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
|
# helper calcolo versione se develop
|
||||||
.version-fix_DEV: &version-fix_DEV
|
.version-fix_DEV: &version-fix_DEV
|
||||||
@@ -129,7 +172,7 @@ variables:
|
|||||||
$commitAuthor = $commitAuthor[0].Trim()
|
$commitAuthor = $commitAuthor[0].Trim()
|
||||||
$env:MACH_VERS = $commitAuthor
|
$env:MACH_VERS = $commitAuthor
|
||||||
# display versione
|
# display versione
|
||||||
Write-Output $env:MACH_VERS;
|
Write-Output $env:MACH_VERS
|
||||||
|
|
||||||
# helper creazione folders
|
# helper creazione folders
|
||||||
.folder-fix: &folder-fix
|
.folder-fix: &folder-fix
|
||||||
@@ -137,8 +180,8 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Creazione cartelle su macchina virtuale"
|
echo " Creazione cartelle su macchina virtuale"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
$env:LAST_MACHINE_PATH = "$env:MACHINES_PATH_R\$env:MACH_NAME";
|
$env:TOOLS_MACHINE_PATH = "$env:MACHINES_PATH_R\$env:MANUFACTURER\_DefaultMachineSetup\$env:MACH_NAME"
|
||||||
Write-Output $env:LAST_MACHINE_PATH;
|
Write-Output $env:TOOLS_MACHINE_PATH
|
||||||
$env:SRC_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME";
|
$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: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";
|
$env:TEST_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME_TEST";
|
||||||
@@ -161,6 +204,39 @@ variables:
|
|||||||
7zip a -tzip $Target $Source
|
7zip a -tzip $Target $Source
|
||||||
Write-Output "called ZIP $Source --> $Target"
|
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
|
# helper esecuzione test
|
||||||
.RunTest: &RunTest
|
.RunTest: &RunTest
|
||||||
@@ -189,6 +265,8 @@ LuaCompile:build:
|
|||||||
- *LuaCompile
|
- *LuaCompile
|
||||||
- *ZipClean
|
- *ZipClean
|
||||||
- *ReplicaR
|
- *ReplicaR
|
||||||
|
- *ReplicaStor01
|
||||||
|
- *SendToVersionsLog
|
||||||
|
|
||||||
LuaCompileDev:build:
|
LuaCompileDev:build:
|
||||||
stage: build
|
stage: build
|
||||||
@@ -236,4 +314,5 @@ LuaCompileDev:build:
|
|||||||
# script:
|
# script:
|
||||||
# - *LuaCompile
|
# - *LuaCompile
|
||||||
# - *ZipClean
|
# - *ZipClean
|
||||||
# - *ReplicaR
|
# - *ReplicaR
|
||||||
|
|
||||||
|
|||||||
+56
-17
@@ -8,6 +8,7 @@ local BeamData = {
|
|||||||
RIGHT_LOAD = false, -- flag carico da destra
|
RIGHT_LOAD = false, -- flag carico da destra
|
||||||
SIMUL_VIEW_DIR = 2, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
SIMUL_VIEW_DIR = 2, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
||||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||||
|
ROT180 = true, -- flag abilitazione rotazione 180 gradi
|
||||||
MIN_WIDTH = 50, -- larghezza minima del grezzo
|
MIN_WIDTH = 50, -- larghezza minima del grezzo
|
||||||
MIN_HEIGHT = 50, -- altezza minima del grezzo
|
MIN_HEIGHT = 50, -- altezza minima del grezzo
|
||||||
MAX_WIDTH = 400, -- larghezza massima del grezzo
|
MAX_WIDTH = 400, -- larghezza massima del grezzo
|
||||||
@@ -41,6 +42,7 @@ local BeamData = {
|
|||||||
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
|
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
|
||||||
DRILL_VZ_MIN = - 0.51, -- componente limite in Z del versore di un foro
|
DRILL_VZ_MIN = - 0.51, -- componente limite in Z del versore di un foro
|
||||||
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
|
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
|
||||||
|
MAX_ANGLE_DRILL_CUT = 15, -- delta angolo massimo tra foro e taglio che lo attraversa
|
||||||
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
||||||
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
|
||||||
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
|
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
|
||||||
@@ -67,11 +69,16 @@ local BeamData = {
|
|||||||
KIOTP = 5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
KIOTP = 5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||||
MAXDIAM_POCK_CORNER = 201, -- diametro massimo utensile ammesso per tasche con angoli interni
|
MAXDIAM_POCK_CORNER = 201, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||||
USE_LONGCUT = true, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
|
USE_LONGCUT = true, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
|
||||||
|
HEAD_DIM_FOR_BH = 125, -- dimensione di ingombro della testa per block haus
|
||||||
|
MAX_LEN_BH_FROM_BOTTOM = 210, -- massima lunghezza lavorabile da un lato di block haus da sotto
|
||||||
|
MAX_DIST_BH_FROM_BOTTOM = 600, -- massima distanza tra naso mandrino e sopra della trave senza collisione
|
||||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
||||||
ADVANCE_TAIL_OFFS = 10, -- accorciamento taglio di coda avanzato (minimo 1)
|
ADVANCE_TAIL_OFFS = 10, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||||
DOUBLE_HEAD_DOVETAIL = false, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
DOUBLE_HEAD_DOVETAIL = false, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
||||||
DOUBLE_HEAD_MORTISE = false, -- flag abilitazione lavorazione mortase in doppio
|
DOUBLE_HEAD_MORTISE = false, -- flag abilitazione lavorazione mortase in doppio
|
||||||
DOUBLE_HEAD_DRILLING = false, -- flag abilitazione forature in doppio
|
DOUBLE_HEAD_DRILLING = false, -- flag abilitazione forature in doppio
|
||||||
|
PRECUT_HEAD = true, -- flag abilitazione pretaglio grezzo a zero in testa
|
||||||
|
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
|
||||||
CLAMP5 = false -- presenza pinza speciale per pezzi piccoli
|
CLAMP5 = false -- presenza pinza speciale per pezzi piccoli
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,6 +103,8 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.DOUBLE_HEAD_DOVETAIL then BeamData.DOUBLE_HEAD_DOVETAIL = ( Machine.Offsets.DOUBLE_HEAD_DOVETAIL == 1) end
|
if Machine.Offsets.DOUBLE_HEAD_DOVETAIL then BeamData.DOUBLE_HEAD_DOVETAIL = ( Machine.Offsets.DOUBLE_HEAD_DOVETAIL == 1) end
|
||||||
if Machine.Offsets.DOUBLE_HEAD_MORTISE then BeamData.DOUBLE_HEAD_MORTISE = ( Machine.Offsets.DOUBLE_HEAD_MORTISE == 1) end
|
if Machine.Offsets.DOUBLE_HEAD_MORTISE then BeamData.DOUBLE_HEAD_MORTISE = ( Machine.Offsets.DOUBLE_HEAD_MORTISE == 1) end
|
||||||
if Machine.Offsets.DOUBLE_HEAD_DRILLING then BeamData.DOUBLE_HEAD_DRILLING = ( Machine.Offsets.DOUBLE_HEAD_DRILLING == 1) end
|
if Machine.Offsets.DOUBLE_HEAD_DRILLING then BeamData.DOUBLE_HEAD_DRILLING = ( Machine.Offsets.DOUBLE_HEAD_DRILLING == 1) end
|
||||||
|
if Machine.Offsets.PRECUT_HEAD_DISABLE then BeamData.PRECUT_HEAD = ( Machine.Offsets.PRECUT_HEAD_DISABLE == 0) end
|
||||||
|
if Machine.Offsets.PRECUT_TAIL_DISABLE then BeamData.PRECUT_TAIL = ( Machine.Offsets.PRECUT_TAIL_DISABLE == 0) end
|
||||||
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
||||||
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
||||||
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
||||||
@@ -103,6 +112,17 @@ if EgtExistsFile( sData) then
|
|||||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||||
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
||||||
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||||
|
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
|
||||||
|
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
|
||||||
|
BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS
|
||||||
|
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
|
||||||
|
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
|
||||||
|
BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID
|
||||||
|
if Machine.Offsets.MAX_ANGLE_DRILL_CUT then BeamData.MAX_ANGLE_DRILL_CUT = EgtClamp( Machine.Offsets.MAX_ANGLE_DRILL_CUT, 1, 89) end
|
||||||
|
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||||
|
if Machine.Offsets.CUT_SIC then BeamData.CUT_SIC = EgtClamp( Machine.Offsets.CUT_SIC, 15, 50) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_S then BeamData.MIN_JOIN_S = EgtClamp( Machine.Offsets.MIN_JOIN_S, 80, 150) end
|
||||||
|
if Machine.Offsets.MIN_JOIN_L then BeamData.MIN_JOIN_L = EgtClamp( Machine.Offsets.MIN_JOIN_L, 300, 450) end
|
||||||
end
|
end
|
||||||
if Machine.Trave then
|
if Machine.Trave then
|
||||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||||
@@ -211,30 +231,49 @@ local function GetSetupInfo( sHead)
|
|||||||
local SetupInfo = {}
|
local SetupInfo = {}
|
||||||
|
|
||||||
-- dati comuni
|
-- dati comuni
|
||||||
SetupInfo.bIsCSymmetric = true
|
SetupInfo.bIsCSymmetrical = true
|
||||||
SetupInfo.dCAxisEncumbrance = 180
|
SetupInfo.dCAxisEncumbrance = 180
|
||||||
SetupInfo.bToolOnAggregate = false
|
SetupInfo.bToolOnAggregate = false
|
||||||
|
SetupInfo.Head = {}
|
||||||
|
|
||||||
-- testa 5 assi da sopra
|
-- testa 5 assi da sopra, dietro
|
||||||
if sHead == 'H11' or sHead == 'H21' then
|
if sHead == 'H11' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = false, bBack = true}
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
SetupInfo.dMinNz = sin( -45)
|
||||||
-- lama su testa 5 assi da sopra
|
-- testa 5 assi da sopra, davanti
|
||||||
elseif sHead == 'H12' or sHead == 'H22' then
|
elseif sHead == 'H21' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = true, bBack = false}
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
SetupInfo.dMinNz = sin( -45)
|
||||||
|
-- lama su testa 5 assi da sopra, dietro
|
||||||
|
elseif sHead == 'H12' then
|
||||||
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
|
SetupInfo.PreferredSide = { bFront = false, bBack = true}
|
||||||
|
SetupInfo.dMinNz = sin( -45)
|
||||||
|
-- se con aggregato si considera non simmetrico
|
||||||
|
SetupInfo.bIsCSymmetrical = false
|
||||||
|
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||||
|
SetupInfo.dMaxMatDecrease = 20
|
||||||
|
-- lama su testa 5 assi da sopra, davanti
|
||||||
|
elseif sHead == 'H22' then
|
||||||
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
|
SetupInfo.PreferredSide = { bFront = true, bBack = false}
|
||||||
|
SetupInfo.dMinNz = sin( -45)
|
||||||
|
-- se con aggregato si considera non simmetrico
|
||||||
|
SetupInfo.bIsCSymmetrical = false
|
||||||
|
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||||
|
SetupInfo.dMaxMatDecrease = 20
|
||||||
-- motosega 1
|
-- motosega 1
|
||||||
elseif sHead == 'H13' or sHead == 'H23' then
|
elseif sHead == 'H13' or sHead == 'H23' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = {}
|
||||||
SetupInfo.dMaxNegativeAngle = 0
|
SetupInfo.dMinNz = 0
|
||||||
-- motosega 2
|
-- motosega 2
|
||||||
elseif sHead == 'H15' then
|
elseif sHead == 'H15' then
|
||||||
SetupInfo.bIsBottomHead = true
|
SetupInfo.HeadType = { bTop = false, bBottom = true}
|
||||||
SetupInfo.bIsTopHead = not SetupInfo.bIsBottomHead
|
SetupInfo.PreferredSide = {}
|
||||||
SetupInfo.dMaxPositiveAngle = 0
|
SetupInfo.dMaxNz = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
return SetupInfo
|
return SetupInfo
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
22=Long2CutSide
|
22=Long2CutSide
|
||||||
23=SmallToolContour
|
23=SmallToolContour
|
||||||
24=AntiSplintMillCut
|
24=AntiSplintMillCut
|
||||||
|
25=Prof_end
|
||||||
|
26=SideMillAsBlade
|
||||||
|
|
||||||
[Pocketing]
|
[Pocketing]
|
||||||
1=Pocket
|
1=Pocket
|
||||||
|
|||||||
+868
-330
File diff suppressed because it is too large
Load Diff
+660
-95
File diff suppressed because it is too large
Load Diff
+193
-35
@@ -4,9 +4,74 @@
|
|||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Generic Machinings ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
require( 'EmtGenMachining')
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
-- Carico libreria
|
-- Carico libreria
|
||||||
local BD = require( 'BeamData')
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Generic Machinings ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
require( 'EmtGenMachining')
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Special GetPrevMachiningOffset ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-----------------------------------------------------------------------------------------
|
||||||
|
function OnSpecialGetPrevMachiningOffset()
|
||||||
|
-- Aggiorno posizione della testa della trave a seguito di movimenti delle pinze non previsti tra le fasi
|
||||||
|
local function TPosUpdate()
|
||||||
|
local nClId = EgtGetFirstNameInGroup( EMC.CURRMCHID, 'CL') -- recupero Id del gruppo CL della lavorazione corrente
|
||||||
|
local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL) -- Id del primo gruppo nella lavorazione (P1)
|
||||||
|
if not nPathId then
|
||||||
|
EMC.ERR = 12
|
||||||
|
EMC.MSG = ' Error : CL group path not found'
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local dAuxMoveCount = EgtGetInfo( nPathId, 'AS#', 'd') or 0 -- numero di movimenti ausiliari
|
||||||
|
local dTRepos = nil
|
||||||
|
-- controlla ogni gruppo di movimenti ausiliari
|
||||||
|
for i = 1, dAuxMoveCount do
|
||||||
|
local aAuxMove = EgtGetInfo( nPathId, 'AS' .. tostring( i), 'vs') or {} -- array contenete i parametri di ogni gruppo
|
||||||
|
-- controlla solo i movimenti della testa trave e salva l'ultimo
|
||||||
|
if aAuxMove[1] == '2' or aAuxMove[1] == '3' then
|
||||||
|
for j = 2, #aAuxMove do
|
||||||
|
if aAuxMove[j] == 'T' then
|
||||||
|
dTRepos = aAuxMove[j+1]
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return dTRepos
|
||||||
|
end
|
||||||
|
|
||||||
|
-- default
|
||||||
|
EMC.ERR = 0
|
||||||
|
EMC.PREVOFFSX = 0
|
||||||
|
-- se c'è cambio di fase tra le lavorazioni (quindi la precedente è l'ultima della sua fase e la corrente la prima)
|
||||||
|
if EMC.PREVPHASE ~= EMC.CURRPHASE then
|
||||||
|
-- se la fase corrente è di inizio lavorazione di nuova trave
|
||||||
|
if IsStartOrRestPhase( EMC.CURRPHASE) then
|
||||||
|
-- recupero la posizione finale della lavorazione precedente
|
||||||
|
local vPrevAx = EmtGetFinalAxesPos( EMC.PREVMCHID)
|
||||||
|
-- ricava se e quanto la trave viene spostata tra le due fasi dai movimenti ausiliari e corregge l'offset di fine fase
|
||||||
|
local dNewTPos = TPosUpdate()
|
||||||
|
-- se ci sono dei movimenti della testa trave tra le due fasi ricava il delta tra la vecchia e la nuova posizione
|
||||||
|
if dNewTPos then
|
||||||
|
EMC.PREVOFFSX = dNewTPos - vPrevAx[1]
|
||||||
|
-- oppure la X (L1) di questa corrisponde alla posizione iniziale della nuova trave, se ne deduce l'offset
|
||||||
|
else
|
||||||
|
EMC.PREVOFFSX = ParkV1 - vPrevAx[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
---------------------- OnSpecialGetMaxZ -----------------------------
|
---------------------- OnSpecialGetMaxZ -----------------------------
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function CalcExtraZ( vtTp, vtT, vMZ)
|
local function CalcExtraZ( vtTp, vtT, vMZ)
|
||||||
@@ -72,8 +137,8 @@ function OnSpecialGetMaxZ()
|
|||||||
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
||||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||||
end
|
end
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||||
@@ -95,7 +160,7 @@ function OnSpecialGetMaxZ()
|
|||||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||||
end
|
end
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC2' then
|
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC2' then
|
||||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||||
@@ -124,7 +189,7 @@ function OnSpecialGetMaxZ()
|
|||||||
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||||
end
|
end
|
||||||
elseif EMC.HEAD == 'H22' then
|
elseif EMC.HEAD == 'H22' then
|
||||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||||
EMC.MAXZ = MaxZ2 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
EMC.MAXZ = MaxZ2 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||||
@@ -173,7 +238,7 @@ function OnSpecialMoveZup()
|
|||||||
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
||||||
;
|
;
|
||||||
-- se lama posizionata su CU prossimo a testa 1
|
-- se lama posizionata su CU prossimo a testa 1
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||||
-- se inclinata oltre 90 gradi e interferisce con la trave
|
-- se inclinata oltre 90 gradi e interferisce con la trave
|
||||||
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
||||||
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
||||||
@@ -208,6 +273,13 @@ function OnSpecialMoveZup()
|
|||||||
EMC.MODIF = true
|
EMC.MODIF = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif HeadIsChainSaw( EMC.HEAD) then
|
||||||
|
EMC.TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||||
|
if EMC.TDIR[3] < -0.15 and EMC.L3 > - EMC.TTOTLEN then
|
||||||
|
EMC.L3 = EMC.TTOTLEN * EMC.TDIR[3]
|
||||||
|
-- dichiaro modificato
|
||||||
|
EMC.MODIF = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -223,7 +295,7 @@ local MIN_BACK_ENG_V = 115 -- ingombro asse Z a sinistra
|
|||||||
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
||||||
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
||||||
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
||||||
local MAX_BACK_CLAMP_5 = 320 -- massima sporgenza posteriore del pezzo da pinza speciale
|
local MAX_BACK_CLAMP_5 = EgtClamp( MaxBackClamp5 or 320, 200, 380) -- massima sporgenza posteriore del pezzo da pinza speciale
|
||||||
|
|
||||||
----------------------- Variabili -----------------------------------
|
----------------------- Variabili -----------------------------------
|
||||||
local Test = false
|
local Test = false
|
||||||
@@ -654,14 +726,72 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnPostApplyMachining()
|
function OnPostApplyMachining()
|
||||||
|
-- Inizializzo codice di errore
|
||||||
|
EMC.ERR = 0
|
||||||
|
-- Verifico se ultima lavorazione della fase
|
||||||
|
local nNextOpeId = EgtGetNextActiveOperation( EMC.MCHID)
|
||||||
|
local bMchLast = ( not nNextOpeId or EgtGetOperationPhase( nNextOpeId) ~= EMC.PHASE) -- Agisco sui diversi percorsi della lavorazione
|
||||||
|
local nPathId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( EMC.MCHID, 'CL') or GDB_ID.NULL)
|
||||||
|
while nPathId do
|
||||||
|
-- recupero id del successivo
|
||||||
|
nPathId = EgtGetNext( nPathId)
|
||||||
|
-- verifico se ultimo percorso di ultima lavorazione della fase
|
||||||
|
local bLast = ( bMchLast and ( not nPathId))
|
||||||
|
-- se ultimo, elimino ritorno in home
|
||||||
|
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function OnSpecialApplyMachining()
|
||||||
|
|
||||||
EgtOutLog( ' Lavorazione : ' .. EgtGetName( EMC.MCHID), 1)
|
EgtOutLog( ' Lavorazione : ' .. EgtGetName( EMC.MCHID), 1)
|
||||||
|
|
||||||
-- Inizializzo codice di errore
|
-- Inizializzo codice di errore
|
||||||
EMC.ERR = 0
|
EMC.ERR = 0
|
||||||
|
|
||||||
|
-- Recupero la precedente operazione
|
||||||
|
local nPrevOpeId = EgtGetPrevActiveOperation( EMC.MCHID)
|
||||||
|
|
||||||
|
-- Se esiste lavorazione precedente ed è una tastatura
|
||||||
|
if nPrevOpeId and EgtGetOperationType( nPrevOpeId) == MCH_OY.PROBING then
|
||||||
|
-- se stessa testa e montato già utensile corretto
|
||||||
|
-- recupero valori assi alla fine della lavorazione precedente e all'inizio della corrente
|
||||||
|
local vPrevAxes = EmtGetFinalAxesPos( nPrevOpeId, true)
|
||||||
|
local vCurrAxes = EmtGetInitialAxesPos( EMC.MCHID, true)
|
||||||
|
-- info lavorazione precedente
|
||||||
|
EgtSetCurrMachining( nPrevOpeId)
|
||||||
|
local sPrevTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
local sPrevHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
local nSetHead = GetHeadSet( sPrevHead)
|
||||||
|
local bPrevIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||||
|
-- info lavorazione corrente
|
||||||
|
EgtSetCurrMachining( EMC.MCHID)
|
||||||
|
local sCurrTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
local sCurrHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
nSetHead = GetHeadSet( sCurrHead)
|
||||||
|
local bCurrIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||||
|
|
||||||
|
-- se utensile corrente è compatibile (significa che è già stato precaricato) se stessa testa e con stessa configurazioen assi rotanti, annullo risalita
|
||||||
|
if IsToolCompatibleWithProbe( sCurrTool, sPrevTool) and bPrevIsFirstHead == bCurrIsFirstHead and abs( vCurrAxes[4] - vPrevAxes[4]) < 1 and abs( vCurrAxes[5] - vPrevAxes[5]) < 1 then
|
||||||
|
-- in lavorazione precedente elimino eventuale retrazione a Zmax
|
||||||
|
EmtRemoveRise( nPrevOpeId)
|
||||||
|
-- in lavorazione corrente elimino eventuale approccio da Zmax
|
||||||
|
EmtRemoveClimb( EMC.MCHID)
|
||||||
|
-- prendo sempre la Z massima tra le due
|
||||||
|
local vClimbPoint
|
||||||
|
if vCurrAxes[3] - 1.0 < vPrevAxes[3] then
|
||||||
|
vClimbPoint = vCurrAxes
|
||||||
|
vCurrAxes[3] = vPrevAxes[3]
|
||||||
|
elseif vPrevAxes[3] - 1.0 < vCurrAxes[3] then
|
||||||
|
vClimbPoint = vPrevAxes
|
||||||
|
vPrevAxes[3] = vCurrAxes[3]
|
||||||
|
end
|
||||||
|
EmtAddClimb( EMC.MCHID, vClimbPoint, 4, 1, 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Recupero la posizione della trave e dei carrelli al termine della precedente operazione
|
-- Recupero la posizione della trave e dei carrelli al termine della precedente operazione
|
||||||
local nPrevOpeId = EgtGetPrevActiveOperation( EMC.MCHID)
|
|
||||||
-- se precedente operazione non esiste, errore
|
-- se precedente operazione non esiste, errore
|
||||||
if not nPrevOpeId then
|
if not nPrevOpeId then
|
||||||
EMC.ERR = 1
|
EMC.ERR = 1
|
||||||
@@ -761,7 +891,7 @@ function OnPostApplyMachining()
|
|||||||
-- verifico se ultimo percorso di ultima lavorazione della fase
|
-- verifico se ultimo percorso di ultima lavorazione della fase
|
||||||
local bLast = ( bMchLast and ( not nPathId))
|
local bLast = ( bMchLast and ( not nPathId))
|
||||||
-- se ultimo, elimino ritorno in home
|
-- se ultimo, elimino ritorno in home
|
||||||
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
-- if bLast then EgtRemoveOperationHome( EMC.MCHID) end
|
||||||
-- salvo lo stato dei carrelli
|
-- salvo lo stato dei carrelli
|
||||||
local OriTPos = EMC.TPOS
|
local OriTPos = EMC.TPOS
|
||||||
local OriY1Delta = EMC.Y1DELTA
|
local OriY1Delta = EMC.Y1DELTA
|
||||||
@@ -819,11 +949,17 @@ function OnPostApplyMachining()
|
|||||||
local vAxes = EmtGetAxesPos( nLastEntId)
|
local vAxes = EmtGetAxesPos( nLastEntId)
|
||||||
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
|
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreRotMch)
|
function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreRotMch)
|
||||||
|
-- mi salvo info lavorazione su una lista
|
||||||
|
local AuxInfoMach = {}
|
||||||
|
AuxInfoMach.bPreSplit = bPreSplit
|
||||||
|
AuxInfoMach.bSplitting = bSplitting
|
||||||
|
AuxInfoMach.bPreCut = bPreCut
|
||||||
|
AuxInfoMach.bCutting = bCutting
|
||||||
|
AuxInfoMach.bUnload = bUnload
|
||||||
|
|
||||||
-- Assegno flag di pezzo separato dal resto del grezzo
|
-- Assegno flag di pezzo separato dal resto del grezzo
|
||||||
SPLIT = IsEndPhase( EMC.PHASE) or IsMid2Phase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
SPLIT = IsEndPhase( EMC.PHASE) or IsMid2Phase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
||||||
@@ -921,7 +1057,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
|||||||
local dPosT = LoadT
|
local dPosT = LoadT
|
||||||
if IsFirstMachiningAfterRotation( EMC.MCHID) then dPosT = dPosT + TurnerOffs end
|
if IsFirstMachiningAfterRotation( EMC.MCHID) then dPosT = dPosT + TurnerOffs end
|
||||||
local vCmd = SpecCalcLoad( dPosT, dDistFront, max( dDistBack, MinJoin + EgtIf( SPLIT, EMC.TCING, 0), EMC.LB - ( MaxY1 - MinY1) + 6))
|
local vCmd = SpecCalcLoad( dPosT, dDistFront, max( dDistBack, MinJoin + EgtIf( SPLIT, EMC.TCING, 0), EMC.LB - ( MaxY1 - MinY1) + 6))
|
||||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||||
if bSplitting and EMC.ERR == 18 then
|
if bSplitting and EMC.ERR == 18 then
|
||||||
table.insert( vCmd, { 22, dRollBack, -dRollFront})
|
table.insert( vCmd, { 22, dRollBack, -dRollFront})
|
||||||
end
|
end
|
||||||
@@ -934,7 +1070,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
|||||||
|
|
||||||
-- Se altrimenti carri entrambi diponibili, eseguo calcoli per carrelli
|
-- Se altrimenti carri entrambi diponibili, eseguo calcoli per carrelli
|
||||||
elseif not IsEndPhase( EMC.PHASE) then
|
elseif not IsEndPhase( EMC.PHASE) then
|
||||||
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||||
-- Se non ci sono spostamenti, confermo i parametri di aggancio e di posizione roller
|
-- Se non ci sono spostamenti, confermo i parametri di aggancio e di posizione roller
|
||||||
if SpecTestOnlyRemarkInCmds( vCmd) then
|
if SpecTestOnlyRemarkInCmds( vCmd) then
|
||||||
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
|
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
|
||||||
@@ -1090,6 +1226,17 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
|||||||
end
|
end
|
||||||
-- Recupero testa
|
-- Recupero testa
|
||||||
local sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
local sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
local sToolName = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
local nSetHead = GetHeadSet( sHead)
|
||||||
|
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||||
|
|
||||||
|
-- se lavorazione di tastatura, si considera montato utensile di default
|
||||||
|
if HeadIsProbe( sHead) then
|
||||||
|
local sOtherToolName = GetToolNameFromTcPos( EgtIf( bIsFirstHead, DefTcPos1, DefTcPos2))
|
||||||
|
local sOtherHeadTool, _ = GetToolHead( sOtherToolName)
|
||||||
|
EgtLoadTool( sOtherHeadTool, 1, sOtherToolName)
|
||||||
|
end
|
||||||
|
|
||||||
-- Recupero valore assi macchina
|
-- Recupero valore assi macchina
|
||||||
local nSecId = EgtGetNext( EgtGetFirstInGroup( nPathId))
|
local nSecId = EgtGetNext( EgtGetFirstInGroup( nPathId))
|
||||||
local vAxes = EmtGetAxesPos( nSecId)
|
local vAxes = EmtGetAxesPos( nSecId)
|
||||||
@@ -1100,8 +1247,8 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
|||||||
end
|
end
|
||||||
-- Calcolo dell'ingombro della testa rispetto allo Zero Macchina
|
-- Calcolo dell'ingombro della testa rispetto allo Zero Macchina
|
||||||
local b3Enc
|
local b3Enc
|
||||||
|
|
||||||
if sHead ~= 'H21' and sHead ~= 'H22' and sHead ~= 'H23' then
|
if bIsFirstHead then
|
||||||
EgtSetAxisPos( 'C1', vAxes[4])
|
EgtSetAxisPos( 'C1', vAxes[4])
|
||||||
EgtSetAxisPos( 'B1', vAxes[5])
|
EgtSetAxisPos( 'B1', vAxes[5])
|
||||||
if sHead == 'H13' or sHead == 'H15' then
|
if sHead == 'H13' or sHead == 'H15' then
|
||||||
@@ -1135,6 +1282,7 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
|||||||
local dDistFront = - ptMax:getX() - LoadT - dHeadFront
|
local dDistFront = - ptMax:getX() - LoadT - dHeadFront
|
||||||
local dDistBack = ptMin:getX() + LoadT + EMC.LB - dHeadBack
|
local dDistBack = ptMin:getX() + LoadT + EMC.LB - dHeadBack
|
||||||
EgtOutLog( ' DistFront = ' .. EgtNumToString( dDistFront, 1) .. ' DistBack = ' .. EgtNumToString( dDistBack, 1), 3)
|
EgtOutLog( ' DistFront = ' .. EgtNumToString( dDistFront, 1) .. ' DistBack = ' .. EgtNumToString( dDistBack, 1), 3)
|
||||||
|
|
||||||
return dDistFront, dDistBack, dRollFront, dRollBack
|
return dDistFront, dDistBack, dRollFront, dRollBack
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1262,7 +1410,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
|
|||||||
end -- SpecAdjustLoad [L]
|
end -- SpecAdjustLoad [L]
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||||
|
|
||||||
local MinFrontJoin = MinJoin + EMC.HCING + EMC.HOVM
|
local MinFrontJoin = MinJoin + EMC.HCING + EMC.HOVM
|
||||||
local MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
local MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
||||||
@@ -1301,13 +1449,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
|||||||
WorkTab.dV2PosF = -dRollFront
|
WorkTab.dV2PosF = -dRollFront
|
||||||
WorkTab.bV2CloseF = false
|
WorkTab.bV2CloseF = false
|
||||||
|
|
||||||
-- aggiuntivo per non avere problemi con pezzi a caduta
|
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
|
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
|
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
|
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
|
end
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
|
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- verifico validità intervallo ammesso per Y1
|
-- verifico validità intervallo ammesso per Y1
|
||||||
@@ -1346,13 +1492,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
|||||||
WorkTab.dV2PosF = -dRollFront
|
WorkTab.dV2PosF = -dRollFront
|
||||||
WorkTab.bV2CloseF = false
|
WorkTab.bV2CloseF = false
|
||||||
|
|
||||||
-- aggiuntivo per minimizzare scambi carrelli
|
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
|
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
|
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
|
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
|
end
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
|
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- verifico validità intervallo ammesso per Y1
|
-- verifico validità intervallo ammesso per Y1
|
||||||
@@ -1420,7 +1564,14 @@ function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
|||||||
local vCmd = {}
|
local vCmd = {}
|
||||||
EgtOutLog( ' *[S]', 1)
|
EgtOutLog( ' *[S]', 1)
|
||||||
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
|
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
|
||||||
local ParkT = EgtIf( bSplit and dMaxLenLeft > ParkV1 - 50, LoadT, ParkV1)
|
local ParkT = ParkV1
|
||||||
|
if bSplit then
|
||||||
|
if dMaxLenLeft + 100 > LoadT then
|
||||||
|
ParkT = dMaxLenLeft + 300
|
||||||
|
elseif dMaxLenLeft + 100 > ParkV1 then
|
||||||
|
ParkT = LoadT
|
||||||
|
end
|
||||||
|
end
|
||||||
local sType = EgtIf( EMC.Y2DELTA, 'Split', EgtIf( EMC.W2DELTA, 'SpecSplit', 'Fall'))
|
local sType = EgtIf( EMC.Y2DELTA, 'Split', EgtIf( EMC.W2DELTA, 'SpecSplit', 'Fall'))
|
||||||
table.insert( vCmd, { 0, sType})
|
table.insert( vCmd, { 0, sType})
|
||||||
if not bSplit then EnsureZmax( false, vCmd) end
|
if not bSplit then EnsureZmax( false, vCmd) end
|
||||||
@@ -1543,8 +1694,11 @@ function SpecCalcUnload()
|
|||||||
EgtOutLog( ' *[U1]', 1)
|
EgtOutLog( ' *[U1]', 1)
|
||||||
end
|
end
|
||||||
local vCmd = {}
|
local vCmd = {}
|
||||||
|
-- Tipo di scarico
|
||||||
|
local bStdUl = ( not MaxUnloadLen or MaxUnloadLen < 1 or EMC.LB - EMC.HOVM < MaxUnloadLen + 1)
|
||||||
|
|
||||||
-- Commento
|
-- Commento
|
||||||
table.insert( vCmd, { 0, 'Unloading'})
|
table.insert( vCmd, { 0, 'Unloading', EgtIf( bStdUl, 'Unloading', 'Manual Unloading')})
|
||||||
-- posizionamento sicuro teste e rulli (non serve ?)
|
-- posizionamento sicuro teste e rulli (non serve ?)
|
||||||
--table.insert( vCmd, { 4, 0})
|
--table.insert( vCmd, { 4, 0})
|
||||||
-- Se pinza Y chiusa, la apro
|
-- Se pinza Y chiusa, la apro
|
||||||
@@ -1552,11 +1706,15 @@ function SpecCalcUnload()
|
|||||||
table.insert( vCmd, { 11, 0})
|
table.insert( vCmd, { 11, 0})
|
||||||
EMC.CNT = nil
|
EMC.CNT = nil
|
||||||
end
|
end
|
||||||
-- Sposto il pezzo in posizione di scarico
|
-- Se non supero la lunghezza massima di scarico, sposto il pezzo in posizione di scarico
|
||||||
local dFinT = UnloadT - EMC.LB
|
if bStdUl then
|
||||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
local dFinT = UnloadT - EMC.LB
|
||||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||||
|
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||||
|
else
|
||||||
|
table.insert( vCmd, { 1, 'Y2', MaxY2})
|
||||||
|
end
|
||||||
-- apro la morsa
|
-- apro la morsa
|
||||||
table.insert( vCmd, { 12, 0})
|
table.insert( vCmd, { 12, 0})
|
||||||
-- riporto il carrello in home
|
-- riporto il carrello in home
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ Active=1
|
|||||||
H11.1=Standard.nge
|
H11.1=Standard.nge
|
||||||
H11.1:MILL_NOTIP=MillNoTip.nge
|
H11.1:MILL_NOTIP=MillNoTip.nge
|
||||||
H12.1=Saw.nge
|
H12.1=Saw.nge
|
||||||
|
H17.1=AngTransmBH.nge
|
||||||
H21.1=Standard.nge
|
H21.1=Standard.nge
|
||||||
H21.1:MILL_NOTIP=MillNoTip.nge
|
H21.1:MILL_NOTIP=MillNoTip.nge
|
||||||
H22.1=Saw.nge
|
H22.1=Saw.nge
|
||||||
@@ -130,6 +131,8 @@ ExitScript=ExitMach.lua
|
|||||||
H11=6608
|
H11=6608
|
||||||
; 5 axis saw
|
; 5 axis saw
|
||||||
H12=6615
|
H12=6615
|
||||||
|
; Angular transmission
|
||||||
|
H17=6617
|
||||||
; Second 5 axis head
|
; Second 5 axis head
|
||||||
H21=6620
|
H21=6620
|
||||||
; Second 5 axis saw
|
; Second 5 axis saw
|
||||||
|
|||||||
+95
-56
@@ -24,54 +24,18 @@
|
|||||||
-- 2023/02/02 ver 2.5b1 Aggiunte lavorazioni in doppio e gestione eventuale mortasatrice.
|
-- 2023/02/02 ver 2.5b1 Aggiunte lavorazioni in doppio e gestione eventuale mortasatrice.
|
||||||
-- 2023/02/03 ver 2.5b2 Gestione controllo NUM (TIPO_CN = 0->Axium vecchio, 2->Flexium). Migliorata gestione Pinza5 (MAX_BACK_CLAMP_5).
|
-- 2023/02/03 ver 2.5b2 Gestione controllo NUM (TIPO_CN = 0->Axium vecchio, 2->Flexium). Migliorata gestione Pinza5 (MAX_BACK_CLAMP_5).
|
||||||
-- 2023/03/03 ver 2.5c1 Correzione per lav.ne in doppio dopo taglio con sega a catena.
|
-- 2023/03/03 ver 2.5c1 Correzione per lav.ne in doppio dopo taglio con sega a catena.
|
||||||
-- 2023/03/20 ver 2.5c2 Abbassato a 379 limite trave alta per discesa passando da B0.
|
-------------------------------------
|
||||||
-- 2023/03/23 ver 2.5c3 Corretti valori risalita a Zsafe per frese e lame (mlse).
|
-- NOTE VERSIONI SUCCESSIVE IN GIT --
|
||||||
-- 2023/04/05 ver 2.5d1 Riportate modifiche da PFrl compresa eliminazione H14. Migliorata gestione Pinza5 e aggiunto DeltaW.
|
-------------------------------------
|
||||||
-- 2023/04/05 ver 2.5d2 In generazione CN corretta verifica movimenti pinze o rulli per necessità G151/G152.
|
|
||||||
-- 2023/04/20 ver 2.5d3 Aggiunta gestione AggLoad da sommare a V1 quando movimento causato da Y1 per AuxCmd (flag * da mlse).
|
|
||||||
-- 2023/04/21 ver 2.5d4 Migliorato riposizionamento testa trave dopo scambio carrelli (ExtraParkV a 100).
|
|
||||||
-- 2023/05/05 ver 2.5e1 Corretta deselezione utensile sega a catena in simulazione.
|
|
||||||
-- 2023/05/09 ver 2.5e2 Corretto riposizionamento carrelli su split con pezzi a caduta. In generazione CN corretto controllo conservazione piano impostato.
|
|
||||||
-- 2023/06/09 ver 2.5f1 In genera CN corretta risalita in Z come in simulazione (riportata da PFrl).
|
|
||||||
-- 2023/06/12 ver 2.5f2 Corretta distanza Back per aggiuntivo al carico prima di scambi carrelli.
|
|
||||||
-- 2023/06/15 ver 2.5f3 Tolte da teste per lame forzature risalite in Z. In generaz. CN aggiunto M05 su ultima lavorazione prima di SpecUnloading o Fall.
|
|
||||||
-- 2023/07/31 ver 2.5g1 Aggiunta apertura V1 allo scarico finale di barra con uso di entrambe Y1 e Y2 (#1399).
|
|
||||||
-- 2023/08/07 ver 2.5h1 In split prima di rotazione migliorato controllo spazio dietro per scambio carrelli. Ripristinata forzatura risalita in Z per lame se DeltaAng > 210 e HzPezzo > 610.
|
|
||||||
-- 2023/09/29 ver 2.5j1 In BeamData e mlde aggiunta la lettura di alcuni parametri da Ts3Data.
|
|
||||||
-- 2023/10/24 ver 2.5j2 Allo scarico pezzo, se necessario si apre paratia 3 (V2) prima dello scarico effettivo perchè questo senza attesa termine esecuzione.
|
|
||||||
-- 2023/11/07 ver 2.5k1 Corretto comportamento in simulazione se motosega come prima lavorazione della fase.
|
|
||||||
-- 2023/11/28 ver 2.6a1 Prima versione con utilizzo post-processore standard per macchine ONE e PF
|
|
||||||
-- 2024/01/22 ver 2.6a2 Allineamento con common ver 2.6a2
|
|
||||||
-- 2024/01/23 ver 2.6a3 Allineamento con common ver 2.6a3
|
|
||||||
-- 2024/01/23 ver 2.6a4 Allineamento con common ver 2.6a4
|
|
||||||
-- In BeamData, parametro VICE_MINH portato a 1000
|
|
||||||
-- 2024/02/19 ver 2.6b1 In BeamData aggiunta funzione GetBlockedAxis che sostituisce la GetChainSawBlockedAxis.
|
|
||||||
-- 2024/02/23 ver 2.6b2 Allineamento con common ver. 2.6b2; in mlde aggiunte chiamate EgtAddToPackagePath
|
|
||||||
-- 2024/02/29 ver 2.6c1 Allineamento con common ver. 2.6c1
|
|
||||||
-- 2024/03/04 ver 2.6c2 Modificato log con nome macchina
|
|
||||||
-- Allineamento con common ver. 2.6c2
|
|
||||||
-- 2024/03/05 ver 2.6c3 Allineamento con common ver. 2.6c3
|
|
||||||
-- In mlde aggiunto parametro EstimationRapidMultiplier per correggere la stima tempi su macchine vecchie. Letto anche da TS3v7 come COEFF_STIMATEMPI.
|
|
||||||
-- 2024/03/28 ver 2.6d1 Allineamento con common ver. 2.6d1
|
|
||||||
-- 2024/04/12 ver 2.6d2 Allineamento con common ver. 2.6d2
|
|
||||||
-- Aggiunto parametro ForceToCloseRollersGate
|
|
||||||
-- 2024/04/30 ver 2.6e1 Allineamento con common ver. 2.6e1
|
|
||||||
-- Aggiunta variabile WoodDensity per gestione WOOD_DENSITY
|
|
||||||
-- 2024/06/03 ver 2.6f1 Aggiunta funzione GetSetupInfo a BeamData per nuovo automatismo
|
|
||||||
-- Allineamento con common ver. 2.6f1
|
|
||||||
-- 2024/07/10 ver 2.6g1 Allineamento con common ver. 2.6g1
|
|
||||||
-- 2024/07/16 ver 2.6g2 Allineamento con common ver. 2.6g2
|
|
||||||
-- 2024/07/17 ver 2.6g3 Allineamento con common ver. 2.6g3
|
|
||||||
-- 2024/07/22 ver 2.6g4 Gestione pezzi fino a 30 metri
|
|
||||||
-- Allineamento con common ver. 2.6g4
|
|
||||||
|
|
||||||
-- Intestazioni
|
-- Intestazioni
|
||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
PP_VER = '2.6g4_DEV'
|
PP_VER = '3.1f3'
|
||||||
|
PP_NVER = '3.1.6.3'
|
||||||
MIN_MACH_VER = '2.5k1'
|
MIN_MACH_VER = '2.5k1'
|
||||||
MACH_NAME = 'Essetre-PF'
|
MACH_NAME = EgtGetCurrMachineName()
|
||||||
|
|
||||||
|
|
||||||
-- Carico i dati globali
|
-- Carico i dati globali
|
||||||
@@ -140,6 +104,7 @@ SawC2Offs = 0
|
|||||||
SawB2Offs = 0
|
SawB2Offs = 0
|
||||||
MinX1 = 700
|
MinX1 = 700
|
||||||
MaxX1 = 2735
|
MaxX1 = 2735
|
||||||
|
Limit_T1_Presel_T2 = MinX1
|
||||||
MinZ1 = -1550
|
MinZ1 = -1550
|
||||||
MaxZ1 = 0
|
MaxZ1 = 0
|
||||||
MinC1 = -275
|
MinC1 = -275
|
||||||
@@ -157,6 +122,7 @@ LimX1RotSaw = 800
|
|||||||
LimX1PlRotSaw = 1970
|
LimX1PlRotSaw = 1970
|
||||||
MinX2 = 0
|
MinX2 = 0
|
||||||
MaxX2 = 2035
|
MaxX2 = 2035
|
||||||
|
Limit_T2_Presel_T1 = MaxX2
|
||||||
MinZ2 = -1550
|
MinZ2 = -1550
|
||||||
MaxZ2 = 0
|
MaxZ2 = 0
|
||||||
MinC2 = -275
|
MinC2 = -275
|
||||||
@@ -180,6 +146,8 @@ ParkCSaw0Z2 = -400
|
|||||||
ParkCSawC2 = 90
|
ParkCSawC2 = 90
|
||||||
ParkCSaw0C2 = 0
|
ParkCSaw0C2 = 0
|
||||||
ParkCSawB2 = 0
|
ParkCSawB2 = 0
|
||||||
|
AngTrBHOffs = 154.5
|
||||||
|
AngTrBHLen = 90
|
||||||
TurnerOffs = 120.0
|
TurnerOffs = 120.0
|
||||||
AggLoad = 50
|
AggLoad = 50
|
||||||
DeltaTabY = 1550.0
|
DeltaTabY = 1550.0
|
||||||
@@ -199,9 +167,11 @@ SecondSaw = false
|
|||||||
AutomaticRotation = true
|
AutomaticRotation = true
|
||||||
OptimizedLoadBeam = true
|
OptimizedLoadBeam = true
|
||||||
AutoRotMinLen = 0
|
AutoRotMinLen = 0
|
||||||
CoeffVM = 0.5
|
|
||||||
EstimationRapidMultiplier = 1
|
EstimationRapidMultiplier = 1
|
||||||
ForceToCloseRollersGate = false
|
ForceToCloseRollersGate = false
|
||||||
|
AggreBlockHaus = false
|
||||||
|
DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa
|
||||||
|
ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data
|
||||||
|
|
||||||
-- Aggiornamento con dati da TechnoEssetre7
|
-- Aggiornamento con dati da TechnoEssetre7
|
||||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF.data"
|
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF.data"
|
||||||
@@ -258,6 +228,8 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.MIN_V2 then MinV2 = Machine.Offsets.MIN_V2 end
|
if Machine.Offsets.MIN_V2 then MinV2 = Machine.Offsets.MIN_V2 end
|
||||||
if Machine.Offsets.MAX_V2 then MaxV2 = Machine.Offsets.MAX_V2 end
|
if Machine.Offsets.MAX_V2 then MaxV2 = Machine.Offsets.MAX_V2 end
|
||||||
if Machine.Offsets.CLAMP5 then Clamp5 = ( Machine.Offsets.CLAMP5 == 1) end
|
if Machine.Offsets.CLAMP5 then Clamp5 = ( Machine.Offsets.CLAMP5 == 1) end
|
||||||
|
if Machine.Offsets.MIN_W then MinW = Machine.Offsets.MIN_W end
|
||||||
|
if Machine.Offsets.MAX_W then MaxW = Machine.Offsets.MAX_W end
|
||||||
if Machine.Offsets.MINWOPEN then MinWOpen = Machine.Offsets.MINWOPEN end
|
if Machine.Offsets.MINWOPEN then MinWOpen = Machine.Offsets.MINWOPEN end
|
||||||
if Machine.Offsets.MAXWOPEN then MaxWOpen = Machine.Offsets.MAXWOPEN end
|
if Machine.Offsets.MAXWOPEN then MaxWOpen = Machine.Offsets.MAXWOPEN end
|
||||||
if Machine.Offsets.MAXWHEIGHT then MaxWHeight = Machine.Offsets.MAXWHEIGHT end
|
if Machine.Offsets.MAXWHEIGHT then MaxWHeight = Machine.Offsets.MAXWHEIGHT end
|
||||||
@@ -285,9 +257,21 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
||||||
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
||||||
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
||||||
|
if Machine.Offsets.LIMIT_T1_PRESEL_T2 then Limit_T1_Presel_T2 = Machine.Offsets.LIMIT_T1_PRESEL_T2 end
|
||||||
|
if Machine.Offsets.LIMIT_T2_PRESEL_T1 then Limit_T2_Presel_T1 = Machine.Offsets.LIMIT_T2_PRESEL_T1 end
|
||||||
|
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||||
|
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
||||||
|
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
||||||
|
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
||||||
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
||||||
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
||||||
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
||||||
|
if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end
|
||||||
|
AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH or AngTrBHOffs
|
||||||
|
AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen
|
||||||
|
if Machine.Offsets.MAX_BACK_CLAMP_5 then MaxBackClamp5 = Machine.Offsets.MAX_BACK_CLAMP_5 end
|
||||||
|
if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end
|
||||||
|
|
||||||
-- aggiustamenti
|
-- aggiustamenti
|
||||||
MinY1 = MinV1 + MinDeltaYV
|
MinY1 = MinV1 + MinDeltaYV
|
||||||
MaxY1 = MaxMchY1
|
MaxY1 = MaxMchY1
|
||||||
@@ -335,7 +319,7 @@ local X1Id = EmtAxis {
|
|||||||
Home = ParkX1,
|
Home = ParkX1,
|
||||||
Invert = true,
|
Invert = true,
|
||||||
Geo = 'X1_AXIS/GEO',
|
Geo = 'X1_AXIS/GEO',
|
||||||
Aux = 'X1_AXIS/SOLID'}
|
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
||||||
-- *** Testa 1 ***
|
-- *** Testa 1 ***
|
||||||
EmtAxis {
|
EmtAxis {
|
||||||
Name = 'Z1',
|
Name = 'Z1',
|
||||||
@@ -397,6 +381,23 @@ local H12Id = EmtHead {
|
|||||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||||
Geo = 'H12_HEAD/GEO'}
|
Geo = 'H12_HEAD/GEO'}
|
||||||
EgtSetInfo( H12Id, 'ZMAXONROT', '1,210,610')
|
EgtSetInfo( H12Id, 'ZMAXONROT', '1,210,610')
|
||||||
|
-- Eventuale aggregato per lavorazioni BlockHaus
|
||||||
|
if AggreBlockHaus then
|
||||||
|
local H17Id = EmtHead {
|
||||||
|
Name = 'H17',
|
||||||
|
Parent = 'B1',
|
||||||
|
HSet = 'H11',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( -AngTrBHLen, 0, -AngTrBHOffs),
|
||||||
|
TDir = X_AX(),
|
||||||
|
ADir = Z_AX(),
|
||||||
|
Rot1W = 0.2,
|
||||||
|
SolCh = MCH_SCC.ADIR_NEAR,
|
||||||
|
OthColl = {'H2', 'B/SOLID', 'C/SOLID'},
|
||||||
|
Geo = 'H17_HEAD/GEO',
|
||||||
|
Aux = {'H17_HEAD/SOLID', 'H17_HEAD/COLLISION'}}
|
||||||
|
end
|
||||||
|
|
||||||
-- *** Testa 2 ***
|
-- *** Testa 2 ***
|
||||||
local X2Id = EmtAxis {
|
local X2Id = EmtAxis {
|
||||||
Name = 'X2',
|
Name = 'X2',
|
||||||
@@ -409,7 +410,7 @@ local X2Id = EmtAxis {
|
|||||||
Home = ParkX2,
|
Home = ParkX2,
|
||||||
Invert = true,
|
Invert = true,
|
||||||
Geo = 'X2_AXIS/GEO',
|
Geo = 'X2_AXIS/GEO',
|
||||||
Aux = 'X2_AXIS/SOLID'}
|
Aux = {'X2_AXIS/SOLID', 'X2_AXIS/COLLISION'}}
|
||||||
local Z2Id = EmtAxis {
|
local Z2Id = EmtAxis {
|
||||||
Name = 'Z2',
|
Name = 'Z2',
|
||||||
Parent = 'X2',
|
Parent = 'X2',
|
||||||
@@ -445,6 +446,7 @@ local B2Id = EmtAxis {
|
|||||||
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
||||||
local vtMove2 = Vector3d( 0, Head2Y, Head2Z)
|
local vtMove2 = Vector3d( 0, Head2Y, Head2Z)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||||
@@ -526,7 +528,7 @@ local PY1Id = EmtAxis {
|
|||||||
Stroke = {0, MaxHoOpen},
|
Stroke = {0, MaxHoOpen},
|
||||||
Home = MaxHoOpen,
|
Home = MaxHoOpen,
|
||||||
Geo = 'PY1_AXIS/GEO',
|
Geo = 'PY1_AXIS/GEO',
|
||||||
Aux = 'PY1_AXIS/SOLID'}
|
Aux = {'PY1_AXIS/SOLID', 'PY1_AXIS/CLAMP_CHECK'}}
|
||||||
local Y2Id = EmtAxis {
|
local Y2Id = EmtAxis {
|
||||||
Name = 'Y2',
|
Name = 'Y2',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
@@ -546,7 +548,7 @@ local PY2Id = EmtAxis {
|
|||||||
Stroke = {0, MaxHoOpen},
|
Stroke = {0, MaxHoOpen},
|
||||||
Home = MaxHoOpen,
|
Home = MaxHoOpen,
|
||||||
Geo = 'PY2_AXIS/GEO',
|
Geo = 'PY2_AXIS/GEO',
|
||||||
Aux = 'PY2_AXIS/SOLID'}
|
Aux = {'PY2_AXIS/SOLID', 'PY2_AXIS/CLAMP_CHECK'}}
|
||||||
-- Rulli
|
-- Rulli
|
||||||
local V1Id = EmtAxis {
|
local V1Id = EmtAxis {
|
||||||
Name = 'V1',
|
Name = 'V1',
|
||||||
@@ -657,6 +659,7 @@ EmtTable {
|
|||||||
Parent = 'T',
|
Parent = 'T',
|
||||||
Type = MCH_TT.FLAT,
|
Type = MCH_TT.FLAT,
|
||||||
Ref1 = Point3d( - DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
Ref1 = Point3d( - DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
||||||
|
Coll = 'Base/BELT',
|
||||||
Geo = 'TABLE/GEO',
|
Geo = 'TABLE/GEO',
|
||||||
Aux = 'TABLE/SOLID'}
|
Aux = 'TABLE/SOLID'}
|
||||||
-- *** ToolChanger ***
|
-- *** ToolChanger ***
|
||||||
@@ -711,13 +714,24 @@ EmtTcPos {
|
|||||||
TDir = -Y_AX(),
|
TDir = -Y_AX(),
|
||||||
ADir = -X_AX(),
|
ADir = -X_AX(),
|
||||||
Geo = 'BASE/T8'}
|
Geo = 'BASE/T8'}
|
||||||
EmtTcPos {
|
if AggreBlockHaus then
|
||||||
|
local TcpSsId = EmtTcPos {
|
||||||
|
Name = 'T9',
|
||||||
|
Parent = 'Base',
|
||||||
|
Pos = ptTc1 + 8 * vtDt1 + Vector3d( -AngTrBHLen, AngTrBHOffs, 0),
|
||||||
|
TDir = X_AX(),
|
||||||
|
ADir = -Y_AX(),
|
||||||
|
Geo = 'BASE/T9_BH',
|
||||||
|
Aux = 'BASE/T9_HS'}
|
||||||
|
else
|
||||||
|
EmtTcPos {
|
||||||
Name = 'T9',
|
Name = 'T9',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
Pos = ptTc1 + 8 * vtDt1,
|
Pos = ptTc1 + 8 * vtDt1,
|
||||||
TDir = -Y_AX(),
|
TDir = -Y_AX(),
|
||||||
ADir = -X_AX(),
|
ADir = -X_AX(),
|
||||||
Geo = 'BASE/T9'}
|
Geo = 'BASE/T9'}
|
||||||
|
end
|
||||||
EmtTcPos {
|
EmtTcPos {
|
||||||
Name = 'T10',
|
Name = 'T10',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
@@ -824,19 +838,27 @@ EgtMove( EgtGetFirstNameInGroup( BaseId, 'SIGN') or GDB_ID.NULL, vtMovB, GDB_RT.
|
|||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC1') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC1') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC2') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC2') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
if Mortiser then
|
if Mortiser then
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
end
|
end
|
||||||
|
-- sposto geometria aggiuntiva agrgegato BlockHaus
|
||||||
|
if AggreBlockHaus then
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'T9'), 'T9_HS') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
|
end
|
||||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
||||||
local vtMovC = Vector3d( 0, 0, ( DeltaTabZ + DeltaRulliTappetoZ + 1495)) -- -( -1010 - 485)
|
local vtMovC = Vector3d( 0, 0, ( DeltaTabZ + DeltaRulliTappetoZ + 1495)) -- -( -1010 - 485)
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'BELT'), vtMovC, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'BELT'), vtMovC, GDB_RT.GLOB)
|
||||||
local vtMove = Vector3d( 0, ( DeltaTabY - 1550.0), ( DeltaTabZ + 1010.0))
|
local vtMove = Vector3d( 0, ( DeltaTabY - 1550.0), ( DeltaTabZ + 1010.0))
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Y1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Y1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Y2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Y2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( V1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( V1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( PV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( PV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( QV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( QV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||||
@@ -872,12 +894,16 @@ function OnSetHead()
|
|||||||
EmtModifyAxisHome( 'B1', ParkB1)
|
EmtModifyAxisHome( 'B1', ParkB1)
|
||||||
EmtModifyAxisDirection( 'B1', X_AX())
|
EmtModifyAxisDirection( 'B1', X_AX())
|
||||||
-- se testa H12 (lama)
|
-- se testa H12 (lama)
|
||||||
elseif EMC.HEAD == 'H12' then
|
elseif EMC.HEAD == 'H12' or EMC.HEAD == 'H17' then
|
||||||
EmtModifyAxisHome( 'X1', ParkX1)
|
EmtModifyAxisHome( 'X1', ParkX1)
|
||||||
EmtModifyAxisHome( 'Z1', ParkZ1)
|
EmtModifyAxisHome( 'Z1', ParkZ1)
|
||||||
EmtModifyAxisHome( 'C1', ParkC1)
|
EmtModifyAxisHome( 'C1', ParkC1)
|
||||||
EmtModifyAxisHome( 'B1', ParkB1)
|
EmtModifyAxisHome( 'B1', ParkB1)
|
||||||
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
|
if EMC.HEAD == 'H12' then
|
||||||
|
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
|
||||||
|
else
|
||||||
|
EmtModifyAxisDirection( 'B1', X_AX())
|
||||||
|
end
|
||||||
-- se testa H21 (fresa2)
|
-- se testa H21 (fresa2)
|
||||||
elseif EMC.HEAD == 'H21' then
|
elseif EMC.HEAD == 'H21' then
|
||||||
local dRawH = GetRawHeight()
|
local dRawH = GetRawHeight()
|
||||||
@@ -913,11 +939,16 @@ function OnSetHead()
|
|||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
-------------------------- Testa utilizzata -------------------------
|
||||||
function GetHeadSet( sHead)
|
function GetHeadSet( sHead)
|
||||||
if sHead == 'H11' or sHead == 'H12' then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||||
return 1
|
return 1
|
||||||
|
elseif sHead == 'H19' then
|
||||||
|
return 11
|
||||||
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
||||||
return 2
|
return 2
|
||||||
|
elseif sHead == 'H29' then
|
||||||
|
return 21
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
@@ -928,7 +959,7 @@ end
|
|||||||
function GetHeadTCSet( sHead, sTcPos)
|
function GetHeadTCSet( sHead, sTcPos)
|
||||||
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
|
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
|
||||||
-- testa 1
|
-- testa 1
|
||||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||||
-- testa 1 su CU prossimo a testa 2
|
-- testa 1 su CU prossimo a testa 2
|
||||||
if nPos > 10 then
|
if nPos > 10 then
|
||||||
return 'Head1_TC2'
|
return 'Head1_TC2'
|
||||||
@@ -965,6 +996,12 @@ function HeadIsChainSaw( sHead)
|
|||||||
return ( sHead == 'H23')
|
return ( sHead == 'H23')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- Funzione che riconosce testa per tastatore
|
||||||
|
function HeadIsProbe( sHead)
|
||||||
|
return ( sHead == 'H19' or sHead == 'H29')
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
||||||
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
||||||
@@ -992,7 +1029,7 @@ end
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
||||||
function GetZExtra( sHead, dAngV)
|
function GetZExtra( sHead, dAngV)
|
||||||
if sHead == 'H11' or sHead == 'H21' then
|
if sHead == 'H11' or sHead == 'H21' or sHead == 'H17' then
|
||||||
if abs( dAngV) < 30.1 then
|
if abs( dAngV) < 30.1 then
|
||||||
return 400
|
return 400
|
||||||
elseif abs( dAngV) < 45.1 then
|
elseif abs( dAngV) < 45.1 then
|
||||||
@@ -1000,7 +1037,7 @@ function GetZExtra( sHead, dAngV)
|
|||||||
elseif abs( dAngV) < 60.1 then
|
elseif abs( dAngV) < 60.1 then
|
||||||
return 200
|
return 200
|
||||||
elseif abs( dAngV) < 90.1 then
|
elseif abs( dAngV) < 90.1 then
|
||||||
return 10
|
return 1
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
@@ -1012,7 +1049,9 @@ function GetZExtra( sHead, dAngV)
|
|||||||
elseif abs( dAngV) < 60.1 then
|
elseif abs( dAngV) < 60.1 then
|
||||||
return 200
|
return 200
|
||||||
elseif abs( dAngV) < 90.1 then
|
elseif abs( dAngV) < 90.1 then
|
||||||
return 10
|
return 1
|
||||||
|
elseif abs( dAngV) < 120 then
|
||||||
|
return -100
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|||||||
Binary file not shown.
+28
-19
@@ -7,18 +7,20 @@
|
|||||||
[Sawing]
|
[Sawing]
|
||||||
|
|
||||||
[Milling]
|
[Milling]
|
||||||
0=d,MaxElev,0
|
0=l,MaxElev,0
|
||||||
1=d,OutRaw,0
|
1=d,OutRaw,0
|
||||||
2=d,SideElev,0
|
2=l,SideElev,0
|
||||||
3=d,TrimExt,0
|
3=d,TrimExt,0
|
||||||
4=sr,VtFaceUse,0,0,0
|
4=s,VtFaceUse,0,0,0
|
||||||
|
5=s,EdgesFaceUse,0
|
||||||
|
|
||||||
[Pocketing]
|
[Pocketing]
|
||||||
0=d,MaxElev,0
|
0=l,MaxElev,0
|
||||||
1=b,Open,0
|
1=b,Open,0
|
||||||
2=d,OpenMinSave,0
|
2=d,OpenMinSafe,0
|
||||||
3=d,OpenOutRaw,0
|
3=d,OpenOutRaw,0
|
||||||
4=d,MaxOptSize,0
|
4=l,MaxOptSize,0
|
||||||
|
5=b,AdjustFeed,1
|
||||||
|
|
||||||
[Mortising]
|
[Mortising]
|
||||||
0=d,MaxElev,0
|
0=d,MaxElev,0
|
||||||
@@ -30,21 +32,28 @@
|
|||||||
[SawFinishing]
|
[SawFinishing]
|
||||||
|
|
||||||
[GenMachining]
|
[GenMachining]
|
||||||
0=l,LinTol,0.1
|
|
||||||
1=l,MaxLen,2
|
|
||||||
2=s,Type,ZigZag
|
|
||||||
3=d,SideAng,90
|
|
||||||
4=l,Step,10
|
|
||||||
5=l,OffsProj,0
|
|
||||||
6=l,LiTang,0
|
|
||||||
7=l,LiOrth,0
|
|
||||||
8=l,LiElev,0
|
|
||||||
9=l,LoTang,0
|
|
||||||
10=l,LoOrth,0
|
|
||||||
11=l,LoElev,0
|
|
||||||
12=b,DirFromGuide,1
|
|
||||||
|
|
||||||
[SurfRoughing]
|
[SurfRoughing]
|
||||||
|
0=l,MaxElev,1000
|
||||||
|
1=b,PlaneZ,0
|
||||||
|
|
||||||
[SurfFinishing]
|
[SurfFinishing]
|
||||||
0=b,SkipMaxDown,1
|
0=b,SkipMaxDown,1
|
||||||
|
|
||||||
|
[5AxMilling]
|
||||||
|
0=l,LinTol,0.01
|
||||||
|
1=l,MaxLen,10
|
||||||
|
2=s,Type,ZigZag
|
||||||
|
3=d,SideAng,90
|
||||||
|
4=l,Step,10
|
||||||
|
5=d,AngIni,-90
|
||||||
|
6=d,AngFin,90
|
||||||
|
7=l,LiTang,0
|
||||||
|
8=l,LiOrth,0
|
||||||
|
9=l,LiElev,0
|
||||||
|
10=l,LoTang,0
|
||||||
|
11=l,LoOrth,0
|
||||||
|
12=l,LoElev,0
|
||||||
|
13=b,DirFromGuide,0
|
||||||
|
14=b,SurfAvoid,0
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -30,6 +30,7 @@ local GS = {}
|
|||||||
-- Configurazione posizioni (con o senza TC2)
|
-- Configurazione posizioni (con o senza TC2)
|
||||||
local PositionTable = {}
|
local PositionTable = {}
|
||||||
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
||||||
|
local AggreBH = ( EgtGetHeadId( 'H17') ~= nil)
|
||||||
if SecondSaw then
|
if SecondSaw then
|
||||||
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
||||||
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
||||||
@@ -38,7 +39,7 @@ if SecondSaw then
|
|||||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos10", TcPos = "T11", Head = "H22", Group = "G3"},
|
{Pos = "Pos10", TcPos = "T11", Head = "H22", Group = "G3"},
|
||||||
{Pos = "Pos11", TcPos = "T13", Head = "H21", Group = "G3"},
|
{Pos = "Pos11", TcPos = "T13", Head = "H21", Group = "G3"},
|
||||||
@@ -61,7 +62,7 @@ else
|
|||||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos10", TcPos = "T11", Head = "H21", Group = "G3"},
|
{Pos = "Pos10", TcPos = "T11", Head = "H21", Group = "G3"},
|
||||||
{Pos = "Pos11", TcPos = "T12", Head = "H21", Group = "G3"},
|
{Pos = "Pos11", TcPos = "T12", Head = "H21", Group = "G3"},
|
||||||
@@ -78,7 +79,7 @@ else
|
|||||||
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T211", Head = "H23", Group = "G2"})
|
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T211", Head = "H23", Group = "G2"})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local UsePositionHead = true
|
local UsePositionHead = false
|
||||||
|
|
||||||
local function IsInGeomSet( ToolHead, PosHead)
|
local function IsInGeomSet( ToolHead, PosHead)
|
||||||
for GsIndex = 1, #GS do
|
for GsIndex = 1, #GS do
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+153
-1
@@ -1,7 +1,159 @@
|
|||||||
==== Common_ONE-PF Update Log ====
|
==== Common_ONE-PF Update Log ====
|
||||||
|
|
||||||
Versione 2.6-- (--/--/2024)
|
Versione 3.1f3 (08/06/2026)
|
||||||
|
- (GEN) M77 viene ora eseguita, prima era commentata.
|
||||||
|
|
||||||
|
Versione 3.1f2 (05/06/2026)
|
||||||
|
- (MLDE-GEN) Aggiunti parametri di limite asse X per decidere se fare preselezione su altra testa. Serve modifica MLDE
|
||||||
|
|
||||||
|
Versione 3.1f1 (03/06/2026)
|
||||||
|
- (NGE-MLDE-GEN-SIM) Versione unificata con predisposizione per gestione tastatori. Serve modificare anche la macchina, per ora gestione completa solo su PFrl.
|
||||||
|
|
||||||
|
Versione 3.1c2 (17/03/2026)
|
||||||
|
- (SIM-GEN) Aggiunta OnSpecialApplyMachining per calcolare i carrelli da subito
|
||||||
|
- Aggiungendo OnSpecialApplyMachining, ora la OnSpecialGetPrevMachiningOffset lavora correttamente. ATT: MIN_MACH -> 3.1b2
|
||||||
|
|
||||||
|
Versione 3.1c1 (04/03/2026)
|
||||||
|
- (GEN) Corretta chiamata di una variabile insesistente in caso di ONE
|
||||||
|
- (SIM) Allineata simulazione a generazione
|
||||||
|
|
||||||
|
Versione 3.1b1 (20/02/2026)
|
||||||
|
- (GEN) Aggiunta funzione ToolPreSelection() per la preselezione utensile. Ticket#2789
|
||||||
|
- (GEN) Funzione rinominata in ToolPreSelectionSingleHead(), ora utilizza funzione in MLDE per capire se è motosega
|
||||||
|
|
||||||
|
Versione 3.1a1 (16/01/2026)
|
||||||
|
- (SIM-GEN) Aggiunto controllo che evita collisioni durante lo svincolo in Z della sega a catena nelle funzioni ExecMoveZMax() e EmitZMax(). Ticket#2767
|
||||||
|
- (SIM-GEN) Piccola correzione modifiche fatte in precedenza
|
||||||
|
|
||||||
|
Versione 2.7l1 (18/12/2025)
|
||||||
|
- (SIM-GEN) Aggiunto controllo post movimenti ausiliari dell' EMC.PREVOFFSX nella funzione OnSpecialGetPrevMachiningOffset(). Ticket#2727
|
||||||
|
- (SIM-GEN) Divisione movimento B in approccio se > 90°. Ticket#2754
|
||||||
|
- (SIM) Aggiunta funzione CheckClamping
|
||||||
|
|
||||||
|
Versione 2.7k3 (28/11/2025)
|
||||||
|
- (GEN) Prima di andare allo scarico, si aggiunge movimento intermedio dove si aspetta che rulli scarico siano arrivati in posizione. Ticket#2716
|
||||||
|
|
||||||
|
Versione 2.7k2 (20/11/2025)
|
||||||
|
- (SIM) Aggiornata risoluzione VMillTol in funzione dello spessore lama
|
||||||
|
|
||||||
|
Versione 2.7k1 (05/11/2025)
|
||||||
|
- (SIM-GEN) Corretto calcolo per decidere se serve aprire i rulli
|
||||||
|
- (GEN) Aggiunta tolleranza in creazione piano di lavoro inclinato
|
||||||
|
- (SIM) Allo scarico si resetta Y2DELTA. Ticket#2687
|
||||||
|
|
||||||
|
Versione 2.7j3 (23/10/2025)
|
||||||
|
- (SIM) Corretta posizione parcheggio in caso di testa 1 su magazzino 2. Ticket#2660
|
||||||
|
|
||||||
|
Versione 2.7j2 (21/10/2025)
|
||||||
|
- (GEN) Se SPLIT con pinza 5, corretto salvataggio posizione pinza 2. Ticket#2654
|
||||||
|
|
||||||
|
Versione 2.7j1 (08/10/2025)
|
||||||
|
- (GEN) Salvataggio posizione Z su lavorazione precedente, sbagliava in caso di separazione. Ticket#2637
|
||||||
|
|
||||||
|
Versione 2.7i1 (10/09/2025)
|
||||||
|
- (SIM-GEN) Piccole correzioni per gestire secondo TC su ONE. Ticket#2563
|
||||||
|
- (SIM-GEN) Gestione aggregato BH completato. Ticket#2482
|
||||||
|
- (EST) Stima tempi considerando accelerazioni
|
||||||
|
- (SIM-GEN) Se fase start o restart, si aggiorna la posizione in X dell'asse per calcolare il link corretto
|
||||||
|
- (GEN) Piccola correzione risalita ZMAX dopo RELOAD del pezzo. Generazione allineata a simulazione.
|
||||||
|
|
||||||
|
Versione 2.7h2 (28/08/2025)
|
||||||
|
- (GEN) Migliorata gestione spegnimento utensile e disattivazione piano
|
||||||
|
- (SIM-GEN) Corretto nome variabile e altre piccole modifiche per Progress
|
||||||
|
|
||||||
|
Versione 2.7h1 (20/08/2025)
|
||||||
|
- (SIM-GEN) Non si chiudono i rulli se tagli o pretagli di testa e coda
|
||||||
|
- (SIM) Corretto movimento pinza 5 in caso di riposizionamento pinza 1
|
||||||
|
- (GEN) Corretta quota assoluta posizione testa trave in caso di pinza 5 e testa rimasta bassa
|
||||||
|
- (GEN) Se ultima lavorazione pezzo precedente ha stesso utensile della prima lavorazione pezzo successivo, la speed resta accesa
|
||||||
|
|
||||||
|
Versione 2.7g4 (23/07/2025)
|
||||||
|
- (SIM-GEN) Aggiunto parametro configurabile da TS3 per massima sporgenza trave in coda per pinza 5. Ticket#2538
|
||||||
|
|
||||||
|
Versione 2.7g3 (22/07/2025)
|
||||||
|
- (SIM) Corretto lettura angolo di presa della motosega
|
||||||
|
|
||||||
|
Versione 2.7g2 (08/07/2025)
|
||||||
|
- (SIM) Corretto movimento a parcheggio sega a catena. Ticket#2517
|
||||||
|
|
||||||
|
Versione 2.7g1 (01/07/2025)
|
||||||
|
- (GEN) Rimossa gestione PROBE inserita per sbaglio
|
||||||
|
- (GEN) Corretto gestione accelerazioni
|
||||||
|
- (SIM-GEN) Aggiunta gestione massima lunghezza scarico
|
||||||
|
|
||||||
|
Versione 2.7f1 (04/06/2025)
|
||||||
|
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina. Tolto parametro 'CoeffVM'.
|
||||||
|
- (GEN) Aggiunti parametri FMAXPINZE, MAXACC, MINACC configurabili da TS3. Ticket#2052
|
||||||
|
|
||||||
|
Versione 2.7e1 (28/05/2025)
|
||||||
|
- (SIM-GEN) Alla separazione si spostano i carrelli di 30mm aprendo il taglio. Ticket#2259,Ticket#2328
|
||||||
|
|
||||||
|
Versione 2.7d1 (16/04/2025)
|
||||||
|
- (SIM) Distanza di collisione portata a 3mm, qualità VMILL ridotta a 4mm. Ticket#2395
|
||||||
|
|
||||||
|
Versione 2.7c3 (25/03/2025)
|
||||||
|
- (GEN) Corretto movimento approccio alla lavorazione se utensile lama montata su magazzino 2. Ticket#2361
|
||||||
|
|
||||||
|
Versione 2.7c2 (12/03/2025)
|
||||||
|
- (SIM-GEN) Migliorato calcolo posizione barra dopo split. Tiene in considerazione ingombro lavorazioni pezzo. Ticket#2321
|
||||||
|
- (GEN) Aggiunta commenti HEADER e FOOTER per comunicazione con linea o altre macchine, da parte di Essetre.
|
||||||
|
- (SIm-GEN) Migliorato movimento approccio al pezzo con lama. Allineamento simulazione-generazione che facevano due movimenti leggermente diversi. Ticket#2335
|
||||||
|
|
||||||
|
Versione 2.7c1 (05/03/2025)
|
||||||
|
- (GEN) Corretto movimento in home utensile precedente. Ticket#2324
|
||||||
|
|
||||||
|
Versione 2.7b1 (07/02/2025)
|
||||||
|
- (SIM-GEN) In caso di Progress, alla deselezione utensile testa 1 su TC2 si fa movimento Z raddrizzando asse B. Ticket#2247
|
||||||
|
- (SIM-GEN) Estensione soluzione Ticket#2206. Ora si aprono di 5mm extra anche se solo una morsa resta in posizione. Ticket#2259
|
||||||
|
- (SIM) Migliorato controllo collisioni con traversa. Ora si considera asse X. Serve modifica NGE! Ticket#2257
|
||||||
|
|
||||||
|
Versione 2.7a2 (15/01/2024)
|
||||||
|
- (SIM-GEN) In caso di testa 1 su TC2 (ONE), si ruota prima la C e poi la B. Ticket#2247
|
||||||
|
|
||||||
|
Versione 2.7a1 (07/01/2024)
|
||||||
|
- (GEN) In separazione, quando si porta indietro il restante, si aprono le paratie rulli subito. Ticket#2214
|
||||||
|
- (SIM-GEN) Se entrambe le morse sono restate in posizione, le sposto comunque di 5mm per distanziare i pezzi separati. Ticket#2206
|
||||||
|
|
||||||
|
Versione 2.6l2 (09/12/2024)
|
||||||
|
- (SIM-GEN) Corretto problema introdotto in 2.6l1 per risolvere #2198. Ticket#2203
|
||||||
|
- (SIM-GEN) In MLSE modificato controllo direzione utensile per determinare Z massima. Ticket#2204
|
||||||
|
|
||||||
|
Versione 2.6l1 (02/12/2024)
|
||||||
|
- (SIM) Dopo scarico pezzo per ribaltamento, si aprono sempre i rulli. Ticket#2192
|
||||||
|
- (SIM-GEN) Nei movimenti si ricalcola la Z solo se la quota di lavoro è più in alta della posizione a ZHOME della testa. Ticket#2198
|
||||||
|
- (GEN) Se bisogna andare in home, ma la testa lo è già, non si scrive nulla
|
||||||
|
|
||||||
|
Versione 2.6j3 (21/10/2024)
|
||||||
|
- (GEN) Se richiesto movimento in home, si scrive sempre parcheggio in home dell'utensile precedente. Prima si scriveva solo per lama.
|
||||||
|
|
||||||
|
Versione 2.6j2 (17/10/2024)
|
||||||
|
- (SIM-GEN) Se motosega prelevata con A=0, alla fine la si porta sempre alla quota ZMAX, indipendentemente dall'altezza trave che era fissata a 650mm. Ora lo fa sempre.
|
||||||
|
|
||||||
|
Versione 2.6j1 (08/10/2024)
|
||||||
|
- (SIM-GEN) Corretto primo movimento di approccio al pezzo. Ticket#2093
|
||||||
|
- (SIM-GEN) Corretto movimento in Home in caso di lama e movimento rulliera di carico. Ticket#2054
|
||||||
|
- (GEN) In caso di movimento in Home non si fa più preselezione ma si tiene utensile vecchio. Ticket#1926
|
||||||
|
|
||||||
|
Versione 2.6i2 (13/09/2024)
|
||||||
|
- (GEN) Migliorato calcolo chiusura paratia rulli con aggiornamento lunghezza della barra in caso di ultimo taglio e grezzo residuo in coda. Ticket#2017
|
||||||
|
- (NGE-MLDE-GEN-SIM) Aggiunto solidi collisione TC. Corretto movimento a Y di sicurezza con lama. Ticket#2042
|
||||||
|
- (NGE-SIM) Aggiunta collisione magazzino motosega ONE
|
||||||
|
|
||||||
|
Versione 2.6i1 (02/09/2024)
|
||||||
|
- (SIM-GEN) Quando si aprono i rulli, se la trave non può seguire i rulli perchè la pinza andrebbe in extra-corsa, si sposta comunque la pinza fino al massimo della sua corsa. Ticket#1949
|
||||||
|
- (GEN) In preselezione. Se lavorazione motosega, non mando a parcheggio altra testa con utensile precedente, perchè subito dopo viene chiamata preselezione. Ticket#1961
|
||||||
|
|
||||||
|
Versione 2.6h2 (07/08/2024)
|
||||||
|
- (SIM) Allineata simulazione a generazione in primo movimento rapido approccio al pezzo.
|
||||||
|
|
||||||
|
Versione 2.6h1 (01/08/2024)
|
||||||
|
- (GEN) Corretto segno posizione X di sicurezza per rotazione assi rotanti.
|
||||||
|
|
||||||
|
Versione 2.6g5 (31/07/2024)
|
||||||
- (SIM-GEN) Se motosega allineata ad asse B per tagli di fianco, corretto movimento che manda testa a parcheggio. Pezzi più alti di 650 va solo in Zmax. Ticket#1943
|
- (SIM-GEN) Se motosega allineata ad asse B per tagli di fianco, corretto movimento che manda testa a parcheggio. Pezzi più alti di 650 va solo in Zmax. Ticket#1943
|
||||||
|
- (SIM-GEN) Gestione movimenti speciali per pezzi molto alti. Se HomeZ < primo punto lavorazione, allora vado al punto Z lavorazione prima di approcciare il pezzo in X. Ticket#1943
|
||||||
|
- (GEN) Gestione creazione piano generico in caso il primo movimento della lavorazione sia un arco. Ticket#1891
|
||||||
|
- (SIM-GEN) Modifica limite inferirore intervallo di pinzaggio per garantire, se possibile, il passaggio pezzo a pinza 2. Da Common-PF1250.
|
||||||
- (GEN) Corretta scrittura ISO per parcheggiare morsa 3 dopo ribaltamento. Ticket#1922,#1733
|
- (GEN) Corretta scrittura ISO per parcheggiare morsa 3 dopo ribaltamento. Ticket#1922,#1733
|
||||||
|
|
||||||
Versione 2.6g4 (19/07/2024)
|
Versione 2.6g4 (19/07/2024)
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
local InfoCommon_STD_PP = {
|
local InfoCommon_STD_PP = {
|
||||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||||
VERSION = '2.6--DEV', -- versione script
|
VERSION = '3.1f3', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
return InfoCommon_STD_PP
|
return InfoCommon_STD_PP
|
||||||
|
|||||||
Reference in New Issue
Block a user