Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 385b540c35 | |||
| 52761188c0 | |||
| 27dd05b3c6 | |||
| e0735a224b | |||
| 3a80013691 | |||
| bec18b1cc3 | |||
| 2e46fc36c7 | |||
| 36e00ae91f | |||
| 7bc7528556 | |||
| db65fb14ac | |||
| bdc919e0ec | |||
| 3711fe72d5 | |||
| 02a14eec85 | |||
| 5777faf99e | |||
| 2f14c825e4 | |||
| 709e433d19 | |||
| 8010cf2c24 | |||
| aa7bef4252 | |||
| 7bf2ecbef5 | |||
| 1b2cbd3a5f | |||
| 5368d72f88 | |||
| a135950056 | |||
| 2c984eb276 | |||
| 4048d52280 | |||
| 4ccdf8a231 | |||
| 484141cbcd | |||
| 9a9bee2869 | |||
| 2e291e2011 | |||
| 859c08b456 | |||
| d4bb6af5db | |||
| 843b98a0fa | |||
| 1add97b879 | |||
| ba6726a594 | |||
| 535291ea33 | |||
| 06ad954b81 | |||
| 85bee7987d | |||
| 0e87d1b2a9 | |||
| c3cb86a40e | |||
| c34706379c | |||
| d42dcabf04 | |||
| f0797bdb0d | |||
| 6c1fb39bac | |||
| d4565a71a5 | |||
| 01abf991d4 | |||
| 351a0ef884 | |||
| df16690de9 | |||
| 4759ea6d05 | |||
| d4e4635019 | |||
| e47192e710 | |||
| dabdbc6dfc | |||
| 1d4b28ab21 | |||
| a45e6f9c40 | |||
| a8d2f08c46 | |||
| 44afb5b26e | |||
| 74795bcf36 | |||
| ee534d648c | |||
| c112919e87 | |||
| 714392ece5 | |||
| bbaff1119d | |||
| 406a91fa64 | |||
| 7c3bb2ce81 | |||
| 930819d007 | |||
| 5311301eab | |||
| 33b4e4861d | |||
| 833bfe2dca | |||
| fb69b0bec3 | |||
| 2d4c1afd56 | |||
| dc959734f4 | |||
| 9f183dabb7 | |||
| e838ea6e31 | |||
| dba32792e2 | |||
| 5e930151f4 | |||
| 5b201e1f8c | |||
| 1b315af794 | |||
| a37d193656 | |||
| 2898dc1059 | |||
| 29eb98eb99 | |||
| c5a5d2553b | |||
| 703cfbd4a0 | |||
| ba5dd2cdce | |||
| 43ac6207b5 | |||
| 517247d739 | |||
| afedcc1daa | |||
| 97efea9cac | |||
| 01408ddaed | |||
| 4069a834ec | |||
| 826341d694 | |||
| 88c329fa4b | |||
| 2638f8b309 | |||
| 49d34f1baa | |||
| 27ddccbda4 | |||
| 580d6c61ce | |||
| 461a3455e4 | |||
| c7bcbf5f1c | |||
| 3054c19ec7 |
@@ -15,4 +15,3 @@
|
||||
/Wall/PocketingData.lua
|
||||
/Wall/SawingData.lua
|
||||
/Wall/Ts3Data.lua
|
||||
.vscode/settings.json
|
||||
|
||||
+318
@@ -0,0 +1,318 @@
|
||||
variables:
|
||||
VERS_MAIN: '1.0'
|
||||
MACH_NAME: ''
|
||||
MACH_NAME_TEST: ''
|
||||
MANUFACTURER: ''
|
||||
NEW_REL: ''
|
||||
NET_SHARE_X: '\\10.74.82.201\EgwTech'
|
||||
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
|
||||
NET_SHARE_S: '\\10.74.82.201\Scambio'
|
||||
NET_SHARE_R: '\\10.74.82.201\EgwTech'
|
||||
NET_SHARE_H: '\\10.74.82.252\team drives'
|
||||
NET_USERQ: 'steamw\egalware'
|
||||
NET_USER_SERVICES: 'steamw\services'
|
||||
MACH_VERS: '0.0.0.0'
|
||||
TEMP_PATH: 'C:\MachinesDeploy'
|
||||
MACHINES_PATH_R: 'R:\EgtData\Machines_GIT'
|
||||
DEST_MACHINES_PATH_H: 'H:'
|
||||
SRC_PATH: ''
|
||||
BASE_PATH: ''
|
||||
TEST_PATH: ''
|
||||
URL_VERSIONS_LOG: "https://liman.egalware.com/ELM.API/api/release/save"
|
||||
MACH_VERS_NUM: '0.0.0.0'
|
||||
CRITICAL_STRING: "#critical#"
|
||||
TOOLS_MACHINE_PATH: ""
|
||||
|
||||
|
||||
#Note compilazione LUA:
|
||||
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
||||
|
||||
# helper copia script verso cartella di rete S:\ delle cartelle bin
|
||||
.ReplicaS: &ReplicaS
|
||||
- |
|
||||
net use S: /delete
|
||||
SLEEP 2
|
||||
net use S: $env:NET_SHARE_S /u:$env:NET_USERQ $SDRIVE_PASSWD
|
||||
ROBOCOPY /MIR $env:BASE_PATH S:\LucaM\MachinesDeploy\$env:MACH_NAME\$env:MACH_VERS\ /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||
SLEEP 2
|
||||
net use S: /delete
|
||||
|
||||
# helper copia script verso cartella di rete R:\
|
||||
.ReplicaR: &ReplicaR
|
||||
- |
|
||||
net use R: /delete
|
||||
SLEEP 2
|
||||
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
echo "-----------------------"
|
||||
echo " Copia macchina su R"
|
||||
echo "-----------------------"
|
||||
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||
ROBOCOPY /MIR "$env:SRC_PATH" "$customerPathR\$env:MACH_NAME\" /XD "bin"
|
||||
ROBOCOPY "$env:TEST_PATH" "$customerPathR\_TestMachines\$env:MACH_NAME_TEST\" /E /XD "bin"
|
||||
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||
SLEEP 2
|
||||
net use R: /delete
|
||||
|
||||
# helper copia script verso drive condiviso
|
||||
.ReplicaStor01: &ReplicaStor01
|
||||
- |
|
||||
net use H: /delete
|
||||
SLEEP 2
|
||||
net use H: $env:NET_SHARE_H /u:$env:NET_USER_SERVICES $SRVCS_PASSWD
|
||||
echo "-----------------------"
|
||||
echo " Copia macchina su stor01"
|
||||
echo "-----------------------"
|
||||
SLEEP 2
|
||||
$customerPathH = $env:DEST_MACHINES_PATH_H + "\" + $env:MANUFACTURER + "\test"
|
||||
$destinationPath = "$customerPathH\$env:MACH_NAME" + "\"
|
||||
ROBOCOPY "$env:BASE_PATH" "$destinationPath\" *.zip
|
||||
SLEEP 2
|
||||
net use H: /delete
|
||||
|
||||
# helper copia script verso cartella di rete R:\ per develop
|
||||
.ReplicaR_DEV: &ReplicaR_DEV
|
||||
- |
|
||||
net use R: /delete
|
||||
SLEEP 2
|
||||
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
echo "-----------------------"
|
||||
echo " Copia macchina su R - DEV"
|
||||
echo "-----------------------"
|
||||
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\_DEV\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||
SLEEP 2
|
||||
net use R: /delete
|
||||
|
||||
#helper copia sorgenti da R a percorso temporaneo
|
||||
.CreateBaseFolder: &CreateBaseFolder
|
||||
- |
|
||||
net use R: /delete
|
||||
SLEEP 2
|
||||
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
echo "-----------------------"
|
||||
echo " Recupero file non git da R e copia su macchina virtuale"
|
||||
echo "-----------------------"
|
||||
# test se la cartella con gli utensili esiste per questa macchina
|
||||
if (!(Test-Path -Path $env:TOOLS_MACHINE_PATH)) {
|
||||
echo "-----------------------"
|
||||
echo "CANNOT FIND TOOLS FOR THIS MACHINE!!"
|
||||
echo "-----------------------"
|
||||
Exit 1}
|
||||
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:TEST_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||
SLEEP 2
|
||||
net use R: /delete
|
||||
|
||||
# helper compilazione LUA a 32 e 64 bit
|
||||
.LuaCompile: &LuaCompile
|
||||
- |
|
||||
Set-Alias lua54 C:\Tools\Lua32\luac54
|
||||
echo "-----------------------"
|
||||
echo " Copia file su macchina virtuale"
|
||||
echo "-----------------------"
|
||||
ROBOCOPY . "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||
ROBOCOPY . "$env:TEST_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.mlde" -NewName "$env:MACH_NAME_TEST.mlde"
|
||||
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.ini" -NewName "$env:MACH_NAME_TEST.ini"
|
||||
ROBOCOPY . "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||
echo "-----------------------"
|
||||
echo " Compilazione file *.lua 32/64bit"
|
||||
echo "-----------------------"
|
||||
$FileList = Get-ChildItem * -Include( "*.mlpe", "*.mlse")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
lua54 -o $env:SRC_PATH\bin\$env:MACH_NAME\$FileName -s $FileName
|
||||
echo "lua54 -o bin\$FileName -s $FileName"
|
||||
}
|
||||
|
||||
# helper recupero nome macchina e costruttore
|
||||
.machName-fix: &machName-fix
|
||||
- |
|
||||
echo "-----------------------"
|
||||
echo " Recupero nome macchina e costruttore"
|
||||
echo "-----------------------"
|
||||
$fileName = dir *.mlde
|
||||
$env:MACH_NAME = $fileName.BaseName
|
||||
$env:MACH_NAME_TEST = $env:MACH_NAME + ".TEST"
|
||||
$comp = $fileName.BaseName -split "-"
|
||||
$env:MANUFACTURER = $comp[0]
|
||||
Write-Output $env:MANUFACTURER
|
||||
|
||||
# helper calcolo versione
|
||||
.version-fix: &version-fix
|
||||
- |
|
||||
echo "-----------------------"
|
||||
echo " Calcolo versione"
|
||||
echo "-----------------------"
|
||||
|
||||
# calcolo versione formato stringa
|
||||
$fPath = "$env:MACH_NAME.mlde";
|
||||
$vLine = Select-String -path $fPath -Pattern '^PP_VER';
|
||||
$comp = $vLine -split "=";
|
||||
$env:MACH_VERS = $comp[1].Replace("'","").Trim()
|
||||
# display versione formato stringa
|
||||
Write-Output $env:MACH_VERS
|
||||
|
||||
# calcolo versione formato numerico
|
||||
$fPath = "$env:MACH_NAME.mlde";
|
||||
$vLine = Select-String -path $fPath -Pattern '^PP_NVER';
|
||||
$comp = $vLine -split "=";
|
||||
$env:MACH_VERS_NUM = $comp[1].Replace("'","").Trim()
|
||||
# display versione formato numerico
|
||||
Write-Output $env:MACH_VERS_NUM
|
||||
|
||||
# helper calcolo versione se develop
|
||||
.version-fix_DEV: &version-fix_DEV
|
||||
- |
|
||||
echo "-----------------------"
|
||||
echo " Calcolo versione - DEV"
|
||||
echo "-----------------------"
|
||||
$commitAuthor = $CI_COMMIT_AUTHOR -split " "
|
||||
$commitAuthor = $commitAuthor[0].Trim()
|
||||
$env:MACH_VERS = $commitAuthor
|
||||
# display versione
|
||||
Write-Output $env:MACH_VERS
|
||||
|
||||
# helper creazione folders
|
||||
.folder-fix: &folder-fix
|
||||
- |
|
||||
echo "-----------------------"
|
||||
echo " Creazione cartelle su macchina virtuale"
|
||||
echo "-----------------------"
|
||||
$env:TOOLS_MACHINE_PATH = "$env:MACHINES_PATH_R\$env:MANUFACTURER\_DefaultMachineSetup\$env:MACH_NAME"
|
||||
Write-Output $env:TOOLS_MACHINE_PATH
|
||||
$env:SRC_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME";
|
||||
$env:BASE_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS";
|
||||
$env:TEST_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME_TEST";
|
||||
Write-Output $env:BASE_PATH;
|
||||
if (Test-Path $env:BASE_PATH) { Remove-Item -Path "$env:BASE_PATH\*" -R -Force };
|
||||
Write-Output $env:TEST_PATH;
|
||||
|
||||
# helper compressione e pulizia folders
|
||||
.ZipClean: &ZipClean
|
||||
- |
|
||||
" Compressione file su macchina virtuale"
|
||||
$7zipPath = $env:ProgramFiles+"\7-Zip\7z.exe";
|
||||
if (-not (Test-Path -Path $7zipPath -PathType Leaf)) {
|
||||
throw "7 zip file '$7zipPath' not found"
|
||||
}
|
||||
Set-Alias 7zip $7zipPath
|
||||
$Target = "$env:BASE_PATH\$env:MACH_NAME.zip"
|
||||
cd "$env:SRC_PATH\bin\"
|
||||
$Source = "*"
|
||||
7zip a -tzip $Target $Source
|
||||
Write-Output "called ZIP $Source --> $Target"
|
||||
|
||||
# helper invio notifica a log versioni online (LiMan)
|
||||
.SendToVersionsLog: &SendToVersionsLog
|
||||
- |
|
||||
echo "-----------------------"
|
||||
echo " Invio versione a log online"
|
||||
echo "-----------------------"
|
||||
$tags = ""
|
||||
$date = ""
|
||||
# se critico scrive tag
|
||||
if ( $CI_COMMIT_MESSAGE | Select-String -Pattern $env:CRITICAL_STRING) {
|
||||
$tags = "CRITICAL"
|
||||
$date = (Get-Date).AddDays(1).toString("yyyy-MM-ddTHH:mm:ss.fffZ")
|
||||
}
|
||||
else
|
||||
{
|
||||
$date = (Get-Date).AddDays(3).toString("yyyy-MM-ddTHH:mm:ss.fffZ")
|
||||
}
|
||||
$body =
|
||||
@{
|
||||
codInst = "EgalWare"
|
||||
codApp = $env:MACH_NAME
|
||||
uplAppId = "UpdateManager"
|
||||
masterKey = $LiMan_Key
|
||||
tipo = "Machine"
|
||||
versNum = $env:MACH_VERS_NUM
|
||||
versText = $env:MACH_VERS
|
||||
releaseDate = $date
|
||||
relTags = $tags
|
||||
}
|
||||
$jsonBody = ConvertTo-Json -InputObject $body
|
||||
echo $jsonBody
|
||||
Invoke-WebRequest -Method Post -URI $env:URL_VERSIONS_LOG -ContentType "application/json" -Body $jsonBody -UseBasicParsing
|
||||
|
||||
|
||||
# helper esecuzione test
|
||||
.RunTest: &RunTest
|
||||
- |
|
||||
Write-Output "Test done!"
|
||||
|
||||
|
||||
stages:
|
||||
- build
|
||||
# - test
|
||||
# - deploy
|
||||
|
||||
LuaCompile:build:
|
||||
stage: build
|
||||
only:
|
||||
- main
|
||||
- master
|
||||
tags:
|
||||
- win
|
||||
before_script:
|
||||
- *machName-fix
|
||||
- *version-fix
|
||||
- *folder-fix
|
||||
script:
|
||||
- *CreateBaseFolder
|
||||
- *LuaCompile
|
||||
- *ZipClean
|
||||
- *ReplicaR
|
||||
- *ReplicaStor01
|
||||
- *SendToVersionsLog
|
||||
|
||||
LuaCompileDev:build:
|
||||
stage: build
|
||||
only:
|
||||
- develop
|
||||
tags:
|
||||
- win
|
||||
before_script:
|
||||
- *machName-fix
|
||||
- *version-fix_DEV
|
||||
- *folder-fix
|
||||
script:
|
||||
- *CreateBaseFolder
|
||||
- *LuaCompile
|
||||
- *ZipClean
|
||||
- *ReplicaR_DEV
|
||||
|
||||
# LuaCompile:test:
|
||||
# stage: test
|
||||
# needs: ["LuaCompile:build"]
|
||||
# only:
|
||||
# - main
|
||||
# - master
|
||||
# - develop
|
||||
# tags:
|
||||
# - win
|
||||
# before_script:
|
||||
# - *version-fix
|
||||
# - *folder-fix
|
||||
# script:
|
||||
# - *LuaCompile
|
||||
# - *RunTest
|
||||
|
||||
# LuaCompile:deploy:
|
||||
# stage: deploy
|
||||
# needs: ["LuaCompile:test"]
|
||||
# only:
|
||||
# - main
|
||||
# - master
|
||||
# tags:
|
||||
# - win
|
||||
# before_script:
|
||||
# - *version-fix
|
||||
# - *folder-fix
|
||||
# script:
|
||||
# - *LuaCompile
|
||||
# - *ZipClean
|
||||
# - *ReplicaR
|
||||
|
||||
+76
-4
@@ -67,12 +67,15 @@ local BeamData = {
|
||||
DH_MAX_TOP = 370, -- quota massima raggiungibile dalla testa da sotto dal sotto del pezzo
|
||||
KIOTP = 2, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||
MAXDIAM_POCK_CORNER = 30, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||
USE_LONGCUT = false, -- 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
|
||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
||||
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||
ADVANCE_TAIL_OFFS = 5, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||
DOUBLE_HEAD_DOVETAIL = true, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
||||
DOUBLE_HEAD_MORTISE = true, -- flag abilitazione lavorazione mortase in doppio
|
||||
DOUBLE_HEAD_DRILLING = true -- flag abilitazione forature in doppio
|
||||
DOUBLE_HEAD_DRILLING = true, -- 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
|
||||
MIN_HEIGHT_ADDED_CUTS = 400, -- altezza minima pezzo per effettuare tagli orizzontali aggiuntivi in testa e coda
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -92,6 +95,9 @@ if EgtExistsFile( sDataBeam) then
|
||||
if Machine.Offsets.DOUBLE_HEAD_DOVETAIL then BeamData.DOUBLE_HEAD_DOVETAIL = ( Machine.Offsets.DOUBLE_HEAD_DOVETAIL == 1) end
|
||||
if Machine.Offsets.DOUBLE_HEAD_POCKET then BeamData.DOUBLE_HEAD_MORTISE = ( Machine.Offsets.DOUBLE_HEAD_POCKET == 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
|
||||
if Machine.Offsets.MIN_HEIGHT_ADDED_CUTS then BeamData.MIN_HEIGHT_ADDED_CUTS = min( Machine.Offsets.MIN_HEIGHT_ADDED_CUTS, BeamData.MIN_HEIGHT_ADDED_CUTS) end
|
||||
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.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
||||
@@ -99,6 +105,7 @@ if EgtExistsFile( sDataBeam) then
|
||||
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.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||
BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
@@ -210,6 +217,71 @@ local function GetBlockedAxis( sHead, nToolType, sBlockedAxis)
|
||||
end
|
||||
end
|
||||
BeamData.GetBlockedAxis = GetBlockedAxis
|
||||
---------------------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetMinNzTopBladeDownUp( b3Raw, vtNFace, vtToolDirection)
|
||||
return -0.484
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetSetupInfo( sHead)
|
||||
local SetupInfo = {}
|
||||
|
||||
-- dati comuni
|
||||
SetupInfo.bIsCSymmetrical = true
|
||||
SetupInfo.dCAxisEncumbrance = 180
|
||||
SetupInfo.bToolOnAggregate = false
|
||||
|
||||
-- testa 5 assi da sopra
|
||||
if sHead == 'H11' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = function() return sin( -35) end
|
||||
-- lama su aggregato testa 5 assi da sopra
|
||||
elseif sHead == 'H12' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = function() return sin( -35) end
|
||||
-- se con aggregato si considera non simmetrico
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||
SetupInfo.dMaxMatDecrease = 25
|
||||
SetupInfo.GetMinNzDownUp = GetMinNzTopBladeDownUp
|
||||
-- seconda lama su aggregato testa 5 assi da sopra
|
||||
elseif sHead == 'H16' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = function() return sin( -35) end
|
||||
-- se con aggregato si considera non simmetrico
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||
SetupInfo.dMaxMatDecrease = 25
|
||||
SetupInfo.GetMinNzDownUp = GetMinNzTopBladeDownUp
|
||||
-- motosega
|
||||
elseif sHead == 'H13' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMinNz = function() return 0 end
|
||||
SetupInfo.dZSafeDelta = 60
|
||||
-- testa 5 assi da sotto
|
||||
elseif sHead == 'H21' then
|
||||
SetupInfo.HeadType = { bTop = false, bBottom = true}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMaxNz = function() return sin( 25) end
|
||||
-- lama su aggregato testa 5 assi da sotto
|
||||
elseif sHead == 'H22' then
|
||||
SetupInfo.HeadType = { bTop = false, bBottom = true}
|
||||
SetupInfo.PreferredSide = {}
|
||||
SetupInfo.GetMaxNz = function() return sin( 25) end
|
||||
-- se con aggregato si considera non simmetrico
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||
SetupInfo.dMaxMatDecrease = 25
|
||||
end
|
||||
|
||||
return SetupInfo
|
||||
end
|
||||
BeamData.GetSetupInfo = GetSetupInfo
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return BeamData
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
2=Drill_H2
|
||||
3=Pocket
|
||||
4=Pocket_H2
|
||||
5=Predrill
|
||||
6=Predrill_H2
|
||||
|
||||
[Milling]
|
||||
1=Prof
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[BEAM]
|
||||
StartOffset=0
|
||||
Offset=0
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@ local sBaseDir = EgtGetCurrMachineDir()
|
||||
if NumericalControl == 'NUM' then
|
||||
error( 'Numerical Control error : NUM not yet managed')
|
||||
elseif NumericalControl == 'TPA' then
|
||||
dofile( sBaseDir .. '\\Common-PF1250.TPA.mlpe')
|
||||
dofile( sBaseDir .. '\\Common_PF1250.TPA.mlpe')
|
||||
else
|
||||
error( 'Numerical Control error : unkwnown type')
|
||||
end
|
||||
@@ -76,10 +76,12 @@ function OnSimulStart()
|
||||
if vTcPos then
|
||||
for i = 1, #vTcPos do
|
||||
local vTools = EgtGetToolsInCurrSetupPos( vTcPos[i])
|
||||
if vTools and vTools[1] and #(vTools[1]) > 0 then
|
||||
EgtLoadTool( vTcPos[i], 1, vTools[1])
|
||||
ShowToolInTcPos( vTcPos[i], true)
|
||||
for j = 1, #( vTools or {}) do
|
||||
if vTools[j] ~= '' then
|
||||
EgtLoadTool( vTcPos[i], j, vTools[j])
|
||||
end
|
||||
end
|
||||
ShowToolInTcPos( vTcPos[i], true)
|
||||
end
|
||||
end
|
||||
-- Carico gli utensili iniziali o di default sulle due teste
|
||||
@@ -106,7 +108,7 @@ function OnSimulStart()
|
||||
AddToCollisionCheck( 'X2', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'C2', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'B2', 'COLLISION', EMT.COLLOBJ)
|
||||
if EgtGetHeadId('H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
AddToCollisionCheck( 'Z3', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'C3', 'COLLISION', EMT.COLLOBJ)
|
||||
AddToCollisionCheck( 'B3', 'COLLISION', EMT.COLLOBJ)
|
||||
@@ -120,12 +122,16 @@ function OnSimulStart()
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL1'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL2'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'CHSAW'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'CEIL'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC1'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC2'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TCR'},
|
||||
{ Grp = 'Z2', Sub = 'COLLISION', Name = 'COL1'},
|
||||
{ Grp = 'Z2', Sub = 'COLLISION', Name = 'CHAIN'},
|
||||
{ Grp = 'Z2', Sub = 'COLLISION', Name = 'COL2'}}
|
||||
{ Grp = 'Z2', Sub = 'COLLISION', Name = 'COL2'},
|
||||
{ Grp = 'X1', Sub = 'COLLISION', Name = 'STM'}}
|
||||
|
||||
if EgtGetHeadId('H31') then
|
||||
table.insert( McdData, { Grp = 'X1', Sub = 'COLLISION', Name = 'STM'})
|
||||
if IsHeadExisting( 3) then
|
||||
table.insert( McdData, { Grp = 'X3', Sub = 'COLLISION', Name = 'STM'})
|
||||
end
|
||||
|
||||
@@ -218,18 +224,24 @@ function OnSimulDispositionStart()
|
||||
end
|
||||
end
|
||||
-- determino la risoluzione dello Zmap
|
||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||
local dTol = 4.51
|
||||
if dArea < CoeffVM * 0.5e6 then
|
||||
dTol = 1.01
|
||||
elseif dArea < CoeffVM * 1.2e6 then
|
||||
dTol = 1.51
|
||||
elseif dArea < CoeffVM * 2.5e6 then
|
||||
dTol = 1.97
|
||||
elseif dArea < CoeffVM * 5.0e6 then
|
||||
dTol = 2.81
|
||||
elseif dArea < CoeffVM * 10.0e6 then
|
||||
dTol = 3.77
|
||||
local dTol = 4.71
|
||||
if EmtGetVMillStep then
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.71)
|
||||
else
|
||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||
if dArea < 0.075e6 then
|
||||
dTol = 0.71
|
||||
elseif dArea < 0.15e6 then
|
||||
dTol = 1.01
|
||||
elseif dArea < 0.3e6 then
|
||||
dTol = 1.51
|
||||
elseif dArea < 0.6e6 then
|
||||
dTol = 1.97
|
||||
elseif dArea < 1.2e6 then
|
||||
dTol = 2.81
|
||||
elseif dArea < 2.4e6 then
|
||||
dTol = 3.77
|
||||
end
|
||||
end
|
||||
-- creo lo Zmap
|
||||
local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB)
|
||||
@@ -448,13 +460,20 @@ function OnSimulToolSelect( dPosA)
|
||||
EMT.TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
EMT.TUSERNOTES = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES)
|
||||
-- recupero il gruppo
|
||||
local nSetHead = GetHeadSet( EMT.NEXTHEAD)
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
-- se fresa o lama su testa 1, reset assi rotanti
|
||||
if nSetHead == 1 then
|
||||
-- se ho la testa 3, la mando a parcheggio
|
||||
if EgtGetHeadId( 'H31') then
|
||||
if IsHeadExisting( 3) then
|
||||
EgtSetAxisPos( 'X3', ParkX3)
|
||||
end
|
||||
if EMT.HEAD == 'H12' or EMT.HEAD == 'H16' then
|
||||
EgtSetAxisPos( 'Z1', MaxZ1Blade)
|
||||
elseif EMT.HEAD == 'H13' then
|
||||
EgtSetAxisPos( 'Z1', ParkCSawZ1)
|
||||
else
|
||||
EgtSetAxisPos( 'Z1', MaxZ1)
|
||||
end
|
||||
EgtResetAxisPos( 'C1')
|
||||
EgtResetAxisPos( 'B1')
|
||||
-- se testa 3 parcheggio la 1
|
||||
@@ -463,6 +482,8 @@ function OnSimulToolSelect( dPosA)
|
||||
end
|
||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||
if EMT.HEAD == 'H13' then
|
||||
-- se prima lavorazione con motosega, parto dalla sua posizione di parcheggio
|
||||
EgtSetAxisPos( 'X1', ParkCSawX1)
|
||||
-- valore dell'asse virtuale
|
||||
dPosA = dPosA or GetNextChainSawingVirtualAxis( EMT.MCHID)
|
||||
-- imposto il valore di A
|
||||
@@ -474,14 +495,29 @@ function OnSimulToolSelect( dPosA)
|
||||
-- Imposto visualizzazione
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD) or GDB_ID.NULL, GDB_MD.STD)
|
||||
end
|
||||
-- se aggregato foratura multipla, imposto subito angolo scelto per asse virtuale A
|
||||
if EMT.HEAD == 'H14' then
|
||||
-- valore dell'asse virtuale
|
||||
dPosA = dPosA or GetNextMultiDrillVirtualAxis( EMT.MCHID)
|
||||
-- imposto il valore di A
|
||||
EgtSetAxisPos( 'A1', dPosA)
|
||||
-- imposto home dell'asse C1 (A1=0 -> T121, A1=90 -> T124)
|
||||
local MyParkCSawC1 = GetMultiDrillCHomeFromVirtualAxis( dPosA, EMT.TTOTLEN)
|
||||
EmtModifyAxisHome( 'C1', MyParkCSawC1)
|
||||
EgtSetAxisPos( 'C1', MyParkCSawC1)
|
||||
-- Imposto visualizzazione
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD) or GDB_ID.NULL, GDB_MD.STD)
|
||||
end
|
||||
-- se lama su aggregato da sotto, imposto subito angolo scelto per asse virtuale A
|
||||
if EMT.HEAD == 'H22' then
|
||||
-- se c'era un altro utensile, imposto subito asse virtuale
|
||||
if EMT.PREVHEAD_H2 ~= 'H22' then
|
||||
dPosA = dPosA or GetNextSawingVirtualAxis( EMT.MCHID)
|
||||
end
|
||||
if dPosA then
|
||||
-- valore dell'asse virtuale
|
||||
dPosA = dPosA or GetNextSawingVirtualAxis( EMT.MCHID)
|
||||
-- imposto il valore di A
|
||||
EgtSetAxisPos( 'A2', dPosA)
|
||||
-- imposto home dell'asse C1 (A2=0 -> T101, A2=90 -> T104)
|
||||
-- imposto home dell'asse C1 (A2=0 -> T201, A2=90 -> T204)
|
||||
local MyParkSawC2 = GetSawCHomeFromVirtualAxis( dPosA)
|
||||
EmtModifyAxisHome( 'C2', MyParkSawC2)
|
||||
EgtSetAxisPos( 'C2', MyParkSawC2)
|
||||
@@ -500,8 +536,10 @@ function OnSimulToolSelect( dPosA)
|
||||
EMT.A2n = 'Y2'
|
||||
EMT.A3n = 'V1'
|
||||
EMT.A4n = 'V2'
|
||||
-- se attivo Vmill
|
||||
EmtSetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL)
|
||||
-- se utensile non flottante, abilito per Vmill
|
||||
if not EMT.TFLOAT then
|
||||
EmtSetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL)
|
||||
end
|
||||
-- se attivo Collision Check
|
||||
EMT.SAFEDIST = COLL_SAFE_DIST
|
||||
if EMT.COLLOBJ then
|
||||
@@ -512,24 +550,23 @@ function OnSimulToolSelect( dPosA)
|
||||
EmtAddCollisionObjEx( i, Coll.Fr, Coll.Ty, Coll.Mv, Coll.P1, Coll.P2, Coll.P3)
|
||||
end
|
||||
end
|
||||
|
||||
-- se ho preso la lama, vado nella sua home. Se dPosA non è settato, significa che è selezione chiamata da CAM5 direttamente
|
||||
if EMT.HEAD == 'H22' and dPosA then
|
||||
SimulMoveAxes( 'Z2', MinZ2, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B2', ParkB2, MCH_SIM_STEP.COLLROT, 'C2', ParkC2, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSimulToolDeselect( dPrevA)
|
||||
-- se prossimo utensile non cambia e non è sega a catena o lama su rinvio da sotto, esco
|
||||
if ( EMT.NEXTTOOL == EMT.PREVTOOL_H1 or EMT.NEXTTOOL == EMT.PREVTOOL_H2) and EMT.NEXTHEAD ~= 'H13' and ( EMT.NEXTHEAD ~= 'H22' or not dPrevA) then return end
|
||||
if ( EMT.NEXTTOOL == EMT.PREVTOOL_H1 or EMT.NEXTTOOL == EMT.PREVTOOL_H2) and ( EMT.NEXTHEAD ~= 'H13' or EMT.NEXTHEAD ~= 'H14') and ( EMT.NEXTHEAD ~= 'H22' or not dPrevA) then return end
|
||||
-- deposito utensile
|
||||
EgtOutText( 'Tool change in progress...')
|
||||
-- recupero il gruppo
|
||||
local nSetHead = GetHeadSet( EMT.NEXTHEAD)
|
||||
-- recupero il gruppo attuale e il successivo
|
||||
local nNextSetHead = GetHeadSet( EMT.NEXTHEAD)
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
-- se devo deselezionare testa 3, la mando a parcheggio
|
||||
if nSetHead == 3 then
|
||||
SimulMoveAxis( 'X3', ParkX3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- per testa gruppo 2
|
||||
if nSetHead == 2 and EMT.PREVTCPOS_H2 then
|
||||
if nNextSetHead == 2 then
|
||||
-- deposito lama su aggregato testa sotto
|
||||
if EMT.PREVHEAD_H2 == 'H22' then
|
||||
-- simulo movimento
|
||||
@@ -546,24 +583,24 @@ function OnSimulToolDeselect( dPrevA)
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H2, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
EgtSetStatus( EgtGetHeadId( EMT.PREVHEAD_H2 or '') or GDB_ID.NULL, GDB_ST.OFF)
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H2 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
-- se testa gruppo 1
|
||||
elseif nSetHead == 1 and EMT.PREVTCPOS_H1 then
|
||||
elseif nNextSetHead == 1 and EMT.PREVTCPOS_H1 then
|
||||
-- deposito utensile fresa
|
||||
if EMT.PREVHEAD_H1 == 'H11' then
|
||||
-- simulo movimento
|
||||
local nPrevTc = GetTcForTopHeadTool( EMT.PREVTCPOS_H1)
|
||||
if EMT.PREVTTOTLEN_H1 < LongTool then
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = EgtIf( nPrevTc ~= 2, ParkX1, ParkTc2X1)
|
||||
local dPosX = EgtIf( nPrevTc ~= 2, ParkTc1X1, ParkTc2X1)
|
||||
SimulMoveAxis( 'X1', dPosX, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
if nPrevTc ~= 2 then
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkLongTc1C1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = ParkX1
|
||||
SimulMoveAxes( 'B1', ParkLongB1, MCH_SIM_STEP.RAPROT, 'C1', ParkLongTc1C1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = ParkTc1X1
|
||||
SimulMoveAxis( 'X1', dPosX, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkLongTc2C1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxes( 'B1', ParkLongB1, MCH_SIM_STEP.RAPROT, 'C1', ParkLongTc2C1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = ParkTc2X1
|
||||
SimulMoveAxis( 'X1', dPosX, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
@@ -572,7 +609,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
elseif EMT.PREVHEAD_H1 == 'H12' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'X1', ParkTc1X1, MCH_SIM_STEP.RAPID)
|
||||
-- deposito utensile sega a catena
|
||||
elseif EMT.PREVHEAD_H1 == 'H13' then
|
||||
-- simulo movimento
|
||||
@@ -582,12 +619,23 @@ function OnSimulToolDeselect( dPrevA)
|
||||
end
|
||||
SimulMoveAxes( 'B1', ParkCSawB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkCSawX1, MCH_SIM_STEP.RAPID)
|
||||
-- deposito utensile aggregato foratore multiplo
|
||||
elseif EMT.PREVHEAD_H1 == 'H14' then
|
||||
-- simulo movimento
|
||||
local ParkC1 = EgtGetAxisHomePos( 'C1')
|
||||
if dPrevA then
|
||||
ParkC1 = GetMultiDrillCHomeFromVirtualAxis( dPrevA)
|
||||
end
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkMultiDrillB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkMultiDrillX1, MCH_SIM_STEP.RAPID)
|
||||
-- deposito utensile seconda lama
|
||||
elseif EMT.PREVHEAD_H1 == 'H16' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkTc2X1, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
|
||||
-- breve pausa
|
||||
EgtPause( 100)
|
||||
-- visualizzo utensile su TcPos
|
||||
@@ -595,37 +643,54 @@ function OnSimulToolDeselect( dPrevA)
|
||||
-- nascondo l'utensile sulla testa
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
end
|
||||
-- se passo da testa 1 a 3 o viceversa
|
||||
-- se passo da testa 1 a 3 scarico aggregato
|
||||
if nNextSetHead == 3 then
|
||||
-- deposito eventuale sega a catena
|
||||
if EMT.PREVHEAD_H1 == 'H13' then
|
||||
-- deposito utensile prelevato da posizioni speciali
|
||||
if EMT.TCPOS == 'T101' or EMT.TCPOS == 'T111' or EMT.TCPOS == 'T121' then
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
|
||||
local sTool, sTcPos, sHead
|
||||
local vTools = EgtGetToolsInCurrSetupPos( DefTcPos1)
|
||||
if vTools and vTools[1] then
|
||||
sTool = vTools[1]
|
||||
sTcPos = DefTcPos1
|
||||
sHead = GetAdjHeadFromTcPos( 1, sTcPos)
|
||||
-- carico l'utensile
|
||||
EgtLoadTool( sHead, 1, sTool)
|
||||
ShowToolInTcPos( DefTcPos1, false)
|
||||
end
|
||||
EMT.PREVTOOL_H1 = sTool
|
||||
EMT.PREVHEAD_H1 = sHead
|
||||
EMT.PREVTCPOS_H1 = DefTcPos1
|
||||
end
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
elseif nNextSetHead == 1 then
|
||||
SimulMoveAxis( 'X3', ParkX3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- movimento per prendere nuovo utensile
|
||||
-- prendo utensile fresa
|
||||
if EMT.NEXTHEAD == 'H11' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
local dPosX = EgtIf( GetTcForTopHeadTool( EMT.NEXTTCPOS) ~= 2, ParkX1, ParkTc2X1)
|
||||
local dPosX = EgtIf( GetTcForTopHeadTool( EMT.NEXTTCPOS) ~= 2, ParkTc1X1, ParkTc2X1)
|
||||
SimulMoveAxis( 'X1', dPosX, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
|
||||
-- prendo utensile lama
|
||||
elseif EMT.NEXTHEAD == 'H12' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'X1', ParkTc1X1, MCH_SIM_STEP.RAPID)
|
||||
-- prendo utensile sega a catena
|
||||
elseif EMT.NEXTHEAD == 'H13' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkCSawB1, MCH_SIM_STEP.RAPROT, 'C1', EgtGetAxisHomePos( 'C1'), MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxes( 'X1', ParkCSawX1, MCH_SIM_STEP.RAPID, 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
||||
-- prendo aggregato multi drill
|
||||
elseif EMT.NEXTHEAD == 'H14' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkMultiDrillB1, MCH_SIM_STEP.RAPROT, 'C1', EgtGetAxisHomePos( 'C1'), MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxes( 'X1', ParkMultiDrillX1, MCH_SIM_STEP.RAPID, 'Z1', ParkMultiDrillZ1, MCH_SIM_STEP.RAPID)
|
||||
-- prendo utensile seconda lama
|
||||
elseif EMT.NEXTHEAD == 'H16' then
|
||||
-- simulo movimento
|
||||
@@ -649,8 +714,22 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSimulMachiningStart()
|
||||
-- se lavorazione attuale e precedente con sega a catena con angolo A diverso, devo scaricare e ricaricare
|
||||
if EMT.HEAD == 'H13' and EMT.HEAD == EMT.PREVHEAD_H1 then
|
||||
-- se lavorazione è con gruppo a forare, abilito le altre punte alla lavorazione del VMILL
|
||||
if EMT.HEAD == 'H14' then
|
||||
local OtherTools = EgtGetToolsInCurrSetupPos( 'T121')
|
||||
if OtherTools and #OtherTools > 1 then
|
||||
for i = 1, #OtherTools do
|
||||
if OtherTools[i] ~= '' and OtherTools[i] ~= EMT.TOOL then
|
||||
EmtAddToolForVmill( OtherTools[i], 'H14', i, EMT.VMILL)
|
||||
-- dichiaro utensile per verifica collisioni
|
||||
local nInd = 1011
|
||||
AddToolToCollisionObj( OtherTools[i], 'H14', i, nInd, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se lavorazione attuale e precedente con sega a catena o aggregato foratore multiplo e con angolo A diverso, devo scaricare e ricaricare
|
||||
if ( EMT.HEAD == 'H13' or EMT.HEAD == 'H14') and EMT.HEAD == EMT.PREVHEAD_H1 then
|
||||
local dPrevA = EgtGetAxisPos( 'A1')
|
||||
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||
local dPosA = tonumber( sVal:sub( 4))
|
||||
@@ -660,16 +739,23 @@ function OnSimulMachiningStart()
|
||||
OnSimulToolSelect( dPosA)
|
||||
end
|
||||
end
|
||||
-- se lavorazione attuale e precedente con sega a catena con angolo A diverso, devo scaricare e ricaricare
|
||||
-- se lavorazione attuale e precedente con aggregato lama da sotto con angolo A diverso, devo scaricare e ricaricare
|
||||
if EMT.HEAD == 'H22' and EMT.HEAD == EMT.PREVHEAD_H2 then
|
||||
local dPrevA = EgtGetAxisPos( 'A2')
|
||||
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||
local dPosA = tonumber( sVal:sub( 4)) or 0
|
||||
if abs( dPosA - dPrevA) > 1 then
|
||||
ExecParkRoller( nil, nil, nil, nil, false, bAgg)
|
||||
-- setto i valori per la funzione ToolDesel
|
||||
EMT.NEXTHEAD = EMT.HEAD
|
||||
EMT.NEXTTOOL = EMT.TOOL
|
||||
EMT.NEXTEXIT = EMT.EXIT
|
||||
OnSimulToolDeselect( dPrevA)
|
||||
EgtSetStatus( EgtGetHeadId( EMT.HEAD), GDB_ST.ON)
|
||||
OnSimulToolSelect( dPosA)
|
||||
-- aggiorno dati utensile su testa
|
||||
EMT.TCPOSREAL = 'T' .. AdjustTcPos( false, EMT.TCPOS, dPosA)
|
||||
EMT.PREVTCPOSREAL_H2 = EMT.TCPOSREAL
|
||||
end
|
||||
end
|
||||
-- recupero alcuni dati della lavorazione
|
||||
@@ -717,6 +803,35 @@ function OnSimulMachiningStart()
|
||||
EmtSetLastError( 1211, 'Missing or not active double tool of '..sOldTool)
|
||||
end
|
||||
EgtTdbSetCurrTool( sOldTool)
|
||||
else
|
||||
-- recupero il gruppo
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
if nSetHead ~= 1 and ( EMT.PREVTOOL_H1 and EMT.PREVHEAD_H1) then
|
||||
local nPrevExit_H1 = 1
|
||||
local nInd_H1 = 1001
|
||||
AddToolToCollisionObj( EMT.PREVTOOL_H1, EMT.PREVHEAD_H1, nPrevExit_H1, nInd_H1, true)
|
||||
AddToolHolderToCollisionObj( EMT.PREVTOOL_H1, EMT.PREVHEAD_H1, nPrevExit_H1, nInd_H1 + 1)
|
||||
end
|
||||
if nSetHead ~= 2 and ( EMT.PREVTOOL_H2 and EMT.PREVHEAD_H2) then
|
||||
local nPrevExit_H2 = 1
|
||||
local nInd_H2 = 1011
|
||||
AddToolToCollisionObj( EMT.PREVTOOL_H2, EMT.PREVHEAD_H2, nPrevExit_H2, nInd_H2, true)
|
||||
AddToolHolderToCollisionObj( EMT.PREVTOOL_H2, EMT.PREVHEAD_H2, nPrevExit_H2, nInd_H2 + 1)
|
||||
end
|
||||
if nSetHead ~= 3 and IsHeadExisting( 3) then
|
||||
local nPrevExit_H3 = 1
|
||||
local nInd_H3 = 1001
|
||||
local sHeadName
|
||||
if EgtGetHeadId( 'H39') then
|
||||
sHeadName = 'H39'
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
sHeadName = 'H38'
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
AddToolToCollisionObj( nil, sHeadName, nPrevExit_H3, 1001)
|
||||
AddToolHolderToCollisionObj( nil, sHeadName, nPrevExit_H3, 1002)
|
||||
end
|
||||
end
|
||||
-- se precedente in doppio ma ora solo testa 1 e non in sicurezza
|
||||
if EMT.DOU_TO_ZMAX then
|
||||
@@ -759,18 +874,20 @@ function OnSimulMachiningEnd()
|
||||
EMT.PREVHEAD_H1 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
||||
EMT.PREVTTOTLEN_H1 = EMT.TTOTLEN
|
||||
EMT.PREVTCPOSREAL_H1 = EMT.TCPOSREAL
|
||||
-- per gruppo testa 2
|
||||
elseif nSetHead == 2 then
|
||||
EMT.PREVTOOL_H2 = EMT.TOOL
|
||||
EMT.PREVHEAD_H2 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
||||
EMT.PREVTTOTLEN_H2 = EMT.TTOTLEN
|
||||
-- per gruppo testa 3 (resetto dati testa 1)
|
||||
EMT.PREVTCPOSREAL_H2 = EMT.TCPOSREAL
|
||||
-- per gruppo testa 3
|
||||
else
|
||||
EMT.PREVTOOL_H3 = nil
|
||||
EMT.PREVHEAD_H3 = nil
|
||||
EMT.PREVTCPOS_H3 = nil
|
||||
EMT.PREVTTOTLEN_H3 = nil
|
||||
EMT.PREVTOOL_H3 = EMT.TOOL
|
||||
EMT.PREVHEAD_H3 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H3 = EMT.TCPOS
|
||||
EMT.PREVTTOTLEN_H3 = EMT.TTOTLEN
|
||||
end
|
||||
|
||||
end
|
||||
@@ -907,6 +1024,7 @@ function OnSimulMoveStart()
|
||||
local C1Home = EgtGetAxisHomePos( 'C1')
|
||||
local Z1Pos = EgtGetAxisPos( 'Z1')
|
||||
local Z1Home = EgtGetAxisHomePos( 'Z1')
|
||||
local MyMaxZ1 = EgtGetAxisMax( 'Z1')
|
||||
-- se fresa o lama
|
||||
if EMT.HEAD ~= 'H13' then
|
||||
-- se movimento iniziale da Zmax con lama o fresa
|
||||
@@ -915,7 +1033,7 @@ function OnSimulMoveStart()
|
||||
-- in caso di rotazione della lama lontano dalla posizione di home degli assi rotanti
|
||||
if ( EMT.HEAD == 'H12' or EMT.HEAD == 'H16') and ( abs( C1Pos - EMT.R1) > 1 or abs( B1Pos - EMT.R2) > 1) and ( abs( C1Home - EMT.R1) > 30.1 or abs( B1Home - EMT.R2) > 30.1) then
|
||||
SimulMoveAxis( 'X1', EgtIf( bXSpec, DeltaTabY, EMT.L2), MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxes( 'Z1', MyMaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
@@ -925,10 +1043,21 @@ function OnSimulMoveStart()
|
||||
if WriteAllCoordsOnFirstM101 then
|
||||
SimulMoveAxis( 'X1', EgtIf( bXSpec, DeltaTabY, EMT.L2), MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
-- se ero in posizione speciale, prima ruoto poi scendo
|
||||
if bXSpec then
|
||||
local dZPos = max( Z1Home, EMT.L3)
|
||||
SimulMoveAxis( 'Z1', dZPos, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT, 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
if abs( dZPos - EMT.L3) > 1 then
|
||||
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
else
|
||||
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- altrimenti sega a catena
|
||||
@@ -953,30 +1082,87 @@ function OnSimulMoveStart()
|
||||
local C2Home = EgtGetAxisHomePos( 'C2')
|
||||
local Z2Home = EgtGetAxisHomePos( 'Z2')
|
||||
local X2Home = EgtGetAxisHomePos( 'X2')
|
||||
if EMT.TOOL ~= EMT.PREVTOOL_H2 then
|
||||
local X2Pos = EgtGetAxisPos( 'X2')
|
||||
local B2Pos = EgtGetAxisPos( 'B2')
|
||||
local C2Pos = EgtGetAxisPos( 'C2')
|
||||
-- calcolo posizione reale
|
||||
EMT.TCPOSREAL = 'T' .. AdjustTcPos( false, EMT.TCPOS, EMT.R3)
|
||||
-- se utensile cambiato (controllo il reale perchè per aggregato dipende come è stato caricato)
|
||||
if EMT.PREVTCPOSREAL_H2 ~= EMT.TCPOSREAL then
|
||||
if EMT.ZMAX then
|
||||
-- se bisogna scrivere tutti gli assi
|
||||
if WriteAllCoordsOnFirstM101 then
|
||||
SimulMoveAxes( 'X2', MinX2, MCH_SIM_STEP.RAPID, 'B2', B2Home, MCH_SIM_STEP.COLLROT, 'C2', C2Home, MCH_SIM_STEP.COLLROT)
|
||||
if EMT.HEAD == 'H22' then
|
||||
SimulMoveAxes( 'X2', ParkSawX2, MCH_SIM_STEP.RAPID, 'B2', 0, MCH_SIM_STEP.COLLROT, 'C2', C2Home, MCH_SIM_STEP.COLLROT)
|
||||
X2Pos = ParkSawX2
|
||||
else
|
||||
SimulMoveAxes( 'X2', SafeX2, MCH_SIM_STEP.RAPID, 'B2', B2Home, MCH_SIM_STEP.COLLROT, 'C2', C2Home, MCH_SIM_STEP.COLLROT)
|
||||
X2Pos = SafeX2
|
||||
end
|
||||
else
|
||||
if EMT.HEAD == 'H22' then
|
||||
SimulMoveAxis( 'X2', ParkSawX2, MCH_SIM_STEP.RAPID)
|
||||
X2Pos = ParkSawX2
|
||||
else
|
||||
SimulMoveAxis( 'X2', SafeX2, MCH_SIM_STEP.RAPID)
|
||||
X2Pos = SafeX2
|
||||
end
|
||||
end
|
||||
SimulMoveAxis( 'Z2', Z2Home, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'X2', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
if EMT.HEAD == 'H22' then
|
||||
SimulMoveAxis( 'X2', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
-- Porto la X alla giusta quota
|
||||
if X2Pos > SafeX2RotAxis and ( B2Pos ~= EMT.R2 or C2Pos ~= EMT.R1) then
|
||||
SimulMoveAxis( 'X2', SafeX2RotAxis, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
else
|
||||
if EMT.HEAD == 'H22' then
|
||||
SimulMoveAxis( 'X2', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
-- solo se è macchina a 3 teste con gruppo truciolatore 4 assi, devo andare prima in Z0
|
||||
if EgtGetHeadId( 'H39') then
|
||||
SimulMoveAxis( 'Z2', Z2Home, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- Porto la X alla giusta quota
|
||||
if EMT.ZMAX and X2Pos > SafeX2RotAxis and ( B2Pos ~= EMT.R2 or C2Pos ~= EMT.R1) then
|
||||
SimulMoveAxis( 'X2', SafeX2RotAxis, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
if EMT.HEAD == 'H22' then
|
||||
SimulMoveAxes( 'B2', EMT.R2, MCH_SIM_STEP.COLLROT, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
-- se ero a ZMAX, mi sposto in posizione a Z home. Ultimo movimento muove in Z
|
||||
if EMT.ZMAX then
|
||||
SimulMoveAxes( 'X2', EMT.L2, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT, 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
-- altrimenti testa 3
|
||||
else
|
||||
; -- non devo fare alcunchè di speciale
|
||||
else
|
||||
-- testa 4 assi dedicata truciolatore
|
||||
if EgtGetHeadId( 'H39') then
|
||||
if EMT.ZMAX then
|
||||
local MaxZ3 = EgtGetAxisMax( 'Z3')
|
||||
SimulMoveAxes( 'X3', EMT.L2, MCH_SIM_STEP.RAPID, 'Z3', MaxZ3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
SimulMoveAxis( 'Z3', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', EMT.R2, MCH_SIM_STEP.COLLROT, 'C3', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
-- testa 5 assi dedicata lama
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
if EMT.ZMAX then
|
||||
local B3Home = EgtGetAxisHomePos( 'B3')
|
||||
local C3Home = EgtGetAxisHomePos( 'C3')
|
||||
SimulMoveAxis( 'X3', SafeX3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
-- se non sono esattamente in home, devo ruotare in zona sicura
|
||||
if abs( C3Home - EMT.R1) > 1 or abs( B3Home - EMT.R2) > 1 then
|
||||
EMT.L3 = min( EMT.L3, SafeZ3RotAxis)
|
||||
SimulMoveAxis( 'Z3', SafeZ3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', EMT.R2, MCH_SIM_STEP.COLLROT, 'C3', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||
if ( EMT.L3 - SafeZ3RotAxis) > 100 * GEO.EPS_SMALL then
|
||||
SimulMoveAxis( 'Z3', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
SimulMoveAxis( 'X3', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
-- si muovono tutti gli assi assieme
|
||||
-- altre configurazioni
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se lavorazione split, muovo per riaggancio del carro Y1
|
||||
@@ -1024,7 +1210,7 @@ function OnSimulMoveStart()
|
||||
EmtSetLastError( 1208, sErr)
|
||||
end
|
||||
-- se appena sopra inizio, sistemo subito la quota in Z
|
||||
if EMT.MOVE == 0 and EMT.FLAG == 1 then
|
||||
if EMT.MOVE == 0 then
|
||||
SimulMoveAxes( 'Z2', EMT.A6, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
@@ -1087,10 +1273,24 @@ function OnSimulMoveStart()
|
||||
end
|
||||
EMT.ZMAX = nil
|
||||
EMT.TO_ZMAX = nil
|
||||
|
||||
-- se aggregato flottante su inizio attacco va compresso
|
||||
if EMT.TFLOAT and not EMT.TFLOAT_CMP and EMT.MOVE == 1 and EgtGetName( EMT.MOVEID) == 'LI' then
|
||||
-- recupero lunghezza
|
||||
local dOffsL = - EgtGetMachiningParam( MCH_MP.OFFSL)
|
||||
-- imposto compressione della parte flottante
|
||||
SetFloatPos( EMT.HEAD, dOffsL)
|
||||
-- imposto dati utensile in posizione compressa
|
||||
EmtSetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL, 2, -dOffsL)
|
||||
-- dichiaro che è compresso (assegnando Id entità di movimento)
|
||||
EMT.TFLOAT_CMP = EMT.MOVEID
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSimulMoveEnd()
|
||||
-- gruppo della testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
-- rimozione eventuali sfridi
|
||||
if EMT.FLAG == 301 then
|
||||
ExecRemoveScraps()
|
||||
@@ -1135,16 +1335,47 @@ function OnSimulMoveEnd()
|
||||
if EMT.MOVE == 0 and EMT.FLAG == 3 then
|
||||
-- eventuale rimozione sfridi
|
||||
ExecRemoveScraps()
|
||||
-- ricavo prossimo utensile
|
||||
local sNextTool = GetNextTool( EMT.MCHID)
|
||||
-- vado in home se è ultimo movimento ed è ultima lavorazione
|
||||
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool and nHSet == 3) or ( nHSet == 1 and EMT.TTOTLEN > LongTool)
|
||||
-- eseguo
|
||||
ExecMoveZmax( EMT.MCHSPLIT)
|
||||
ExecMoveZmax( EMT.MCHSPLIT, bToXhome)
|
||||
EMT.TO_ZMAX = nil
|
||||
end
|
||||
|
||||
-- se utensile flottante e movimento di compressione
|
||||
if EMT.TFLOAT and EMT.MOVEID == EMT.TFLOAT_CMP then
|
||||
-- verifico ci sia stata collisione tra ghiera flottante (portautensile e pezzo)
|
||||
if not EMT.TFLOAT_TH_COMPR_COLL then
|
||||
local sErr = 'CUTID='..tostring( EMT.CUTID)..'; TASKID='..tostring( EMT.TASKID)..'; Mach='..EMT.MCHNAME..'; Floating Ring not compressed on approach'
|
||||
EmtSetLastError( 1222, sErr)
|
||||
EgtOutLog( 'Error : ' .. sErr, 1)
|
||||
else
|
||||
EgtOutLog( 'Floating Ring compressed on approach (MOVEID='..EgtNumToString( EMT.MOVEID)..')', 1)
|
||||
end
|
||||
EMT.TFLOAT_TH_COMPR_COLL = nil
|
||||
end
|
||||
-- se aggregato flottante su fine uscita va rilasciato
|
||||
if EMT.TFLOAT and EMT.TFLOAT_CMP and EMT.MOVE == 1 and EgtGetName( EMT.MOVEID) == 'LO' and EgtGetName( EgtGetNext( EMT.MOVEID) or GDB_ID.NULL) ~= 'LO' then
|
||||
-- reset compressione della parte flottante
|
||||
SetFloatPos( EMT.HEAD, 0)
|
||||
-- dichiaro che è rilasciato
|
||||
EMT.TFLOAT_CMP = nil
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSimulCollision()
|
||||
-- se prima collisione della lavorazione, la segnalo
|
||||
if EMT.MCHNAME ~= EMT.LAST_MCHNAME_COLLIDE then
|
||||
-- speciale per utensile flottante (suo holder contro il grezzo)
|
||||
if EMT.TFLOAT and EMT.TFLOAT_CMP and EMT.SIMCOBIND == 1002 and EMT.SIMVMID == EMT.VMILL[1] then
|
||||
if EMT.MOVEID == EMT.TFLOAT_CMP then
|
||||
EMT.TFLOAT_TH_COMPR_COLL = true
|
||||
end
|
||||
return
|
||||
end
|
||||
local Class = ''
|
||||
if EMT.SIMCOBIND == 1001 or EMT.SIMCOBIND == 1011 then
|
||||
Class = 'T_'..EMT.HEAD
|
||||
@@ -1246,7 +1477,7 @@ function ExecAuxCmd( sCmd, bPathStart)
|
||||
ExecMoveHome( Cmd[2] == '1', EgtIf( bPathStart, false, EMT.MCHSPLIT))
|
||||
elseif Cmd[1] == '11' then
|
||||
local bClose = Cmd[2] ~= '0'
|
||||
if bPathStart and EMT.MCHSPLIT and not EMT.FALL and GetPY2Light() then bClose = false end
|
||||
if bPathStart and EMT.MCHSPLIT and not ( EMT.FALL or EMT.TO_FALL) and GetPY2Light() then bClose = false end
|
||||
ExecMovePY1( bClose)
|
||||
elseif Cmd[1] == '12' then
|
||||
ExecMovePY2( Cmd[2] ~= '0')
|
||||
@@ -1301,11 +1532,13 @@ end
|
||||
function ExecStartHome()
|
||||
-- Testa 1
|
||||
EgtResetAxisPos( 'X1')
|
||||
EgtResetAxisPos( 'Z1')
|
||||
EgtSetAxisPos( 'Z1', MaxZ1)
|
||||
EgtResetAxisPos( 'C1')
|
||||
EgtResetAxisPos( 'B1')
|
||||
-- Testa 2
|
||||
EgtResetAxisPos( 'X2')
|
||||
local _, sHead, _, _, _, _ = FindFirstToolOnHeadSet( 2)
|
||||
local PosXStart = EgtIf( sHead == 'H22', SafeX2, ParkX2)
|
||||
EgtSetAxisPos( 'X2', PosXStart)
|
||||
EgtSetAxisPos( 'Z2', MinZ2)
|
||||
EgtResetAxisPos( 'C2')
|
||||
EgtResetAxisPos( 'B2')
|
||||
@@ -1314,15 +1547,20 @@ end
|
||||
---------------------------------------------------------------------
|
||||
function ExecMoveHome( bNearV, bMchSplit)
|
||||
-- risalita a Zmax
|
||||
ExecMoveZmax( bMchSplit)
|
||||
ExecMoveZmax( bMchSplit)
|
||||
EMT.TO_ZMAX = nil
|
||||
-- se testa sotto
|
||||
if GetHeadSet( EMT.HEAD) == 2 then
|
||||
if not SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID) then
|
||||
ExecMoveZmax( bMchSplit, true)
|
||||
-- se testa sotto e macchina a 3 teste
|
||||
if GetHeadSet( EMT.HEAD) == 2 and IsHeadExisting( 3) then
|
||||
if not SimulMoveAxis( 'X2', EgtIf( EMT.HEAD == 'H22', SafeX2, ParkX2), MCH_SIM_STEP.RAPID) then
|
||||
EgtOutLog( 'Error on MoveHome : X2')
|
||||
end
|
||||
-- se gruppo truciolatore a 4 assi
|
||||
if EgtGetHeadId( 'H39') then
|
||||
if not SimulMoveAxis( 'Z2', ParkInLavZ2, MCH_SIM_STEP.RAPID) then
|
||||
EgtOutLog( 'Error on MoveHome : Z2')
|
||||
end
|
||||
end
|
||||
end
|
||||
EMT.TO_ZMAX = nil
|
||||
-- se richiesto, avvicino i rulli
|
||||
if bNearV then
|
||||
ExecOpenRoller( 1)
|
||||
@@ -1335,19 +1573,19 @@ function ExecMoveHome( bNearV, bMchSplit)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function ExecMoveZmax( bMchSplit)
|
||||
function ExecMoveZmax( bMchSplit, bGoToHome)
|
||||
-- set della testa
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
-- posizioni correnti degli assi testa
|
||||
local CurrX = EgtGetAxisPos( EgtIf( nSetHead == 1, 'X1', 'X2'))
|
||||
local CurrZ = EgtGetAxisPos( EgtIf( nSetHead == 1, 'Z1', 'Z2'))
|
||||
local CurrC = EgtGetAxisPos( EgtIf( nSetHead == 1, 'C1', 'C2'))
|
||||
local CurrB = EgtGetAxisPos( EgtIf( nSetHead == 1, 'B1', 'B2'))
|
||||
local CurrX = EgtGetAxisPos( 'X'..nSetHead)
|
||||
local CurrZ = EgtGetAxisPos( 'Z'..nSetHead)
|
||||
local CurrC = EgtGetAxisPos( 'C'..nSetHead)
|
||||
local CurrB = EgtGetAxisPos( 'B'..nSetHead)
|
||||
-- posizioni home degli assi testa
|
||||
local HomeX = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'X1', 'X2'))
|
||||
local HomeZ = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'Z1', 'Z2'))
|
||||
local HomeC = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'C1', 'C2'))
|
||||
local HomeB = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'B1', 'B2'))
|
||||
local HomeX = EgtGetAxisHomePos( 'X'..nSetHead)
|
||||
local HomeZ = EgtGetAxisHomePos( 'Z'..nSetHead)
|
||||
local HomeC = EgtGetAxisHomePos( 'C'..nSetHead)
|
||||
local HomeB = EgtGetAxisHomePos( 'B'..nSetHead)
|
||||
-- verifico se necessario ruotare la testa
|
||||
local bRot = ( abs( HomeC - CurrC) > 1 or abs( HomeB - CurrB) > 1)
|
||||
-- se necessario ruotare la testa, allargo i carrelli
|
||||
@@ -1359,13 +1597,14 @@ function ExecMoveZmax( bMchSplit)
|
||||
end
|
||||
-- se testa sopra
|
||||
if nSetHead == 1 then
|
||||
local MyMaxZ1 = EgtGetAxisMax( 'Z1')
|
||||
-- se fresa o lama
|
||||
if EMT.HEAD ~= 'H13' then
|
||||
if abs( HomeC - CurrC) > 0.1 or abs( HomeB - CurrB) > 0.1 then
|
||||
local dZref = HomeZ + GetZExtra( EMT.HEAD, CurrB)
|
||||
SimulMoveAxes( 'Z1', EgtIf( dZref > CurrZ, dZref, CurrZ), MCH_SIM_STEP.RAPID, 'B1', EgtClamp( CurrB, -90, 90), MCH_SIM_STEP.COLLROT)
|
||||
if ( EMT.HEAD == 'H12' or EMT.HEAD == 'H16') and ( abs( HomeC - CurrC) > 30.1 or abs( HomeB - CurrB) > 30.1) then
|
||||
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxes( 'Z1', MyMaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
if ( not BD.RIGHT_LOAD and EMT.L2 > DeltaTabY) or ( BD.RIGHT_LOAD and EMT.L2 < DeltaTabY) then
|
||||
SimulMoveAxis( 'X1', DeltaTabY, MCH_SIM_STEP.RAPID)
|
||||
@@ -1373,7 +1612,10 @@ function ExecMoveZmax( bMchSplit)
|
||||
SimulMoveAxis( 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'Z1', MyMaxZ1, MCH_SIM_STEP.RAPID)
|
||||
if bGoToHome then
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- altrimenti sega a catena
|
||||
else
|
||||
-- salgo in Z sicurezza raddrizzando la B
|
||||
@@ -1398,11 +1640,35 @@ function ExecMoveZmax( bMchSplit)
|
||||
elseif nSetHead == 2 then
|
||||
SimulMoveAxis( 'Z2', ParkZ2, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B2', ParkB2, MCH_SIM_STEP.COLLROT, 'C2', ParkC2, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||
if EMT.HEAD == 'H22' then
|
||||
SimulMoveAxis( 'X2', SafeX2, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- solo se è macchina a 3 teste con gruppo truciolatore 4 assi, devo stare più alto
|
||||
if EgtGetHeadId( 'H39') then
|
||||
SimulMoveAxis( 'Z2', ParkInLavZ2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- altrimenti testa 3
|
||||
else
|
||||
SimulMoveAxes( 'Z3', MaxZ3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', ParkB3, MCH_SIM_STEP.COLLROT)
|
||||
if EgtGetHeadId( 'H39') then
|
||||
SimulMoveAxes( 'Z3', MaxZ3, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'B3', ParkB3, MCH_SIM_STEP.COLLROT)
|
||||
elseif EgtGetHeadId( 'H38') then
|
||||
local MyMaxZ3 = EgtGetAxisMax( 'Z3')
|
||||
-- se non sono esattamente in home, devo ruotare in zona sicura
|
||||
if abs( HomeC - CurrC) > 1 or abs( HomeB - CurrB) > 1 then
|
||||
SimulMoveAxis( 'X3', SafeX3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxis( 'Z3', SafeZ3RotAxis, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'C3', HomeC, MCH_SIM_STEP.COLLROT, 'B3', HomeB, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
SimulMoveAxis( 'Z3', MyMaxZ3, MCH_SIM_STEP.RAPID)
|
||||
if bGoToHome then
|
||||
SimulMoveAxis( 'X3', ParkX3, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
else
|
||||
EmtSetLastError( 1212, "HEAD not managed")
|
||||
end
|
||||
end
|
||||
EMT.ZMAX = true
|
||||
end
|
||||
@@ -1427,10 +1693,14 @@ function ExecUnloading()
|
||||
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
||||
EgtSetLevel( vMillId, GDB_LV.USER)
|
||||
-- aggiungo gli spigoli
|
||||
local nFirstId, nCount = EgtVolZmapGetEdges( vMillId, nLayId)
|
||||
if nFirstId then
|
||||
for nId = nFirstId, nFirstId + nCount - 1 do
|
||||
EgtSetColor( nId, Color3d( 96, 96, 96))
|
||||
if EgtVolZmapSetShowEdges then
|
||||
EgtVolZmapSetShowEdges( vMillId, true)
|
||||
else
|
||||
local nFirstId, nCount = EgtVolZmapGetEdges( vMillId, nLayId)
|
||||
if nFirstId then
|
||||
for nId = nFirstId, nFirstId + nCount - 1 do
|
||||
EgtSetColor( nId, Color3d( 96, 96, 96))
|
||||
end
|
||||
end
|
||||
end
|
||||
-- rilascio Vmill
|
||||
@@ -1552,7 +1822,7 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
|
||||
local MoveV1 = ParkV1 - PosV1
|
||||
local DiffY1 = MyParkY1 - PosY1
|
||||
local MoveY1 = EgtIf( DiffY1 > 0.1, MoveV1, 0)
|
||||
local TryMoveY1 = ParkV1 - PosT - EgtIf( bSpliCut or EMT.FALL, EMT.LT, 0)
|
||||
local TryMoveY1 = min( ParkV1 - PosT - EgtIf( bSpliCut or EMT.FALL, EMT.LT, 0), MaxY1 - PosY1 - 10)
|
||||
if ( PosT > ParkV2 - ExtraParkV and PosT < ParkV1 and PosY1 + TryMoveY1 < MaxY1) then MoveY1 = max( MoveY1, TryMoveY1) end
|
||||
-- se appena eseguito taglio di separazione
|
||||
if bSpliCut then
|
||||
@@ -1582,7 +1852,7 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
|
||||
local MoveV2 = ParkV2 - PosV2
|
||||
local DiffY2 = MyParkY2 - PosY2
|
||||
local MoveY2 = EgtIf( DiffY2 < -0.1, MoveV2, 0)
|
||||
local TryMoveY2 = ParkV2 - PosT - EMT.LT
|
||||
local TryMoveY2 = max( ParkV2 - PosT - EMT.LT, MinY2 - PosY2 + 10)
|
||||
if ( PosT + EMT.LT < ParkV1 + ExtraParkV and PosT + EMT.LT > ParkV2 and PosY2 + TryMoveY2 > MinY2) then MoveY2 = min( MoveY2, TryMoveY2) end
|
||||
if not SimulMoveAxes( 'T', PosT + MoveY2, MCH_SIM_STEP.RAPID,
|
||||
'V1', ParkV1, MCH_SIM_STEP.RAPID,
|
||||
@@ -1830,11 +2100,20 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function ShowToolInTcPos( sTcPos, bShow)
|
||||
-- recupero il gruppo dell'utensile
|
||||
local TcExitId = EgtGetFirstNameInGroup( EgtGetTcPosId( sTcPos or '') or GDB_ID.NULL, 'T1')
|
||||
if not TcExitId then return end
|
||||
-- imposto lo stato di visualizzazione
|
||||
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
|
||||
-- recupero identificativo della posizione sul TC
|
||||
local TcPosId = EgtGetTcPosId( sTcPos or '')
|
||||
if not TcPosId then return end
|
||||
-- ciclo sulle possibili uscite
|
||||
for i = 1, 100 do
|
||||
-- recupero il gruppo dell'utensile
|
||||
local TcExitId = EgtGetFirstNameInGroup( TcPosId, 'T'..tostring( i))
|
||||
if not TcExitId then break end
|
||||
-- imposto lo stato di visualizzazione
|
||||
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
|
||||
end
|
||||
-- recupero eventuale gruppo ausiliario da visualizzare/nascondere
|
||||
local TcHSId = EgtGetFirstNameInGroup( TcPosId, sTcPos..'_HS')
|
||||
if TcHSId then EgtSetStatus( TcHSId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF)) end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1842,7 +2121,11 @@ function LoadFirstTool( nHSet, sTcPosDef)
|
||||
if nHSet ~= 1 and nHSet ~= 2 then return end
|
||||
EgtUnloadTool( EgtIf( nHSet == 1, 'H11', 'H21'), 1)
|
||||
if GetHeadSetFromTcPos( sTcPosDef) ~= nHSet then return end
|
||||
local sTool, sHead, sTcPos, sTTotLen, sBlockedAxis = FindFirstToolOnHeadSet( nHSet)
|
||||
local sTool, sHead, sTcPos, sTTotLen, sTotDiam, sBlockedAxis = FindFirstToolOnHeadSet( nHSet)
|
||||
-- se primo utensile motosega, non lo carico e visualizzo quello di default
|
||||
if sHead == 'H13' then
|
||||
sTool = nil
|
||||
end
|
||||
if not sTool then
|
||||
local vTools = EgtGetToolsInCurrSetupPos( sTcPosDef)
|
||||
if vTools and vTools[1] then
|
||||
@@ -1854,7 +2137,7 @@ function LoadFirstTool( nHSet, sTcPosDef)
|
||||
if sTool then
|
||||
-- imposto correttamente i dati di testa
|
||||
local OrigEMC = EMC
|
||||
EMC = { HEAD = sHead, TOOL = sTool, TCPOS = sTcPos, TOTLEN = sTTotLen, BLOCKEDAXIS = sBlockedAxis}
|
||||
EMC = { HEAD = sHead, TOOL = sTool, TCPOS = sTcPos, TOTLEN = sTTotLen, TOTDIAM = sTotDiam, BLOCKEDAXIS = sBlockedAxis}
|
||||
OnSetHead()
|
||||
EMC = OrigEMC
|
||||
if sBlockedAxis then
|
||||
@@ -1867,6 +2150,19 @@ function LoadFirstTool( nHSet, sTcPosDef)
|
||||
-- carico l'utensile
|
||||
EgtLoadTool( sHead, 1, sTool)
|
||||
ShowToolInTcPos( sTcPos, false)
|
||||
-- salvo utensili caricati
|
||||
if nHSet == 1 then
|
||||
EMT.PREVTOOL_H1 = sTool
|
||||
EMT.PREVHEAD_H1 = sHead
|
||||
EMT.PREVTCPOS_H1 = sTcPos
|
||||
EMT.PREVTTOTLEN_H1 = sTTotLen
|
||||
-- per gruppo testa 2
|
||||
elseif nHSet == 2 then
|
||||
EMT.PREVTOOL_H2 = sTool
|
||||
EMT.PREVHEAD_H2 = sHead
|
||||
EMT.PREVTCPOS_H2 = sTcPos
|
||||
EMT.PREVTTOTLEN_H2 = sTTotLen
|
||||
end
|
||||
end
|
||||
return sTool
|
||||
end
|
||||
@@ -2280,7 +2576,7 @@ function FindFirstToolOnHeadSet( nHSet)
|
||||
local CurrMachId = EgtGetCurrMachining()
|
||||
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||
local sTool, sHead, sTcPos, sTTotLen, sBlockedAxis
|
||||
local sTool, sHead, sTcPos, sTTotLen, sTotDiam, sBlockedAxis
|
||||
local OpId = EgtGetFirstActiveOperation()
|
||||
while OpId do
|
||||
local nType = EgtGetOperationType( OpId)
|
||||
@@ -2290,9 +2586,15 @@ function FindFirstToolOnHeadSet( nHSet)
|
||||
if EgtTdbSetCurrTool( sTest) then
|
||||
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
if GetHeadSet( sHead) == nHSet then
|
||||
sTool = sTest
|
||||
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||
-- aggregato lama non si può mai preselezionare e viene sempre scaricato, quindi non sarà mai già caricato
|
||||
if nHSet == 2 and sTcPos == 'T201' then
|
||||
sTcPos = nil
|
||||
break
|
||||
end
|
||||
sTool = sTest
|
||||
sTTotLen = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
sTotDiam = EgtTdbGetCurrToolParam( MCH_TP.TOTDIAM)
|
||||
sBlockedAxis = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||
break
|
||||
end
|
||||
@@ -2305,7 +2607,7 @@ function FindFirstToolOnHeadSet( nHSet)
|
||||
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||
EgtTdbSetCurrTool( CurrTool or '')
|
||||
-- restituisco risultato
|
||||
return sTool, sHead, sTcPos, sTTotLen, sBlockedAxis
|
||||
return sTool, sHead, sTcPos, sTTotLen, sTotDiam, sBlockedAxis
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -2350,6 +2652,33 @@ function GetNextChainSawingVirtualAxis( MchId)
|
||||
return dPosA
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetNextMultiDrillVirtualAxis( MchId)
|
||||
-- recupero la lavorazione successiva
|
||||
local NextMchId
|
||||
if MchId then
|
||||
NextMchId = EgtGetNextActiveOperation( MchId)
|
||||
else
|
||||
NextMchId = EgtGetFirstActiveOperation()
|
||||
end
|
||||
while NextMchId and EgtGetOperationType( NextMchId) == MCH_OY.DISP do
|
||||
NextMchId = EgtGetNextActiveOperation( NextMchId)
|
||||
end
|
||||
-- verifico sia un taglio con sega a catena
|
||||
if EgtGetOperationType( NextMchId) ~= MCH_OY.DRILLING then
|
||||
return nil
|
||||
end
|
||||
-- la imposto come lavorazione corrente
|
||||
EgtSetCurrMachining( NextMchId)
|
||||
-- recupero il valore dell'asse virtuale bloccato A
|
||||
local dPosA = GetCurrMultiDrillVirtualAxis()
|
||||
-- ripristino la lavorazione corrente
|
||||
if MchId then
|
||||
EgtSetCurrMachining( MchId)
|
||||
end
|
||||
return dPosA
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetCurrSawingVirtualAxis()
|
||||
-- recupero il valore dell'asse virtuale bloccato A
|
||||
@@ -2396,12 +2725,19 @@ function GetStartMachiningXaxis( nMchId)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function IsLastPath( nPathId)
|
||||
return not EgtGetNext( nPathId)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function RollerParkingNeeded( sHead, dAng1p, dAng2p, dAng1, dAng2)
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H16' then
|
||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||
elseif sHead == 'H21' or sHead == 'H22' then
|
||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||
elseif sHead == 'H38' then
|
||||
return ( abs( dAng1 - dAng1p) > 1 or abs( dAng2 - dAng2p) > 1)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- Special Operations macchina Essetre-PF1250 by Egalware s.r.l. 2024/01/22
|
||||
-- Special Operations macchina Essetre-PF1250 by Egalware s.r.l. 2024/04/09
|
||||
-- Intestazioni
|
||||
|
||||
require( 'EmtGenerator')
|
||||
@@ -54,6 +54,9 @@ function OnSpecialGetMaxZ()
|
||||
elseif nSetHead == 2 then
|
||||
EMC.R1p = ParkC2
|
||||
EMC.R2p = ParkB2
|
||||
elseif nSetHead == 3 then
|
||||
EMC.R1p = ParkC3
|
||||
EMC.R2p = ParkB3
|
||||
end
|
||||
end
|
||||
local vtT = Vector3d( EMC.TDIR)
|
||||
@@ -71,14 +74,16 @@ function OnSpecialGetMaxZ()
|
||||
elseif EMC.HEAD == 'H12' then
|
||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 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 = MaxZ1Blade - 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
|
||||
EMC.MAXZ = ParkZ1 + 200
|
||||
elseif vtTp:getZ() > 0.5 or vtT:getZ() > 0.5 then
|
||||
EMC.MAXZ = ParkZ1 + 100
|
||||
else
|
||||
EMC.MAXZ = ParkZ1 + 1
|
||||
end
|
||||
elseif bBSameSign and EMC.R1p > 29.9 and EMC.R1p < 180.1 and EMC.R1 > 29.9 and EMC.R1 < 180.1 and EMC.R2p > -10 and EMC.R2 > -10 then
|
||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
EMC.MAXZ = MaxZ1Blade - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
elseif bBSameSign and EMC.R1p > -0.1 and EMC.R1p < 180.1 and EMC.R1 > -0.1 and EMC.R1 < 180.1 and EMC.R2p > -10 and EMC.R2 > -10 then
|
||||
local vMZ = {{ Tz=0.85, Ez=440}, { Tz=0.5, Ez=200}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
|
||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
@@ -89,14 +94,16 @@ function OnSpecialGetMaxZ()
|
||||
elseif EMC.HEAD == 'H16' then
|
||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 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 = MaxZ1Blade - 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
|
||||
EMC.MAXZ = ParkZ1 + 200
|
||||
elseif vtTp:getZ() > 0.5 or vtT:getZ() > 0.5 then
|
||||
EMC.MAXZ = ParkZ1 + 100
|
||||
else
|
||||
EMC.MAXZ = ParkZ1 + 1
|
||||
end
|
||||
elseif bBSameSign and EMC.R1p > 29.9 and EMC.R1p < 180.1 and EMC.R1 > 29.9 and EMC.R1 < 180.1 and EMC.R2p > -10 and EMC.R2 > -10 then
|
||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
EMC.MAXZ = MaxZ1Blade - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
elseif bBSameSign and EMC.R1p > -0.1 and EMC.R1p < 180.1 and EMC.R1 > -0.1 and EMC.R1 < 180.1 and EMC.R2p > -10 and EMC.R2 > -10 then
|
||||
local vMZ = {{ Tz=0.85, Ez=440}, { Tz=0.5, Ez=200}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
|
||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
@@ -111,14 +118,16 @@ function OnSpecialGetMaxZ()
|
||||
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}}
|
||||
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
end
|
||||
elseif EMC.HEAD == 'H38' then
|
||||
EMC.MAXZ = SafeZ3RotAxis
|
||||
end
|
||||
end
|
||||
|
||||
---------------------- OnSpecialMoveZup -----------------------------
|
||||
function OnSpecialMoveZup()
|
||||
|
||||
|
||||
--EgtOutLog( 'OnSpecialMoveZup : ' .. EMC.HEAD .. '.' .. tostring( EMC.EXIT))
|
||||
|
||||
|
||||
-- Inizializzazioni
|
||||
EMC.ERR = 0
|
||||
EMC.MODIF = false
|
||||
@@ -135,7 +144,7 @@ function OnSpecialMoveZup()
|
||||
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' then
|
||||
;
|
||||
-- se lama
|
||||
else
|
||||
elseif EMC.HEAD == 'H12' or EMC.HEAD == 'H16' then
|
||||
-- riporto i valori tra -179 e + 180
|
||||
local dCheckAxR1 = EMC.R1
|
||||
if dCheckAxR1 < -180 then
|
||||
@@ -180,6 +189,12 @@ function OnSpecialMoveZup()
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif EMC.HEAD == 'H38' then
|
||||
EMC.L3 = SafeZ3RotAxis
|
||||
-- dichiaro modificato
|
||||
EMC.MODIF = true
|
||||
else
|
||||
; -- non si fa nulla
|
||||
end
|
||||
end
|
||||
|
||||
@@ -194,7 +209,7 @@ local SIC_V = 50 -- sicurezza da testa
|
||||
local MIN_ENG_V = 115 -- ingombro asse Z
|
||||
local MIN_ENG_RACK_V = 161 -- ingombro asse Z con cremagliera
|
||||
local MIN_ENG_XZ2_V = 180 -- ingombro assi XZ sotto
|
||||
local MIN_Z2_FOR_ENG_XZ2_V = 270 -- quota Z2 da cui considerare ingombro assi XZ sotto
|
||||
local MIN_Z2_FOR_ENG_XZ2_V = 250 -- quota Z2 da cui considerare ingombro assi XZ sotto
|
||||
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
||||
local MaxLenSmT = 1500 -- massima lunghezza pezzo scaricato con nastri verdi
|
||||
local DIST_Y1MAX_LOAD = 100 -- distanza carrello Y1 da massimo asse al carico
|
||||
@@ -574,7 +589,11 @@ function OnPostApplyMachining()
|
||||
|
||||
-- Verifico flag di separazione e fase di scarico
|
||||
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
local bPreSplit = ( false and sNotes:find( 'Presplit', 1, true) ~= nil)
|
||||
|
||||
-- bPreSplit sempre a falso per obbligare a pinzare il pezzo con 1 morsa anche se iniziato il taglio che dividerà grezzo e finito (in genere per sezioni grandi con 2 tagli di lama)
|
||||
-- Tra un taglio e l'altro infatti c'e' inversione del braccio e quindi un'apertura delle rulliere. Se pinzano entrambe le pinze, potrebbero esserci problemi di collisone rulli-morse
|
||||
local bPreSplit = false --( sNotes:find( 'Presplit', 1, true) ~= nil)
|
||||
|
||||
local bSplitting = ( sNotes:find( 'Split', 1, true) ~= nil)
|
||||
local bPreCut = ( sNotes:find( 'Precut', 1, true) ~= nil)
|
||||
local bCutting = ( sNotes:find( 'Cut', 1, true) ~= nil)
|
||||
@@ -655,6 +674,14 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
||||
-- Verifico se lavorazione pareti
|
||||
local bWall = ( EgtGetInfo( EgtGetCurrMachGroup() or GDB_ID.NULL, 'Wall', 'd') == 1)
|
||||
|
||||
-- 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
|
||||
SPLIT = IsEndPhase( EMC.PHASE)
|
||||
|
||||
@@ -741,7 +768,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
||||
local dPosT = LoadT
|
||||
local vCmd = SpecCalcLoad( dPosT, dDistFront, max( dDistBack, MinJoin, EMC.LB - ( MaxY1 - MinY1) + 6))
|
||||
EMC.LOAD = true
|
||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||
EMC.LOAD = nil
|
||||
if bSplitting and EMC.ERR == 18 then
|
||||
table.insert( vCmd, { 22, dRollBack, -dRollFront})
|
||||
@@ -754,7 +781,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
||||
|
||||
-- Se altrimenti non eseguito SPLIT, eseguo calcoli per carrelli
|
||||
elseif not SPLIT 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
|
||||
if SpecTestOnlyRemarkInCmds( vCmd) then
|
||||
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
|
||||
@@ -883,15 +910,19 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
||||
EgtSetAxisPos( 'A2', vAxMid[6])
|
||||
end
|
||||
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C2'), GDB_BB.ONLY_VISIBLE)
|
||||
else -- 'H31'
|
||||
else -- testa 3
|
||||
EgtSetAxisPos( 'C3', vAxMid[4])
|
||||
EgtSetAxisPos( 'B3', vAxMid[5])
|
||||
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C3'), GDB_BB.ONLY_VISIBLE)
|
||||
end
|
||||
|
||||
-- Forzo la distanza di sicurezza da utensile
|
||||
local nSecRollerDist = EgtGetValInNotes( EgtTdbGetCurrToolParam( MCH_TP.USERNOTES), 'SECDIST', 'i') or SIC_V
|
||||
|
||||
local dMinFrontEng = EgtIf( nSetHead ~= 2, MIN_ENG_RACK_V, EgtIf( vAxMax[3] < MIN_Z2_FOR_ENG_XZ2_V, MIN_ENG_V, MIN_ENG_XZ2_V))
|
||||
local dRollFront = max( b3Enc:getMax():getX(), dMinFrontEng) + SIC_V
|
||||
local dRollFront = max( b3Enc:getMax():getX(), dMinFrontEng) + nSecRollerDist
|
||||
local dMinBackEng = EgtIf( nSetHead ~= 2, MIN_ENG_V, EgtIf( vAxMax[3] < MIN_Z2_FOR_ENG_XZ2_V, MIN_ENG_V, MIN_ENG_XZ2_V))
|
||||
local dRollBack = max( -b3Enc:getMin():getX(), dMinBackEng) + SIC_V
|
||||
local dRollBack = max( -b3Enc:getMin():getX(), dMinBackEng) + nSecRollerDist
|
||||
EgtOutLog( ' RollFront = ' .. EgtNumToString( dRollFront, 1) .. ' RollBack = ' .. EgtNumToString( dRollBack, 1), 3)
|
||||
-- Calcolo della posizione della Punta Utensile rispetto allo Zero Macchina
|
||||
local ptTip
|
||||
@@ -987,7 +1018,11 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
|
||||
local dNewY1min = max( EMC.LB - dDistBack, MinOther + AggLoad + EMC.HCING + EMC.HOVM)
|
||||
local dNewY1max = min( ( MaxY1 - MinY1) - 5, EMC.LB - MinJoin)
|
||||
if dNewY1min > dNewY1max then return nil end
|
||||
local dNewY1Delta = EgtClamp( BD.CHAR_LOAD_DIST or 3000, 0.75 * dNewY1min + 0.25 * dNewY1max, 0.25 * dNewY1min + 0.75 * dNewY1max)
|
||||
-- minimo posizionamento pinza 1 per permettere scarico del restante
|
||||
local dMinLengthRestToUnload = abs( MinY1) + abs( MinV1) + abs( MaxV2) + abs( MaxY2) + MinJoin + AggLoad + EMC.LT + 10
|
||||
-- calcolo posizionamento con i coefficienti, ma verifico che sia tra il minimo e il massimo pinzabile
|
||||
local dNewY1DeltaMax = EgtClamp( 0.25 * dNewY1min + 0.75 * dNewY1max, dMinLengthRestToUnload, dNewY1max)
|
||||
local dNewY1Delta = EgtClamp( BD.CHAR_LOAD_DIST or 3000, 0.75 * dNewY1min + 0.25 * dNewY1max, dNewY1DeltaMax)
|
||||
local dNewY2Delta = nil
|
||||
local dNewY1 = dPosT + dNewY1Delta
|
||||
local vCmd = {}
|
||||
@@ -1031,7 +1066,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
|
||||
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 MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
||||
@@ -1065,11 +1100,19 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
||||
WorkTab.dY1DeltaMaxF = min( EMC.LB - MinJoin, MaxY1 + dDistFront + dRollFront + AGG_V)
|
||||
WorkTab.dY2DeltaMinF = nil
|
||||
WorkTab.dY2DeltaMaxF = nil
|
||||
if dY1DeltaMaxSP then WorkTab.dY1DeltaMaxF = min( WorkTab.dY1DeltaMaxF, dY1DeltaMaxSP) end
|
||||
WorkTab.dV1PosF = dRollBack
|
||||
WorkTab.bV1CloseF = false
|
||||
WorkTab.dV2PosF = -dRollFront
|
||||
WorkTab.bV2CloseF = false
|
||||
|
||||
-- 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 AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico validità intervallo ammesso per Y1
|
||||
if WorkTab.dY1DeltaMinF > WorkTab.dY1DeltaMaxF + 10 * GEO.EPS_SMALL then
|
||||
EMC.ERR = 18
|
||||
@@ -1106,6 +1149,13 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
||||
WorkTab.dV2PosF = -dRollFront
|
||||
WorkTab.bV2CloseF = false
|
||||
|
||||
-- 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 AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico validità intervallo ammesso per Y1
|
||||
if WorkTab.dY1DeltaMinF > WorkTab.dY1DeltaMaxF + 10 * GEO.EPS_SMALL then
|
||||
EMC.ERR = 18
|
||||
@@ -1323,20 +1373,24 @@ function SpecAdjustCarriages( WorkTab)
|
||||
if WorkTab.dY1DeltaI then
|
||||
local dY1DeltaLim = MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V + EMC.HCING + EMC.HOVM + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
||||
if WorkTab.dY1DeltaI <= dY1DeltaLim or ( WorkTab.dY1DeltaMaxF and WorkTab.dY1DeltaMaxF <= dY1DeltaLim) then
|
||||
bCloseV = true
|
||||
bCloseV = true
|
||||
end
|
||||
end
|
||||
if WorkTab.dY2DeltaI then
|
||||
local dY2DeltaLim = MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V
|
||||
if EMC.LB - WorkTab.dY2DeltaI <= dY2DeltaLim or ( WorkTab.dY2DeltaMinF and EMC.LB - WorkTab.dY2DeltaMinF <= dY2DeltaLim) then
|
||||
bCloseV = true
|
||||
bCloseV = true
|
||||
end
|
||||
end
|
||||
-- se ho cambiato modo di prendere utensile, forzo chiusura
|
||||
if bChangedTool == 2 then
|
||||
bCloseV = true
|
||||
bCloseV = true
|
||||
end
|
||||
|
||||
-- se i pezzi del cliente sono molto storti, si forza la chiusura per evitare che vada a sbattere. Se parametro non presente, si chiude solo se necessario
|
||||
if ForceToCloseRollersGate then
|
||||
bCloseV = true
|
||||
end
|
||||
|
||||
WorkTab.bCloseV = bCloseV
|
||||
|
||||
-- |POSIZIONO Y1| **[A]**
|
||||
@@ -1849,7 +1903,7 @@ local function PosY1Y2B( TabI, vCmd)
|
||||
end
|
||||
end
|
||||
nCnt = nCnt + 1
|
||||
if nCnt > 5 then return end
|
||||
if nCnt > 10 then return end
|
||||
until ( not bXW)
|
||||
-- chiusura/parcheggio dei trascinatori in funzioni chiamanti
|
||||
local dY1Delta = TabI.dY1PosI - TabI.dTPosI
|
||||
@@ -1913,7 +1967,6 @@ local function PosY2Y1A( TabI, vCmd)
|
||||
MaxDispl( TabI, vCmd, 'M1')
|
||||
end
|
||||
end
|
||||
|
||||
until ( not bXW)
|
||||
-- chiusura/parcheggio dei trascinatori in funzioni chiamanti
|
||||
local dY1Delta = TabI.dY1PosI - TabI.dTPosI
|
||||
@@ -1981,14 +2034,14 @@ local function PosY2Y1B( TabI, vCmd)
|
||||
if TabI.dY2PosI > MinY2 and
|
||||
TabI.dY2PosI > TabI.dTPosI + MinJoin + EMC.HOVM + EMC.HCING - 10 * GEO.EPS_SMALL then
|
||||
-- allontanamento morse, trascinamento trave con Y2
|
||||
MaxDispl( TabI, vCmd, 'M2')
|
||||
MaxDispl( TabI, vCmd, 'M2')
|
||||
else
|
||||
-- accentramento morse, trascinamento trave con Y1
|
||||
MaxDispl( TabI, vCmd, 'M3')
|
||||
end
|
||||
end
|
||||
nCnt = nCnt + 1
|
||||
if nCnt > 5 then return end
|
||||
if nCnt > 10 then return end
|
||||
until ( not bXW)
|
||||
-- la chiusura delle morse è fatta sopra
|
||||
local dY1Delta = TabI.dY1PosI - TabI.dTPosI
|
||||
+4
-4
@@ -22,12 +22,12 @@ rmdir /s /Q %fullPathZip%
|
||||
REM copio i sorgenti nel percorso di destinazione
|
||||
ROBOCOPY . %fullPathSource%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
|
||||
REM copio i sorgenti nel percorso temporaneo per i compilati
|
||||
ROBOCOPY . %fullPathSource%\bin\%machineName%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
|
||||
ROBOCOPY . %fullPathSource%\bin\%machineName%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||
|
||||
REM copio i file compilati nel percorso temporaneo per i compilati
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common-PF1250.mlpe Common-PF1250.mlpe
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common-PF1250.mlse Common-PF1250.mlse
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common-PF1250.TPA.mlpe Common-PF1250.TPA.mlpe
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common_PF1250.mlpe -s Common_PF1250.mlpe
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common_PF1250.mlse -s Common_PF1250.mlse
|
||||
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common_PF1250.TPA.mlpe -s Common_PF1250.TPA.mlpe
|
||||
|
||||
REM comprimo i file compilati in uno zip pronto per essere distribuito
|
||||
tar.exe acvf %fullPathZip%\%machineName%.zip -C %fullPathSource%\bin\ %machineName%\*.*
|
||||
|
||||
Binary file not shown.
+118
-55
@@ -1,39 +1,16 @@
|
||||
-- Descrizione macchina Essetre-PF1250MAX by EgalWare s.r.l. 2024/02/20
|
||||
-- Descrizione macchina Essetre-PF1250MAX by EgalWare s.r.l. 2024/03/28
|
||||
-- 2023/12/07 ver 2.5l1 Prima versione. Derivata da PF1250 ver 2.5l4
|
||||
-- 2023/12/15 ver 2.5l2 Corretti vari offset in simulazione
|
||||
-- 2023/12/18 ver 2.5l3 Ultimata gestione aggregato lama da sotto
|
||||
-- Spostato alcune funzioni proprie del C.U. nel MLDE (per post-proc common)
|
||||
-- Spostato magazzini sotto traversa ( di 200mm) come da modifica meccanica
|
||||
-- 2023/12/20 ver 2.6a1 Prima versione con post Common-PF1250
|
||||
-- Invertiti magazzini mortasatrice-truciolatore e adeguati solidi di collisione
|
||||
-- Abbassata testa 2 di 300mm
|
||||
-- Parcheggio motosega portato a -1700mm
|
||||
-- In BeamData aggiunta GetSawBlockedAxis per fissare asse bloccato per aggregato lama sotto.
|
||||
-- Costanti MinForzaPinze e MaxForzaPinze portati in mlde/Ts3data (erano hardcoded - Common)
|
||||
-- Aggiunto variabile 'WriteAllCoordsOnFirstM101' e allineamento con 2.6a1 common
|
||||
-- 2023/12/20 ver 2.6a2 Allineamento con Common-PF1250 v.2.6a2
|
||||
-- 2024/01/22 ver 2.6a3 Migliorata preselezione utensile
|
||||
-- Rimosse funzioni ribaltamento pezzo
|
||||
-- Allineamento con Common-PF1250 v.2.6a3
|
||||
-- In BeamData aggiunta la funzione GetBlockedAxis che sostituisce le altre (GetChainSawBlockedAxis e GetSawBlockedAxis)
|
||||
-- 2024/01/25 ver 2.6a4 Allineamento con Common 2.6a4
|
||||
-- 2024/02/09 ver 2.6b1 Corretto errore in definizione testa H22
|
||||
-- In BeamData migliorata funzione GetBlockedAxis
|
||||
-- 2024/02/12 ver 2.6b2 Allineamento con common 2.6b2
|
||||
-- 2024/02/20 ver 2.6b3 Allineamento con common 2.6b3
|
||||
-- 2024/02/26 ver 2.6b4 Allineamento con common ver. 2.6b4; 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 Corretto portautensile Standard_LC_108.
|
||||
-- 2024/03/12 ver 2.6c4 Allineamento con common ver. 2.6c3
|
||||
-------------------------------------
|
||||
-- NOTE VERSIONI SUCCESSIVE IN GIT --
|
||||
-------------------------------------
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.6c4'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
PP_VER = '2.7d2'
|
||||
PP_NVER = '2.7.4.2'
|
||||
MIN_MACH_VER = '2.7d2'
|
||||
MACH_NAME = 'Essetre-PF1250MAX'
|
||||
|
||||
-- Carico i dati globali
|
||||
@@ -102,7 +79,8 @@ SawB2Offs = 0
|
||||
MinX1 = 0
|
||||
MaxX1 = 3300
|
||||
MinZ1 = -1850
|
||||
MaxZ1 = -100
|
||||
MaxZ1 = 0
|
||||
MaxZ1Blade = -100
|
||||
MinC1 = -275
|
||||
MaxC1 = 275
|
||||
MinB1 = -127
|
||||
@@ -110,6 +88,7 @@ MaxB1 = 127
|
||||
MinB1b = -119
|
||||
MaxB1b = 119
|
||||
ParkX1 = 250
|
||||
ParkTc1X1 = 250
|
||||
ParkTc2X1 = 3100
|
||||
ParkZ1 = -525
|
||||
ParkC1 = -90
|
||||
@@ -124,9 +103,10 @@ MinLengthLongCSaw = 580 -- gestione speciale per motosega molto lunga. Lung
|
||||
ParkLongCSawZ1 = -50 -- gestione speciale per motosega molto lunga. Parcheggio asse Z
|
||||
ParkLongCSawC1 = 0 -- gestione speciale per motosega molto lunga. Parcheggio asse C
|
||||
ParkLongCSawB1 = -90 -- gestione speciale per motosega molto lunga. Parcheggio asse B
|
||||
LongTool = 400
|
||||
LongTool = 390
|
||||
ParkLongTc1C1 = 0
|
||||
ParkLongTc2C1 = -180
|
||||
ParkLongB1 = 0
|
||||
MinZ1ToChangeH2 = -1400
|
||||
MinX2 = -2760
|
||||
MaxX2 = 0
|
||||
@@ -139,7 +119,8 @@ MaxB2 = 127
|
||||
MinB2b = -119
|
||||
MaxB2b = 119
|
||||
ParkX2 = -100
|
||||
SafeX2 = -400
|
||||
SafeX2 = -200
|
||||
SafeX2RotAxis = -1000
|
||||
ParkZ2 = 0
|
||||
ParkC2 = -90
|
||||
ParkB2 = -90
|
||||
@@ -156,7 +137,7 @@ DeltaTabY = 2550
|
||||
DeltaTabZ = -1428 + MillOffs -- per TPA : -1128.0 + MillOffs -- per NUM : -1258
|
||||
DeltaRulliTraveZ = -1203
|
||||
DimTabY = 1400
|
||||
DimTabX = 24000
|
||||
DimTabX = 34000
|
||||
Delta2TabY = -1185.9
|
||||
Delta2TabZ = 693 - Mill2Offs -- per TPA : 378.0 - Mill2Offs -- per NUM : 223
|
||||
Head2X = 0
|
||||
@@ -170,10 +151,12 @@ MaxForzaPinze = 1000 -- [Kgf]
|
||||
Tc2Active = true -- magazzino prima sega a catena
|
||||
SecondSaw = true -- seconda lama su aggregato su TC3 presente
|
||||
SecondChain = true -- magazzino seconda sega a catena
|
||||
TcSpecialTools = true -- magarzzino per utensili speciali. In genere truciolatore
|
||||
TcSpecialTools = true -- magazzino per utensili speciali. In genere truciolatore
|
||||
TcAggreBladeUnder = true -- lama su aggregato per testa da sotto
|
||||
EmitAccClamps = true
|
||||
WriteAllCoordsOnFirstM101 = true
|
||||
ForceToCloseRollersGate = false
|
||||
Motors23KW = false
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF1250MAX.data"
|
||||
@@ -196,6 +179,7 @@ if EgtExistsFile( sDataBeam) then
|
||||
if Machine.Offsets.PARK_X1 then ParkX1 = Machine.Offsets.PARK_X1 end
|
||||
if Machine.Offsets.Z1_NEG then MinZ1 = Machine.Offsets.Z1_NEG end
|
||||
if Machine.Offsets.Z1_POS then MaxZ1 = min( MaxZ1, Machine.Offsets.Z1_POS) end
|
||||
if Machine.Offsets.Z1_POS_LAMA then MaxZ1Blade = min( MaxZ1Blade, Machine.Offsets.Z1_POS_LAMA) end
|
||||
if Machine.Offsets.PARK_Z1 then ParkZ1 = Machine.Offsets.PARK_Z1 end
|
||||
if Machine.Offsets.C1_NEG then MinC1 = Machine.Offsets.C1_NEG end
|
||||
if Machine.Offsets.C1_POS then MaxC1 = Machine.Offsets.C1_POS end
|
||||
@@ -214,6 +198,8 @@ if EgtExistsFile( sDataBeam) then
|
||||
if Machine.Offsets.C2_POS then MaxC2 = Machine.Offsets.C2_POS end
|
||||
if Machine.Offsets.B2_NEG then MinB2 = Machine.Offsets.B2_NEG end
|
||||
if Machine.Offsets.B2_POS then MaxB2 = Machine.Offsets.B2_POS end
|
||||
if Machine.Offsets.B2_NEG1 then MinB2b = Machine.Offsets.B2_NEG1 end
|
||||
if Machine.Offsets.B2_POS1 then MaxB2b = Machine.Offsets.B2_POS1 end
|
||||
if Machine.Offsets.MIN_Y1 then MinMchY1 = Machine.Offsets.MIN_Y1 end
|
||||
if Machine.Offsets.MAX_Y1 then MaxMchY1 = Machine.Offsets.MAX_Y1 end
|
||||
if Machine.Offsets.PARK_Y1 then ParkMchY1 = Machine.Offsets.PARK_Y1 end
|
||||
@@ -234,6 +220,8 @@ if EgtExistsFile( sDataBeam) then
|
||||
if Machine.Offsets.OFFSETBLAMAT1 then SawB1Offs= Machine.Offsets.OFFSETBLAMAT1 end
|
||||
if Machine.Offsets.OFFSETCLAMAT2 then Saw2C1Offs= Machine.Offsets.OFFSETCLAMAT2 end
|
||||
if Machine.Offsets.OFFSETBLAMAT2 then Saw2B1Offs= Machine.Offsets.OFFSETBLAMAT2 end
|
||||
if Machine.Offsets.OFFSETCLAMAUNDER then SawUnderC2Offs= Machine.Offsets.OFFSETCLAMAUNDER end
|
||||
if Machine.Offsets.OFFSETBLAMAUNDER then SawUnderB2Offs= Machine.Offsets.OFFSETBLAMAUNDER end
|
||||
if Machine.Offsets.OFFSETXT1 then DeltaTabY = -Machine.Offsets.OFFSETXT1 end
|
||||
if Machine.Offsets.OFFSETZT1 then DeltaTabZ = Machine.Offsets.OFFSETZT1 + MillOffs end
|
||||
if Machine.Offsets.OFFSETXT2 then Delta2TabY = Machine.Offsets.OFFSETXT2 end
|
||||
@@ -244,10 +232,17 @@ if EgtExistsFile( sDataBeam) then
|
||||
if Machine.Offsets.SAWOFFSZ then SawOffsZ = Machine.Offsets.SAWOFFSZ end
|
||||
if Machine.Offsets.SAW2OFFSX then Saw2OffsX = Machine.Offsets.SAW2OFFSX end
|
||||
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
||||
if Machine.Offsets.SAWUNDEROFFSY then SawUnderOffsY = Machine.Offsets.SAWUNDEROFFSY end
|
||||
if Machine.Offsets.SAWUNDEROFFSZ then SawUnderOffsZ = Machine.Offsets.SAWUNDEROFFSZ 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.MINPRESS then MinForzaPinze = Machine.Offsets.MINPRESS end
|
||||
if Machine.Offsets.MAXPRESS then MaxForzaPinze = Machine.Offsets.MAXPRESS end
|
||||
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE 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.MOTORS23KW then Motors23KW = Machine.Offsets.MOTORS23KW == 1 end
|
||||
|
||||
-- aggiustamenti
|
||||
MinY1 = MinV1 + MinDeltaYV
|
||||
MaxY1 = MaxMchY1
|
||||
@@ -258,6 +253,7 @@ if EgtExistsFile( sDataBeam) then
|
||||
ParkV2 = MinV2
|
||||
ParkY2 = ParkV2 - MinDeltaYV
|
||||
UnloadSmT = UnloadT - 300
|
||||
MaxZ1Blade = min( MaxZ1Blade, -100)
|
||||
Head2Y = DeltaTabY - Delta2TabY
|
||||
Head2Z = DeltaTabZ - Delta2TabZ
|
||||
ParkCSawZ1 = min( ParkCSawZ1, MaxZ1)
|
||||
@@ -265,6 +261,7 @@ if EgtExistsFile( sDataBeam) then
|
||||
end
|
||||
end
|
||||
SecondSaw = ( SecondSaw and Tc2Active)
|
||||
local vtOffset23KW = Vector3d( 0, 0, EgtIf( Motors23KW, 37, 0))
|
||||
|
||||
EmtGeneral {
|
||||
File='Essetre-PF1250.nge',
|
||||
@@ -274,9 +271,12 @@ EmtGeneral {
|
||||
ExitMaxAdjust = 300,
|
||||
ExitMaxRotAdj = 0.5,
|
||||
AngDeltaMinForHome = 80,
|
||||
Special = 'Common-PF1250.mlse',
|
||||
Processor = 'Common-PF1250.mlpe'}
|
||||
local sBaseAux = {'BASE/SOLID', 'BASE/CONVOYER', 'BASE/COLLISION', 'BASE/TC1', 'BASE/TCR', 'BASE/TC3'}
|
||||
LinkAxesMoveOrder = MCH_LKAMO.HEAD_BEFORE_IF_SAME_ANG,
|
||||
Special = 'Common_PF1250.mlse',
|
||||
Processor = 'Common_PF1250.mlpe'}
|
||||
-- in base alla corsa macchina, si carica la rulliera di carico/scarico appropriata
|
||||
local sGeomConvoyer = EgtIf( MaxY1 > 6500, '_8M', '_5M')
|
||||
local sBaseAux = {'BASE/SOLID', 'BASE/CONVOYER'..sGeomConvoyer, 'BASE/COLLISION', 'BASE/TC1', 'BASE/TCR', 'BASE/TC3'}
|
||||
if Tc2Active then table.insert( sBaseAux, 5, 'BASE/TC2') end
|
||||
if TcSpecialTools then table.insert( sBaseAux, 'BASE/TC4') end
|
||||
if SecondChain then table.insert( sBaseAux, 'BASE/TC5') end
|
||||
@@ -296,9 +296,9 @@ local X1Id = EmtAxis {
|
||||
Home = ParkX1,
|
||||
Invert = true,
|
||||
Geo = 'X1_AXIS/GEO',
|
||||
Aux = 'X1_AXIS/SOLID'}
|
||||
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
||||
-- *** Testa 1 ***
|
||||
EmtAxis {
|
||||
local Z1Id = EmtAxis {
|
||||
Name = 'Z1',
|
||||
Parent = 'X1',
|
||||
Token = 'Z',
|
||||
@@ -318,8 +318,8 @@ EmtAxis {
|
||||
Pos = Point3d(0.0,0.0,503.0),
|
||||
Stroke = {MinC1, MaxC1},
|
||||
Home = ParkC1,
|
||||
Geo = 'C1_AXIS/GEO',
|
||||
Aux = {'C1_AXIS/SOLID', 'C1_AXIS/COLLISION'}}
|
||||
Geo = EgtIf( Motors23KW, 'C1_AXIS_23KW/GEO', 'C1_AXIS/GEO'),
|
||||
Aux = {EgtIf( Motors23KW, 'C1_AXIS_23KW/SOLID', 'C1_AXIS/SOLID'), EgtIf( Motors23KW, 'C1_AXIS_23KW/COLLISION', 'C1_AXIS/COLLISION')}}
|
||||
EmtAxis {
|
||||
Name = 'B1',
|
||||
Parent = 'C1',
|
||||
@@ -329,8 +329,8 @@ EmtAxis {
|
||||
Pos = Point3d(-108.4,0.0,MillOffs),
|
||||
Stroke = {MinB1, MaxB1},
|
||||
Home = ParkB1,
|
||||
Geo = 'B1_AXIS/GEO',
|
||||
Aux = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION'}}
|
||||
Geo = EgtIf( Motors23KW, 'B1_AXIS_23KW/GEO', 'B1_AXIS/GEO'),
|
||||
Aux = {EgtIf( Motors23KW, 'B1_AXIS_23KW/SOLID', 'B1_AXIS/SOLID'), EgtIf( Motors23KW, 'B1_AXIS_23KW/COLLISION', 'B1_AXIS/COLLISION')}}
|
||||
-- Frese
|
||||
local H11Id = EmtHead {
|
||||
Name = 'H11',
|
||||
@@ -437,8 +437,8 @@ local C2Id = EmtAxis {
|
||||
Pos = Point3d( Head2X, Head2Y, Head2Z-485),
|
||||
Stroke = {MinC2, MaxC2},
|
||||
Home = ParkC2,
|
||||
Geo = 'C2_AXIS/GEO',
|
||||
Aux = {'C2_AXIS/SOLID', 'C2_AXIS/COLLISION'}}
|
||||
Geo = EgtIf( Motors23KW, 'C2_AXIS_23KW/GEO', 'C2_AXIS/GEO'),
|
||||
Aux = {EgtIf( Motors23KW, 'C2_AXIS_23KW/SOLID', 'C2_AXIS/SOLID'), EgtIf( Motors23KW, 'C2_AXIS_23KW/COLLISION', 'C2_AXIS/COLLISION')}}
|
||||
local B2Id = EmtAxis {
|
||||
Name = 'B2',
|
||||
Parent = 'C2',
|
||||
@@ -448,8 +448,8 @@ local B2Id = EmtAxis {
|
||||
Pos = Point3d( Head2X, Head2Y, Head2Z-Mill2Offs),
|
||||
Stroke = {MinB2, MaxB2},
|
||||
Home = ParkB2,
|
||||
Geo = 'B2_AXIS/GEO',
|
||||
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
||||
Geo = EgtIf( Motors23KW, 'B2_AXIS_23KW/GEO', 'B2_AXIS/GEO'),
|
||||
Aux = {EgtIf( Motors23KW, 'B2_AXIS_23KW/SOLID', 'B2_AXIS/SOLID'), EgtIf( Motors23KW, 'B2_AXIS_23KW/COLLISION', 'B2_AXIS/COLLISION')}}
|
||||
EmtAxis {
|
||||
Name = 'A2',
|
||||
Parent = 'B2',
|
||||
@@ -462,11 +462,11 @@ EmtAxis {
|
||||
Geo = 'A2_AXIS/GEO'}
|
||||
|
||||
local vtMoveZ2 = Vector3d( 0, 0, Head2Z + 1781.0)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMoveZ2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMoveZ2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMoveZ2 - vtOffset23KW, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMoveZ2 - vtOffset23KW, GDB_RT.GLOB)
|
||||
local vtMoveX2 = Vector3d( 0, Head2Y - 3735.9, Head2Z + 1781.0)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMoveX2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMoveX2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMoveX2 - vtOffset23KW, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMoveX2 - vtOffset23KW, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), vtMoveX2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( C2Id, 'COLLISION'), vtMoveX2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( B2Id, 'SOLID'), vtMoveX2, GDB_RT.GLOB)
|
||||
@@ -613,7 +613,7 @@ EmtAxis {
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = - X_AX(),
|
||||
Pos = Point3d(0.0,2450.0,-958.0),
|
||||
Stroke = {-20000, 20000},
|
||||
Stroke = {-40000, 5000},
|
||||
Home = LoadT,
|
||||
Geo = 'T_AXIS/GEO'}
|
||||
EmtTable {
|
||||
@@ -916,8 +916,11 @@ if SecondChain then EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC5') or GDB_ID.NU
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TCR') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||
if TcSpecialTools then EgtMove( EgtGetFirstNameInGroup( BaseId, 'TCS') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB) end
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z1Id, 'SOLID'), vtOffset23KW, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Z1Id, 'COLLISION'), vtOffset23KW, GDB_RT.GLOB)
|
||||
local vtMove = Vector3d( 0, ( DeltaTabY - 2550.0), ( DeltaTabZ + 1258.0))
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'..sGeomConvoyer), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Y1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( Y2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
@@ -930,6 +933,8 @@ EgtMove( EgtGetFirstNameInGroup( V2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( V2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PV2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QV2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
local vtMoveColl = Vector3d( 0, 0, MaxZ1Blade)
|
||||
EgtMove( EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), 'CEIL'), vtMoveColl, GDB_RT.GLOB)
|
||||
|
||||
-- Assegno identificativi alle spie delle morse
|
||||
PY1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( Y1Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
@@ -950,6 +955,7 @@ function OnSetHead()
|
||||
else
|
||||
EmtModifyAxisHome( 'X1', ParkTc2X1)
|
||||
end
|
||||
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1})
|
||||
if EMC.TOTLEN < LongTool then
|
||||
EmtModifyAxisHome( 'Z1', ParkZ1)
|
||||
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
||||
@@ -964,13 +970,14 @@ function OnSetHead()
|
||||
EmtModifyAxisStroke( 'C1', { ParkLongTc2C1 - 20, ParkLongTc2C1 + 20})
|
||||
EmtModifyAxisHome( 'C1', ParkLongTc2C1)
|
||||
end
|
||||
EmtModifyAxisHome( 'B1', ParkB1)
|
||||
EmtModifyAxisHome( 'B1', ParkLongB1)
|
||||
end
|
||||
EmtModifyAxisDirection( 'B1', X_AX())
|
||||
-- se testa H12 (lama)
|
||||
elseif EMC.HEAD == 'H12' then
|
||||
EmtModifyAxisHome( 'X1', ParkX1)
|
||||
EmtModifyAxisHome( 'Z1', ParkZ1)
|
||||
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1Blade})
|
||||
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
||||
EmtModifyAxisHome( 'C1', ParkC1)
|
||||
EmtModifyAxisHome( 'B1', ParkB1)
|
||||
@@ -984,6 +991,7 @@ function OnSetHead()
|
||||
local CSawPosA = GetCurrChainSawingVirtualAxis()
|
||||
EmtModifyAxisHome( 'X1', ParkCSawX1)
|
||||
EmtModifyAxisHome( 'Z1', GetChainSawZHomeFromVirtualAxis( CSawPosA))
|
||||
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1})
|
||||
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
||||
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA))
|
||||
EmtModifyAxisHome( 'B1', ParkCSawB1)
|
||||
@@ -992,12 +1000,18 @@ function OnSetHead()
|
||||
elseif EMC.HEAD == 'H16' then
|
||||
EmtModifyAxisHome( 'X1', ParkTc2X1)
|
||||
EmtModifyAxisHome( 'Z1', ParkZ1)
|
||||
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1Blade})
|
||||
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
||||
EmtModifyAxisHome( 'C1', ParkC1)
|
||||
EmtModifyAxisHome( 'B1', ParkB1)
|
||||
EmtModifyAxisDirection( 'B1', Vector3d( cos( Saw2C1Offs), sin( Saw2C1Offs), 0))
|
||||
-- se testa H21 (fresa sotto)
|
||||
elseif EMC.HEAD == 'H21' then
|
||||
if not EMC.TOTDIAM or EMC.TOTDIAM > 300 then
|
||||
EmtModifyAxisStroke( 'B2', {MinB2b, MaxB2b})
|
||||
else
|
||||
EmtModifyAxisStroke( 'B2', {MinB2, MaxB2})
|
||||
end
|
||||
EmtModifyAxisHome( 'C2', ParkC2)
|
||||
EmtModifyAxisDirection( 'B2', X_AX())
|
||||
-- se testa H22 (lama su aggregato sotto)
|
||||
@@ -1062,6 +1076,20 @@ function GetHeadSetFromTcPos( sTcPos)
|
||||
return 0, 0
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che ritorna bool per dire se esiste o meno al testa richiesta
|
||||
function IsHeadExisting( nHeadSet)
|
||||
if nHeadSet == 1 then
|
||||
return H11Id ~= nil
|
||||
elseif nHeadSet == 2 then
|
||||
return H21Id ~= nil
|
||||
elseif nHeadSet == 3 then
|
||||
return H31Id ~= nil
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che ritorna il nome della testa in base alla posizione utensile (ATT: deve rispecchiare il setup)
|
||||
function GetAdjHeadFromTcPos( nHeadSet, sTcPos)
|
||||
@@ -1212,6 +1240,38 @@ function GetCurrChainSawingVirtualAxis()
|
||||
return dPosA
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare la posizione del rinvio flottante
|
||||
function SetFloatPos( sHead, dPos)
|
||||
-- recupero Id testa
|
||||
local nHeadId = EgtGetHeadId( sHead)
|
||||
if not nHeadId then return false end
|
||||
-- se ci sono entità flottanti nel ToolHolder
|
||||
local nRefId = EgtGetFirstNameInGroup( nHeadId, '_T1')
|
||||
local vtTool = EgtFR( nRefId, GDB_ID.ROOT):getVersZ()
|
||||
local nObjId = EgtGetFirstGroupInGroup( EgtGetFirstNameInGroup( nHeadId, 'T1'))
|
||||
local FloatEntities = EgtGetInfoInGroup( nObjId, 'Float')
|
||||
if FloatEntities and #FloatEntities > 0 then
|
||||
-- il porta-utensile flottante non può comprimersi più di 10mm
|
||||
if dPos > 10 then
|
||||
local sErr = 'Floating Ring compressed more than 10mm'
|
||||
EmtSetLastError( 1222, sErr)
|
||||
EgtOutLog( 'Error : ' .. sErr, 1)
|
||||
end
|
||||
local dFloat = EgtGetInfo( FloatEntities[1], 'Float', 'd')
|
||||
if abs( dPos - dFloat) > 10 * GEO.EPS_SMALL then
|
||||
local vtMove = ( dPos - dFloat) * vtTool
|
||||
-- sposto tutte le entità flottanti
|
||||
for i = 1, #FloatEntities do
|
||||
EgtMove( FloatEntities[i], vtMove, GDB_RT.GLOB)
|
||||
EgtSetInfo( FloatEntities[i], 'Float', dPos)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per resettare tutte le attivazioni della macchina
|
||||
function OnResetMachine()
|
||||
@@ -1219,6 +1279,9 @@ function OnResetMachine()
|
||||
EmtUnlinkAllFixturesFromGroups()
|
||||
SetPY1Light( false)
|
||||
SetPY2Light( false)
|
||||
--resetto eventuale flottante
|
||||
SetFloatPos( 'H11', 0)
|
||||
SetFloatPos( 'H21', 0)
|
||||
-- nascondo Vmill
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
;Index = Type, Description, Default Value
|
||||
; Type : b=boolean, d=double, l=lenght, s=string
|
||||
|
||||
[Drilling]
|
||||
|
||||
[Sawing]
|
||||
|
||||
[Milling]
|
||||
0=l,MaxElev,0
|
||||
1=d,OutRaw,0
|
||||
2=l,SideElev,0
|
||||
3=d,TrimExt,0
|
||||
4=s,VtFaceUse,0,0,0
|
||||
5=s,EdgesFaceUse,0
|
||||
|
||||
[Pocketing]
|
||||
0=l,MaxElev,0
|
||||
1=b,Open,0
|
||||
2=d,OpenMinSafe,0
|
||||
3=d,OpenOutRaw,0
|
||||
4=l,MaxOptSize,0
|
||||
|
||||
[Mortising]
|
||||
0=d,MaxElev,0
|
||||
|
||||
[Chiseling]
|
||||
|
||||
[SawRoughing]
|
||||
|
||||
[SawFinishing]
|
||||
|
||||
[GenMachining]
|
||||
|
||||
[SurfRoughing]
|
||||
0=l,MaxElev,1000
|
||||
1=b,PlaneZ,0
|
||||
|
||||
[SurfFinishing]
|
||||
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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,43 @@
|
||||
; Commento per evitare BOM con UTF-8
|
||||
; Index, Type, Description, Value
|
||||
; Index = 0,1,..,n
|
||||
; Type : d=double, l=lenght, s=string, b=boolean, dr=double recalc, sr= string recalc, lr=lenght recalc, br=boolean recalc, th=toolholder
|
||||
; Description : STEP, SIDESTEP, ...
|
||||
|
||||
[DRILL_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=s,DOUBLE
|
||||
|
||||
[SAW_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=b,LONGCUT
|
||||
|
||||
[SAW_FLAT]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=b,LONGCUT
|
||||
|
||||
[MILL_STD]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=d,SIDEDEPTH
|
||||
4=s,DOUBLE
|
||||
5=dr,TOOL_OVERHANG
|
||||
|
||||
[MILL_NOTIP]
|
||||
0=th,TH,
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
3=d,SIDEDEPTH
|
||||
4=s,DOUBLE
|
||||
5=dr,TOOL_OVERHANG
|
||||
|
||||
[MORTISE_STD]
|
||||
0=b,MORTISE
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
+173
-1
@@ -1,5 +1,177 @@
|
||||
==== Common_PF1250 Update Log ====
|
||||
|
||||
Versione 2.7d2 (24/04/2025)
|
||||
- (SIM) Modifica qualità VMILL. Da ora si può impostare da impostazioni CAM5
|
||||
|
||||
Versione 2.7d1 (01/04/2025)
|
||||
- (GEN) Aggiunta commenti HEADER e FOOTER per comunicazione con linea o altre macchine, da parte di Essetre.
|
||||
|
||||
Versione 2.7b5 (26/02/2025)
|
||||
- (MLDE-GEN) Gestione lettura feed massima pinze da Ts3.
|
||||
|
||||
Versione 2.7b4 (21/02/2025)
|
||||
- (SIM-GEN) Ripristinato comportamento precedente calcolo posizione dei rulli di pinzaggio fatto con 2.7b2.
|
||||
- (MLDE-SIM) Gestione aggregato flottante. Serve modifica MLDE. Ticket#2297
|
||||
|
||||
Versione 2.7b3 (06/02/2025)
|
||||
- (SIM) Dopo aver scaricato utensile, si setta nota "HIDDEN" per dichiarare utensile non più sulla testa e non considerare le collisioni.
|
||||
|
||||
Versione 2.7b2 (04/02/2025)
|
||||
- (SIM-GEN) Piccola modifica nel calcolo posizione dei rulli di pinzaggio.
|
||||
|
||||
Versione 2.7b1 (03/02/2025)
|
||||
- (SIM) Corretta simulazione che non mandava testa in home in caso di utensile lungo. Generazione era già ok. Ticket#2280
|
||||
|
||||
Versione 2.7a2 (28/01/2025)
|
||||
- (SIM-GEN) In MLSE aggiunta piccola correzione quota Z in caso di direzione Z tra 0.5 e 0.707.
|
||||
|
||||
Versione 2.7a1 (17/01/2025)
|
||||
- (GEN) Piccola correzione posizione X in preselezione utensile
|
||||
- (GEN) Corretto primo punto X preselezione utensile. Ticket#2183 e #2250
|
||||
|
||||
Versione 2.6l7 (19/12/2024)
|
||||
- (SIM) HOTFIX : corretto posizione Z zero alla selezione dell'utensile in caso di motosega. Ticket#2235
|
||||
|
||||
Versione 2.6l6 (18/12/2024)
|
||||
- (MLDE-SIM-GEN) Aggiunta variabile 'SafeX2RotAxis' in sostituzione della 'ParkMchY2' che era usata impropriamente
|
||||
|
||||
Versione 2.6l5 (17/12/2024)
|
||||
- (SIM) Corretta posizione iniziale testa 2. Ticket#2228
|
||||
|
||||
Versione 2.6l4 (16/12/2024)
|
||||
- (SIM-GEN) In MLSE ripristinati vecchi valori indici calcolo Z massima. In alcuni casi peggioravano la situazione.
|
||||
|
||||
Versione 2.6l3 (16/12/2024)
|
||||
- (SIM) Corretto scarico utensile se aggregato. Se non presente utensile di default, non seleziona nulla.
|
||||
- (SIM-GEN) In MLSE ritoccati indici calcolo Z massima. Ticket#2210
|
||||
|
||||
Versione 2.6l2 (13/12/2024)
|
||||
- (SIM) Corretta chiamata calcolo asse virtuale
|
||||
|
||||
Versione 2.6l1 (13/12/2024)
|
||||
- (SIM) Gestione caricamento utensili in caso di testa con uscita multipla.
|
||||
- (SIM) Corretto errore di collisione per errata simulazione cambio utensile da lama a motosega.
|
||||
- (SIM-GEN) Corretta gestione in caso di prima lavorazione con motosega.
|
||||
- (GEN) Non si fa preselezione della testa 3
|
||||
- (GEN) Corretta emissione coordinata rotazione testa 3 in zona sicura
|
||||
- (SIM-GEN) A fine barra, testa 3 sempre in home
|
||||
- (GEN) Controllo esistenza terzo asse ausiliario
|
||||
- (GEN) Corretto primo movimento in X quando si parte con testa 3. Ticket#2216
|
||||
- (GEN) Se su testa 1 c'è un aggregato e si utilizzerà la testa 3, si scarica aggregato e si prende utensile di default. Ticket#2222
|
||||
- (GEN) Durante utilizzo della testa 3, non si preselezionano altre teste. Ticket#2220
|
||||
- (SIM-GEN) Se lavorazione con testa dedicata lama e su testa 1 c'era aggregato, viene scaricato. Ticket#2216
|
||||
|
||||
Versione 2.6k3 (26/11/2024)
|
||||
- (GEN) Corretta modifica fatta in versione 2.6k2. Ticket#2183
|
||||
|
||||
Versione 2.6k2 (25/11/2024)
|
||||
- (GEN) Se si preseleziona su testa 1 un utensile lungo, non si va alla X successiva di lavoro ma si resta in home. Infatti potrebbe toccare le paratie in caso di scambio pezzo. Ticket#2183
|
||||
|
||||
Versione 2.6k1 (04/11/2024)
|
||||
- (SIM-GEN) Gestione terza testa 5 assi dedicata lama (H38)
|
||||
|
||||
Versione 2.6j3 (25/10/2024)
|
||||
- (GEN) Piccola correzione per capire se testa 3 presente
|
||||
- (SIM-GEN) In caso di lavorazione successiva alla prima, rivisto primo posizionamento alla quota Z di lavoro se precedentemente spostati a quota rotazione assi rotanti.
|
||||
|
||||
Versione 2.6j2 (23/10/2024)
|
||||
- (MLDE-SIM) Aggiunto parametro ParkTc1X1 in MLDE per simulazione quota parcheggio Testa 1 su TC1.
|
||||
- (SIM-GEN) Per movimento a ZMAX si considera utensile attuale o precedente
|
||||
- (SIM-GEN) Prima versione con gestione testa 3 dedicata lama
|
||||
|
||||
Versione 2.6j1 (01/10/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-SIM) Aggiunta gestione solidi collisione per TC verticali e TC rotante sotto
|
||||
- (GEN) Per lavorazione in doppio: messaggio bloccante in caso di extra-corsa durante un movimento standard su piano generico della lavorazione.
|
||||
|
||||
Versione 2.6i1 (10/09/2024)
|
||||
- (GEN) Se diametro utensile più del truciolatore standard grande, non si preseleziona. Ticket#2028
|
||||
|
||||
Versione 2.6h2 (28/08/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) La testa veniva spostata a quota X sicurezza rotazione assi rotanti prima di aprire le rulliere. Ticket#1991
|
||||
|
||||
Versione 2.6h1 (07/08/2024)
|
||||
- (GEN) Gestione creazione piano generico in caso il primo movimento della lavorazione sia un arco. Ticket#1891
|
||||
- (SIM-GEN) Migliorata gestione riposizionamenti fatta con la 2.6g1. Ticket#1836
|
||||
- (MLDE-SIM-GEN) Rinominato file da "Common-" a "Common_" per uniformità con i file common delle altre macchine. Serve modifica a MLDE macchina.
|
||||
|
||||
Versione 2.6g5 (24/07/2024)
|
||||
- (SIM) Per OnSetHead chiamata da simulazione, aggiunta lettura TOTDIAM. Serve per limitare corse assi testa sotto. Ticket#1946
|
||||
|
||||
Versione 2.6g4 (23/07/2024)
|
||||
- (SIM) Corretta ultima modifica per controllo collisioni testa non utilizzata. Trovava collisioni in lavorazioni in doppio.
|
||||
|
||||
Versione 2.6g3 (22/07/2024)
|
||||
- (SIM) Si aggiunge al controllo collisioni anche Tool e ToolHolder della testa non utilizzata. Ticket#1937
|
||||
- (SIM-GEN) In caso di grezzo piuttosto piccolo, concesso pinzaggio fino al massimo possibile, oltre al calcolo con coefficienti. Ticket#1942
|
||||
|
||||
Versione 2.6g2 (12/07/2024)
|
||||
- (SIM-GEN) Corretto movimento testa sotto che andava in collisione tra una lavorazione e la successiva se tra le due c'era un riposizionamento pinze. Ticket#1925
|
||||
|
||||
Versione 2.6g1 (08/07/2024)
|
||||
- (SIM-GEN) Corretto movimento che pinzava nel vuoto durante riposizionamento. Ticket#1836
|
||||
|
||||
Versione 2.6f2 (06/06/2024)
|
||||
- (GEN) Quando si va a ZMAX, si azzerano tutte le coordinate ".pp". Scriveva una Z bassa quando era a Z massima. Ticket#1839
|
||||
|
||||
Versione 2.6f1 (03/06/2024)
|
||||
- (SIM-GEN) Migliorata gestione approccio al pezzo con lama aggregato da sotto. Va al minimo in X solo se necessario.
|
||||
|
||||
Versione 2.6e6 (28/05/2024)
|
||||
- (GEN) Aggiunta possibilità di scrivere nome utensile doppio anche in lavorazione con parametro "TOOLDOUBLE". Note sulla lavorazione hanno precedenza su note utensile.
|
||||
- (GEN) Ripristinato controllo extra-corsa per testa 2 in caso di lavorazioni in doppio in Y (si era perso in un vecchio commit)
|
||||
- (SIM-GEN) Corretto movimento testa sotto su prima lavorazione. Ruotava a parcheggio invece di andare a quota sicurezza rotazione assi.
|
||||
|
||||
Versione 2.6e5 (23/05/2024)
|
||||
- (GEN) Controllo extra-corsa per testa 2 in caso di lavorazioni in doppio in Y
|
||||
- (GEN) Corretta lettura e salvataggio coordinala asse L2 con coordinate rispetto origine. Prima erano locali e sbagliava alcuni calcoli
|
||||
- (SIM-GEN) Se lavorazione con testa 2 e stesso utensile, piccola correzione che manda a parcheggio se cambiano assi rotanti solo se si trova a ZMAX
|
||||
|
||||
Versione 2.6e4 (15/05/2024)
|
||||
- (SIM-GEN) Miglioramento gestione lama su aggregato da sotto
|
||||
|
||||
Versione 2.6e3 (09/05/2024)
|
||||
- (SIM) Corretto prelievo lama 2 (H16). Prima di visualizzare utensile, si sposta la Z alla quota massima. Prima trovava collisione in caso utensile precedente non lama (perchè era già oltre la quota massima).
|
||||
|
||||
Versione 2.6e2 (06/05/2024)
|
||||
- (GEN) In parcheggio paratie/pinze, viene considerato sovramateriale di testa. Simulazione era corretta. Ticket#1789
|
||||
|
||||
Versione 2.6e1 (30/04/2024)
|
||||
- (SIM-GEN) Per macchina a 3 teste, ripristinato posizionamento testa 2 tramite parametro ParkInLavZ2. La gestione era stata persa dal common.
|
||||
- (MLDE-GEN) Gestione facoltativa parametro WOOD_DENSITY settabile in Ts3. In MLDE, mettere il valore di WOOD_DENSITY nella nostra variabile 'WoodDensity'.
|
||||
|
||||
Versione 2.6d2 (23/04/2024)
|
||||
- (MLDE-GEN) Aggiunto parametro 'IS_TEST_MACHINE' FACOLTATIVO. Se non esiste o 'false' è macchina standard, se 'true' è una macchina utilizzata per i test Egalware interni
|
||||
- (GEN) Chiamando la macchina con un nome che termini con '.TEST' si abilita come macchina per test interni, equivalente a settare 'IS_TEST_MACHINE' (che comunque rimane)
|
||||
- (SIM-GEN) Modificato movimenti testa sotto. Prima si muove in quota 'ParkMchY2' e poi va alla coordinata di lavoro ruotando gli assi
|
||||
- (SIM) Per lavorazioni in doppio, viene subito scritta la quota Z. La generazione era già corretta. Ticket#1377
|
||||
- (GEN) Ripristinato movimento iniziale testa sopra assieme alle pinze. Spostato comando wait dopo primo movimento testa. Ticket#1730
|
||||
- (MLDE-SIM-GEN) Aggiunto parametro MaxZ1Blade per differenziare Z massima aggregato lama e altri utensili.
|
||||
- (SIM) Aggiunto controllo con solido di collisione per verificare di non salire oltre il massimo
|
||||
- (SIM) Corretta simulazione scambio testa 3 -> testa 1
|
||||
|
||||
Versione 2.6d1 (09/04/2024)
|
||||
- (GEN) Corretto impostazione piano G24 con testa da sotto con aggregato
|
||||
- (SIM-GEN) Corretta posizione prelievo/parcheggio se lama su aggregato da sotto
|
||||
- (MLDE-SIM-GEN) Aggiunta variabile FACOLTATIVA 'ForceToCloseRollersGate' ( che legge la variabile da TS3 'CHIUDI_PINZE_2_3_SCAMBIO') in mlde per forzare chiusura paratie rulli
|
||||
durante scambio pinze per facilitare passaggio pezzi molto storti. Se non presente chiude solo se necessario.
|
||||
- (GEN) Corretta scrittura lista utensili iniziale M992 per doppia motosega e aggregato lama sotto
|
||||
- (SIM-GEN) Corretto movimento punte lunghe
|
||||
- (GEN) Corretto adeguamento speed per aggregato lama da sotto con coefficiente moltiplicativo
|
||||
- (SIM-GEN) Aumentato numero riposizionamenti possibili a 10 ( per pezzi molto lunghi non bastava il valore precedente: 5)
|
||||
- (GEN) Corretto posizionamento assi in home se primo utensile punta lunga
|
||||
|
||||
Versione 2.6c5 (26/03/2024)
|
||||
- (SIM) Corretto primo movimento in rapido della lavorazione per testa sotto. Ora allineata a generazione
|
||||
- (SIM-GEN) Aggiunta gestione parametro "SECDIST". Distanza di sicurezza tra paratia con rulli e utensile/testa. Parametro da inserire nelle note utensile
|
||||
- (MLDE-SIM) Modificate collisioni traversa. Ora non comprende carro X1, il quale ha il proprio oggetto di collisione
|
||||
|
||||
Versione 2.6c4 (14/03/2024)
|
||||
- (SIM) Miglioramento visualizzazione spigoli VMILL alla fine della simulazione. Funzione: EgtVolZmapSetShowEdges. N.B.= serve CAM5 2.6c2 NON OBBLIGATORIO
|
||||
- (GEN) Modifica controlli a preselezione utensile. Margine ridotto da 400m a 200mm.
|
||||
- (GEN) Corretto controllo preselezione testa H1 quando H2 in lavoro
|
||||
|
||||
Versione 2.6c3 (12/03/2024)
|
||||
- (SIM-GEN) Migliorata gestione movimenti con lama su aggregato su testa sotto
|
||||
|
||||
@@ -14,7 +186,7 @@ Versione 2.6b4 (23/02/2024)
|
||||
- (MLDE-SIM-GEN) EgtAddToPackagePath spostato in mlde
|
||||
|
||||
Versione 2.6b3 (20/02/2024)
|
||||
- (SIM) Aggiunta funzioni "OnSimulInit" e "OnSimulExit" per orientare vista corretta in caso di macchina con carico destro. N.B.= serve CAM5 2.6b4
|
||||
- (SIM) Aggiunta funzioni "OnSimulInit" e "OnSimulExit" per orientare vista corretta in caso di macchina con carico destro. N.B.= serve CAM5 2.6b4 NON OBBLIGATORIO
|
||||
- (SIM-GEN) "BeamData" caricato come libreria con 'require' anziché come file con 'dofile'
|
||||
|
||||
Versione 2.6b2 (15/02/2024)
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_PF1250', -- nome script PP standard
|
||||
VERSION = '2.6c3', -- versione script
|
||||
VERSION = '2.7d2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[WALL]
|
||||
Kerf=10
|
||||
Offset=25
|
||||
Reference in New Issue
Block a user