Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f59081ecb | |||
| aab05a8610 | |||
| dbd8e588c7 | |||
| 590e6cffb9 | |||
| eda1e55e87 | |||
| 932e4efc60 | |||
| 67ac2fd53b | |||
| e7230c6234 | |||
| 9a1d17f926 | |||
| c52ca62da9 | |||
| 8d0c623775 | |||
| dea5a74124 | |||
| aceb0ae605 | |||
| fd39ae71b5 | |||
| 9e785751f0 | |||
| a5f5fd08f0 | |||
| a268623d2a | |||
| 84ab70721e | |||
| 0e4032afe0 | |||
| 187771b31a | |||
| 93a22aad8b | |||
| a6342df47f | |||
| c3bbee0acc | |||
| 9643aa5cae | |||
| 47ff743061 | |||
| ac3178aa44 |
+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
|
||||
|
||||
+38
-18
@@ -1,4 +1,4 @@
|
||||
-- Descrizione macchina Essetre-90580012 by EgalTech s.r.l. 2023/09/20
|
||||
-- Descrizione macchina Essetre-90580012 by EgalTech s.r.l. 2024/09/23
|
||||
-- Macchina Progress (parte Wall).
|
||||
-- 2023/09/01 DS ver 2.5i1 Primo rilascio partendo da 90580017.
|
||||
-- 2023/09/05 DS ver 2.5i2 Sistemazioni varie. Sottratto circa 30 da G1xx.
|
||||
@@ -6,18 +6,28 @@
|
||||
-- 2023/09/18 DS ver 2.5i4 Aggiunta gestione due tavole accoppiate.
|
||||
-- 2023/09/20 DS ver 2.5i5 Grezzi larghi fino a 3520. Rifatta lavorazione lama in DB per eliminare problema ultimo step.
|
||||
-- 2023/09/20 DS ver 2.5i6 Corretta gestione posizione seconda tavola. Corretto spostamento solidi collisione testa lama.
|
||||
-- 2024/02/09 AV ver 2.6b1 Forzato posizionamento pezzo sempre in origine 1
|
||||
-- Aggiunto magazzino per trucioaltore 600x20mm
|
||||
-- Tavole azzerate a X negativo (per Essetre Y positivo)
|
||||
-- 2024/02/10 DS ver 2.6b2 Sistemazione estremi assi Y.
|
||||
-- Aumentato interasse tra le tavole quando accoppiate
|
||||
-- 2024/02/15 AV ver 2.6b3 Cambiato id motosega EU101->104 (Prima era EU41)
|
||||
-- Corretta posizione parcheggio in base al nuovo lato di carico
|
||||
-- 2024/10/04 AV ver 2.6j1 Modificato controllo collisione tavola. Ora permessi 10mm
|
||||
-- 2024/11/28 LM ver 2.6k1 In WallData aggiunto parametri MIN_Z_SAW e CUT_VZ_MIN
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.5i6'
|
||||
PP_VER = '2.7h1'
|
||||
PP_NVER = '2.7.8.1'
|
||||
|
||||
-- Parametri macchina
|
||||
NumericalControl = 'NUM' -- NUM o TPA
|
||||
MinY = 0.0
|
||||
MaxY = 25500.0
|
||||
MinY2 = 10000.0
|
||||
MaxY2 = 35500.0
|
||||
MinY = 10000.0
|
||||
MaxY = 35500.0
|
||||
MinY2 = 0.0
|
||||
MaxY2 = 25500.0
|
||||
MinX1 = -5440.0
|
||||
MaxX1 = -690.0
|
||||
MinZ1 = -1345.0
|
||||
@@ -30,7 +40,7 @@ MaxC1 = 275.0
|
||||
MillOffs = 170.0
|
||||
ChSawLen = 91.0
|
||||
ParkChSawX1 = ( MinX1 + MaxX1) / 2
|
||||
ParkChSawZ1 = -250
|
||||
ParkChSawZ1 = -400 -- OLD: -250
|
||||
ParkChSawC1 = 90
|
||||
MinX2 = -4750.0
|
||||
MaxX2 = 0.0
|
||||
@@ -46,21 +56,21 @@ SawDeltaZ = -253.0
|
||||
SawOffs = 154.0
|
||||
DimTabX = 10000.0
|
||||
DimTabY = 3500.0
|
||||
DeltaTabX = 12034.96
|
||||
DeltaTabX = 12207.5
|
||||
DeltaTabY = -4789.3
|
||||
DeltaTabZ = -1150.0
|
||||
DimTab2X = 10000.0
|
||||
DimTab2Y = 3500.0
|
||||
DeltaTab2X = 12034.96
|
||||
DeltaTab2X = 12207.5
|
||||
DeltaTab2Y = -4789.3
|
||||
DeltaTab2Z = -1150.0
|
||||
GantryTabs = 11000.0
|
||||
OffsetTabs = 50
|
||||
OffsetTabs = 332
|
||||
CoeffVM = 0.75
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90580012.data"
|
||||
local sData = EgtGetSourceDir().."\\Wall\\Ts3Data.lua"
|
||||
local sData = EgtGetCurrMachineDir().."\\Wall\\Ts3Data.lua"
|
||||
if EgtExistsFile( sTs3Data) then
|
||||
EgtCopyFile( sTs3Data, sData)
|
||||
local sTs3DataOld = sTs3Data..'.old'
|
||||
@@ -75,6 +85,8 @@ if EgtExistsFile( sData) then
|
||||
NumericalControl = EgtIf( MchOffs.TIPO_CN ~= 1, 'NUM', 'TPA')
|
||||
if MchOffs.MAX_Y then MinY = -MchOffs.MAX_Y end
|
||||
if MchOffs.MIN_Y then MaxY = -MchOffs.MIN_Y end
|
||||
if MchOffs.MAX_Y2 then MinY2 = -MchOffs.MAX_Y2 end
|
||||
if MchOffs.MIN_Y2 then MaxY2 = -MchOffs.MIN_Y2 end
|
||||
MinX1 = MchOffs.MIN_X or MinX1
|
||||
MaxX1 = MchOffs.MAX_X or MaxX1
|
||||
MinZ1 = MchOffs.MIN_Z or MinZ1
|
||||
@@ -121,8 +133,8 @@ EmtGeneral {
|
||||
local BaseId = EmtBase {
|
||||
Name = 'Base',
|
||||
Geo='BASE/GEO',
|
||||
Aux={'BASE/TRAVERSA', 'BASE/SUBTABLE', 'BASE/COLLISION', 'BASE/TC', 'BASE/TCR'}}
|
||||
local vtMove = Vector3d( DeltaTabX - 12034.96, DeltaTabY + 4789.3, DeltaTabZ + 1150)
|
||||
Aux={'BASE/TRAVERSA', 'BASE/SUBTABLE', 'BASE/COLLISION', 'BASE/TC', 'BASE/TCR', 'BASE/TCR2'}}
|
||||
local vtMove = Vector3d( DeltaTabX - 12207.5, DeltaTabY + 4789.3, DeltaTabZ + 1150)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SUBTABLE'), vtMove, GDB_RT.GLOB)
|
||||
-- Tavola 1
|
||||
local YId = EmtAxis {
|
||||
@@ -133,7 +145,7 @@ local YId = EmtAxis {
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinY, MaxY},
|
||||
Home = MinY,
|
||||
Home = MaxY,
|
||||
Geo = 'Y_AXIS/GEO',
|
||||
Aux = {'Y_AXIS/SOLID'}}
|
||||
EgtMove( YId, vtMove, GDB_RT.GLOB)
|
||||
@@ -153,7 +165,7 @@ local Y2Id = EmtAxis {
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinY2, MaxY2},
|
||||
Home = MaxY2,
|
||||
Home = MinY2,
|
||||
Geo = 'Y2_AXIS/GEO',
|
||||
Aux = {'Y2_AXIS/SOLID'}}
|
||||
EgtMove( Y2Id, vtMove, GDB_RT.GLOB)
|
||||
@@ -221,6 +233,7 @@ EmtHead {
|
||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||
Geo = 'H1_HEAD/GEO'}
|
||||
-- Sega a catena
|
||||
-- attenzione: gestita solo la home per la posizione 104, unica abilitata. Se si aggiungono altre posizioni, la home sarà da modificare nella OnSetHead
|
||||
EmtAxis {
|
||||
Name = 'A1',
|
||||
Parent = 'B1',
|
||||
@@ -229,7 +242,7 @@ EmtAxis {
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = { -90, 180},
|
||||
Home = 0,
|
||||
Home = 90,
|
||||
Geo = 'A1_AXIS/GEO'}
|
||||
local H3Id = EmtHead {
|
||||
Name = 'H3',
|
||||
@@ -237,7 +250,7 @@ local H3Id = EmtHead {
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, -ChSawLen),
|
||||
TDir = -Y_AX(),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.1,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
@@ -379,7 +392,14 @@ EmtTcPos {
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T101'}
|
||||
|
||||
local ptTCR2 = Point3d( -901.3,-4392.7,-79)
|
||||
EmtTcPos {
|
||||
Name = 'T201',
|
||||
Parent = 'Base',
|
||||
Pos = ptTCR2,
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T201'}
|
||||
---------------------------------------------------------------------
|
||||
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
||||
--function OnSetTable()
|
||||
|
||||
Binary file not shown.
+25
-19
@@ -9,16 +9,16 @@ local TEST_USE = false
|
||||
-- *** GENERATION ***
|
||||
---------------------------------------------------------------------
|
||||
function OnStart()
|
||||
EMT.USETO1 = false -- abilitazione uso origine tavola
|
||||
EMT.MODAL = true -- abilitazione emissione modale
|
||||
EMT.INCHES = false -- unità di misura mm/inches
|
||||
EMT.NUM = false -- abilitazione numerazione linee
|
||||
EMT.USETO1 = false -- abilitazione uso origine tavola
|
||||
EMT.MODAL = true -- abilitazione emissione modale
|
||||
EMT.INCHES = false -- unità di misura mm/inches
|
||||
EMT.NUM = false -- abilitazione numerazione linee
|
||||
--EMT.Nt = 'N' -- token per la numerazione di linea
|
||||
--EMT.LINENBR = 0 -- numero di linea
|
||||
--EMT.LINEINC = 1 -- incremento numerazione linee
|
||||
--EMT.Ft = 'F' -- token per feed
|
||||
--EMT.St = 'S' -- token per speed
|
||||
EMT.FMAXPINZE = 154000 -- feed massima pinze
|
||||
EMT.FMAXPINZE = 154000 -- feed massima pinze
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -32,8 +32,8 @@ function OnProgramStart()
|
||||
-- Flag
|
||||
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL
|
||||
EMT.LOAD90 = EgtGetInfo( BtlInfoId, 'LOAD90', 'i') or 0
|
||||
-- Imposto uso origine 3
|
||||
EMT.ORIG = 3
|
||||
-- Imposto uso origine 1
|
||||
EMT.ORIG = 1
|
||||
-- Intestazioni
|
||||
if not TEST_USE then
|
||||
EMT.PRODID = EgtGetInfo( BtlInfoId, 'PRODID', 'i') or 0
|
||||
@@ -181,6 +181,7 @@ function OnMachiningStart()
|
||||
--EMT.MCHLIBNAME = EgtGetMachiningParam( MCH_MP.NAME)
|
||||
EMT.MCHNAME = EgtGetOperationName( EMT.MCHID)
|
||||
EMT.MCHTYPE = EgtGetMachiningParam(MCH_MP.TYPE)
|
||||
EMT.MCHUSERNOTES = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
-- non ancora iniziata la lavorazione
|
||||
EMT.MCHFIRST = true
|
||||
-- primo posizionamento sempre in globale
|
||||
@@ -219,10 +220,13 @@ function OnRapid()
|
||||
-- se prima lavorazione sui fianchi con sega a catena
|
||||
if EMT.CSAWFIRST and string.sub( EMT.MCHNAME, 1, 5) == 'Csaw_' then
|
||||
EMT.CSAWFIRST = false
|
||||
-- pausa per rimozione sfridi
|
||||
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
|
||||
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
|
||||
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
|
||||
-- eventuale pausa per rimozione sfridi
|
||||
if EMT.SCRAPFIRST then
|
||||
EMT.SCRAPFIRST = false
|
||||
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
|
||||
local ParkY = max( -( MaxY + b3Raw:getMin():getX() + b3Raw:getDimX() + 3000), -MaxY)
|
||||
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
|
||||
end
|
||||
-- pre-posizionamento
|
||||
EmitCount()
|
||||
EmtResetPrev()
|
||||
@@ -240,11 +244,13 @@ function OnRapid()
|
||||
end
|
||||
-- altrimenti verifico se necessaria pausa
|
||||
else
|
||||
if EMT.SCRAPFIRST and EgtExistsInfo( EMT.MCHID, 'MOVE_AFTER') then
|
||||
EMT.SCRAPFIRST = false
|
||||
local bSystemSR = ( EMT.SCRAPFIRST and EgtExistsInfo( EMT.MCHID, 'MOVE_AFTER'))
|
||||
local bUserSR = ( EgtGetValInNotes( EMT.MCHUSERNOTES, 'ScrapRemove', 'i') == 1)
|
||||
if bSystemSR or bUserSR then
|
||||
if bSystemSR then EMT.SCRAPFIRST = false end
|
||||
-- pausa per rimozione sfridi
|
||||
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
|
||||
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
|
||||
local ParkY = max( -( MaxY + b3Raw:getMin():getX() + b3Raw:getDimX() + 3000), -MaxY)
|
||||
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
|
||||
end
|
||||
end
|
||||
@@ -492,7 +498,7 @@ end
|
||||
---------------------------------------------------------------------
|
||||
function CalcInterpPlane()
|
||||
-- origine del piano
|
||||
local xS = EMT.START[1]
|
||||
local xS = EMT.START[1] + EgtGetAxisHomePos( 'Y')
|
||||
local yS = EMT.START[2]
|
||||
local zS = DeltaTabZ
|
||||
local ptS = Point3d( xS, yS, zS)
|
||||
@@ -555,10 +561,10 @@ function GetEU()
|
||||
elseif EMT.HEAD == 'H2' then
|
||||
sEU = ' EU0'
|
||||
elseif EMT.HEAD == 'H3' then
|
||||
if abs( EMT.R3 - 0) < 0.1 then
|
||||
sEU = ' EU41'
|
||||
elseif abs( EMT.R3 - 90) < 0.1 then
|
||||
sEU = ' EU40'
|
||||
--if abs( EMT.R3 - 0) < 0.1 then
|
||||
-- sEU = ' EU101'
|
||||
if abs( EMT.R3 - 90) < 0.1 then
|
||||
sEU = ' EU104'
|
||||
else
|
||||
EmtSetLastError( 1210, 'Chain saw orientation not allowed')
|
||||
end
|
||||
|
||||
+187
-80
@@ -9,9 +9,9 @@ EgtEnableDebug( false)
|
||||
---------------------------------------------------------------------
|
||||
-- *** GENERATION ***
|
||||
---------------------------------------------------------------------
|
||||
local sBaseDir = EgtGetSourceDir()
|
||||
local sBaseDir = EgtGetCurrMachineDir()
|
||||
if NumericalControl == 'NUM' then
|
||||
dofile( sBaseDir .. 'Essetre-WALL.NUM.mlpe')
|
||||
dofile( sBaseDir .. '\\Essetre-WALL.NUM.mlpe')
|
||||
elseif NumericalControl == 'TPA' then
|
||||
error( 'Numerical Control error : TPA not yet managed')
|
||||
--dofile( sBaseDir .. 'Essetre-WALL.TPA.mlpe')
|
||||
@@ -69,7 +69,8 @@ function OnSimulStart()
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL1'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL2'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'CSAW'}}
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'CSAW'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TRUC'}}
|
||||
EgtOutLog( 'MCODET Objects :', 4)
|
||||
local nMcdNullCnt = 0
|
||||
for i = 1, #McdData do
|
||||
@@ -131,7 +132,7 @@ function OnSimulDispositionStart()
|
||||
EMT.TAB2 = nil
|
||||
if EMT.LB > GantryTabs then
|
||||
EMT.TAB2 = true
|
||||
EgtSetAxisPos( 'Y2', EgtGetAxisPos( 'Y') + DimTabX + OffsetTabs)
|
||||
EgtSetAxisPos( 'Y2', EgtGetAxisPos( 'Y') - DimTabX - OffsetTabs)
|
||||
end
|
||||
-- Carico primo utensile sulla testa 1
|
||||
local sTool = FindFirstToolOnHead( 'H1')
|
||||
@@ -322,6 +323,7 @@ function OnSimulMachiningStart()
|
||||
EMT.MCHNAME = EgtGetOperationName( EMT.MCHID)
|
||||
EMT.MCHTYPE = EgtGetMachiningParam( MCH_MP.TYPE)
|
||||
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
EMT.MCHUSERNOTES = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
EMT.VMRS = false
|
||||
-- recupero CUTID e TASKID della feature lavorata
|
||||
local vId = EgtGetMachiningGeometry()
|
||||
@@ -334,15 +336,15 @@ function OnSimulMachiningStart()
|
||||
EMT.TASKID = 0
|
||||
end
|
||||
-- eventuale pausa per rimozione sfridi
|
||||
if EMT.SCRAPFIRST then
|
||||
if ( EMT.HEAD == 'H3' and string.sub( EMT.MCHNAME, 1, 5) == 'Csaw_') or EgtExistsInfo( EMT.MCHID, 'MOVE_AFTER') then
|
||||
EMT.SCRAPFIRST = false
|
||||
EgtOutText( 'Pause for Scrap Remove')
|
||||
ParkForScrapRemove()
|
||||
ExecScrapRemove()
|
||||
EgtPause( 500)
|
||||
EgtOutText( '')
|
||||
end
|
||||
local bSystemSR = ( EMT.SCRAPFIRST and (( EMT.HEAD == 'H3' and string.sub( EMT.MCHNAME, 1, 5) == 'Csaw_') or EgtExistsInfo( EMT.MCHID, 'MOVE_AFTER')))
|
||||
local bUserSR = ( EgtGetValInNotes( EMT.MCHUSERNOTES, 'ScrapRemove', 'i') == 1)
|
||||
if bSystemSR or bUserSR then
|
||||
if bSystemSR then EMT.SCRAPFIRST = false end
|
||||
EgtOutText( 'Pause for Scrap Remove')
|
||||
ParkForScrapRemove()
|
||||
ExecScrapRemove()
|
||||
EgtPause( 500)
|
||||
EgtOutText( '')
|
||||
end
|
||||
-- non ancora iniziata la lavorazione
|
||||
EMT.MCHFIRST = true
|
||||
@@ -412,7 +414,7 @@ end
|
||||
function OnSimulMoveStart()
|
||||
-- se lunghezza pezzo oltre il limite, aggancio le tavole
|
||||
if EMT.TAB2 then
|
||||
EgtSetAxisPos( 'Y2', EgtGetAxisPos( 'Y') + DimTabX + OffsetTabs)
|
||||
EgtSetAxisPos( 'Y2', EgtGetAxisPos( 'Y') - DimTabX - OffsetTabs)
|
||||
EMT.AuxAxes = 1
|
||||
EMT.A1n = 'Y2'
|
||||
EMT.A1m = 'Y'
|
||||
@@ -451,10 +453,10 @@ end
|
||||
---------------------------------------------------------------------
|
||||
function ParkForScrapRemove()
|
||||
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
|
||||
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
|
||||
local ParkY = min( ( MaxY + b3Raw:getMin():getX() + b3Raw:getDimX() + 3000), MaxY)
|
||||
SimulMoveAxis( 'Z1', EgtGetAxisHomePos( 'Z1'), MCH_SIM_STEP.RAPID)
|
||||
if EMT.TAB2 then
|
||||
SimulMoveAxes( 'Y', ParkY, MCH_SIM_STEP.RAPID, 'Y2', ParkY + DimTabX + OffsetTabs, MCH_SIM_STEP.RAPID)
|
||||
SimulMoveAxes( 'Y', ParkY, MCH_SIM_STEP.RAPID, 'Y2', ParkY - DimTabX - OffsetTabs, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
SimulMoveAxis( 'Y', ParkY, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
@@ -462,76 +464,181 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function ExecScrapRemove()
|
||||
if EMT.VMILL then
|
||||
local nPart = EgtVolZmapPartCount( EMT.VMILL)
|
||||
if nPart > 1 then
|
||||
-- recupero i box dei pezzi
|
||||
local vPrtBox = {}
|
||||
local nPartId = EgtGetFirstPartInRawPart( EMT.RAWID)
|
||||
while nPartId do
|
||||
local b3Part = EgtGetBBoxGlob( EgtGetFirstNameInGroup( nPartId, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
table.insert( vPrtBox, b3Part)
|
||||
nPartId = EgtGetNextPartInRawPart( nPartId)
|
||||
-- Se non c'è virtual milling attivo, esco
|
||||
if not EMT.VMILL then return end
|
||||
-- Se non ci sono almeno due parti nel virtual milling, esco
|
||||
local nVmPart = EgtVolZmapPartCount( EMT.VMILL)
|
||||
if nVmPart < 2 then return end
|
||||
-- Recupero box e area dei pezzi
|
||||
local vPart = {}
|
||||
local nPartId = EgtGetFirstPartInRawPart( EMT.RAWID)
|
||||
while nPartId do
|
||||
-- box e area
|
||||
local b3Part = EgtGetBBoxGlob( EgtGetFirstNameInGroup( nPartId, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
local dPartArea = b3Part:getDimX() * b3Part:getDimY()
|
||||
local nOlEntId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nPartId, 'Outline') or GDB_ID.NULL)
|
||||
while nOlEntId do
|
||||
if EgtGetType( nOlEntId) == GDB_TY.SRF_FRGN and EgtSurfFrNormVersor( nOlEntId, GDB_ID.ROOT):getZ() > 0.8 then
|
||||
dPartArea = EgtSurfArea( nOlEntId)
|
||||
break
|
||||
end
|
||||
-- tengo solo le parti del Vmill che contengono almeno un box di un pezzo
|
||||
for i = nPart, 1, -1 do
|
||||
-- recupero il box della parte
|
||||
local b3VmPart = EgtVolZmapGetPartBBoxGlob( EMT.VMILL, i - 1, GDB_BB.STANDARD)
|
||||
-- lo ingrandisco per sicurezza
|
||||
b3VmPart:expand( 100)
|
||||
-- verifiche per parte da eliminare
|
||||
local bToRemove = true
|
||||
-- se box abbastanza grande, allora da verificare
|
||||
local dVol = b3VmPart:getDimX() * b3VmPart:getDimY() * b3VmPart:getDimZ()
|
||||
if dVol > 1e6 then
|
||||
for j = 1, #vPrtBox do
|
||||
local b3Part = vPrtBox[j]
|
||||
if EnclosesXY( b3VmPart, b3Part) then
|
||||
bToRemove = false
|
||||
nOlEntId = EgtGetNext( nOlEntId)
|
||||
end
|
||||
-- box espanso
|
||||
local b3PartExp = BBox3d( b3Part)
|
||||
b3PartExp:Add( b3PartExp:getMin() - Vector3d( 10, 10, 0))
|
||||
b3PartExp:Add( b3PartExp:getMax() + Vector3d( 10, 10, 0))
|
||||
-- salvo i dati
|
||||
table.insert( vPart, { Box = b3Part, BoxExp = b3PartExp, Area = dPartArea, Outline = nOlEntId})
|
||||
-- passo al successivo
|
||||
nPartId = EgtGetNextPartInRawPart( nPartId)
|
||||
end
|
||||
-- Recupero box e area delle parti di Vmill
|
||||
local vVmPart = {}
|
||||
for i = 1, nVmPart do
|
||||
-- recupero il box e calcolo l'area della parte come Vmill
|
||||
local b3VmPart = EgtVolZmapGetPartBBoxGlob( EMT.VMILL, i - 1, GDB_BB.STANDARD)
|
||||
local dVmPartArea = EgtVolZmapPartVolume( EMT.VMILL, i - 1) / b3VmPart:getDimZ()
|
||||
-- box espanso
|
||||
local b3VmPartExp = BBox3d( b3VmPart)
|
||||
b3VmPartExp:Add( b3VmPart:getMin() - Vector3d( 100, 100, 0))
|
||||
b3VmPartExp:Add( b3VmPart:getMax() + Vector3d( 100, 100, 0))
|
||||
-- salvo i dati
|
||||
table.insert( vVmPart, { Box = b3VmPart, BoxExp = b3VmPartExp, Area = dVmPartArea})
|
||||
end
|
||||
|
||||
-- se presente squadratura, tengo tutti i pezzi all'interno
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
local SquaringEntities = {}
|
||||
SquaringEntities = EgtGetNameInGroup( nRawId, 'SquaringGeometry')
|
||||
local b3SquaringBox = nil
|
||||
if SquaringEntities then
|
||||
for i = 1, #SquaringEntities do
|
||||
if i == 1 then
|
||||
b3SquaringBox = EgtGetBBoxGlob( SquaringEntities[i], GDB_BB.STANDARD)
|
||||
else
|
||||
if b3SquaringBox then
|
||||
b3SquaringBox:Add( EgtGetBBoxGlob( SquaringEntities[i], GDB_BB.STANDARD))
|
||||
end
|
||||
end
|
||||
end
|
||||
if b3SquaringBox then
|
||||
b3SquaringBox:expand( 50)
|
||||
end
|
||||
end
|
||||
|
||||
-- Tengo solo le parti del Vmill che contengono almeno un box di un pezzo o che interferiscono e sono abbastanza grandi
|
||||
local nValidCnt = 0
|
||||
for i = #vVmPart, 1, -1 do
|
||||
-- verifiche per parte da eliminare
|
||||
local bToRemove = true
|
||||
-- se area abbastanza grande, allora da verificare
|
||||
if vVmPart[i].Area > 1e4 then
|
||||
-- se presente squadratura, verifico che il VMILL sia all'interno del BOX squadratura
|
||||
if not b3SquaringBox or EnclosesXY( b3SquaringBox, vVmPart[i].Box) then
|
||||
-- verifico se sono sicuramente valide (i due box si equivalgono entro la tolleranza)
|
||||
for j = 1, #vPart do
|
||||
if ( vPart[j].Outline and vVmPart[i].Area > 0.95 * vPart[j].Area and vVmPart[i].Area < 1.05 * vPart[j].Area) or
|
||||
( EnclosesXY( vVmPart[i].BoxExp, vPart[j].Box) and EnclosesXY( vPart[j].BoxExp, vVmPart[i].Box)) then
|
||||
bToRemove = false
|
||||
vVmPart[i].Part = j
|
||||
nValidCnt = nValidCnt + 1
|
||||
break
|
||||
end
|
||||
end
|
||||
-- verifico se sono molto probabilmente valide
|
||||
for j = 1, #vPart do
|
||||
if bToRemove and ( OverlapsXY( vVmPart[i].Box, vPart[j].Box) and vVmPart[i].Area > 0.25 * vPart[j].Area) then
|
||||
bToRemove = false
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se richiesta eliminazione, la eseguo
|
||||
if bToRemove then
|
||||
EgtRemoveVolZmapPart( EMT.VMILL, i - 1)
|
||||
table.remove( vVmPart, i)
|
||||
end
|
||||
end
|
||||
-- Se il numero delle parti sicuramente valide uguaglia il numero dei pezzi, elimino le altre ed ho finito
|
||||
if nValidCnt == #vPart then
|
||||
for i = #vVmPart, 1, -1 do
|
||||
if not vVmPart[i].Part then
|
||||
EgtRemoveVolZmapPart( EMT.VMILL, i - 1)
|
||||
table.remove( vVmPart, i)
|
||||
end
|
||||
end
|
||||
return
|
||||
end
|
||||
-- Calcolo punti interni alle parti di Vmill non già dichiarate valide
|
||||
for i = 1, #vVmPart do
|
||||
if not vVmPart[i].Part then
|
||||
local vtDir = VectorFromRotated( X_AX(), Z_AX(), 45)
|
||||
local ptP = vVmPart[i].Box:getCenter() - vtDir * ( vVmPart[i].Box:getRadius() + 10)
|
||||
local bOk, vIntType, vIntDist = EgtLineVolZmapInters( ptP, vtDir, EMT.VMILL, GDB_RT.GLOB)
|
||||
if bOk then
|
||||
for j = 1, #vIntType do
|
||||
-- se la corrente entra ed esiste la successiva che esce
|
||||
if vIntType[j] == GDB_SLT.IN and j + 1 <= #vIntType and vIntType[j + 1] == GDB_SLT.OUT then
|
||||
local ptC = ptP + vtDir * (( vIntDist[j] + vIntDist[j + 1]) / 2)
|
||||
local nPart = EgtVolZmapGetPartMinDist( EMT.VMILL, ptC, GDB_RT.GLOB)
|
||||
if nPart == i - 1 then
|
||||
if not vVmPart[i].Cen then
|
||||
vVmPart[i].Cen = ptC
|
||||
elseif not vVmPart[i].Cen2 then
|
||||
vVmPart[i].Cen2 = ptC
|
||||
else
|
||||
vVmPart[i].Cen3 = ptC
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- Verifico le parti di Vmill non già dichiarate valide
|
||||
for i = #vVmPart, 1, -1 do
|
||||
if not vVmPart[i].Part then
|
||||
local bToRemove = true
|
||||
if vVmPart[i].Cen then
|
||||
for j = 1, #vPart do
|
||||
if EnclosesPointXY( vPart[j].Box, vVmPart[i].Cen) then
|
||||
bToRemove = false
|
||||
break
|
||||
elseif vVmPart[i].Cen2 and EnclosesPointXY( vPart[j].Box, vVmPart[i].Cen2) then
|
||||
bToRemove = false
|
||||
break
|
||||
elseif vVmPart[i].Cen3 and EnclosesPointXY( vPart[j].Box, vVmPart[i].Cen3) then
|
||||
bToRemove = false
|
||||
break
|
||||
end
|
||||
-- controllo per gestire squadratura inserita manualmente da operatore
|
||||
-- verifico se il box del part è completamente incluso nel box del VM, allora non posso cancellarlo
|
||||
if Encloses( vVmPart[i].BoxExp, vPart[j].Box) then
|
||||
bToRemove = false
|
||||
break
|
||||
end
|
||||
end
|
||||
for k = 1, #vVmPart do
|
||||
if k ~= i then
|
||||
local vExpBox = BBox3d( vVmPart[k].Box)
|
||||
-- lo espando in XY per sicurezza
|
||||
vExpBox:Add( vExpBox:getMin() - Vector3d( 100, 100, 0))
|
||||
vExpBox:Add( vExpBox:getMax() + Vector3d( 100, 100, 0))
|
||||
-- verifico contenimento
|
||||
if EnclosesXY( vExpBox, vVmPart[i].Box) then
|
||||
bToRemove = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se richiesta eliminazione, la eseguo
|
||||
if bToRemove then
|
||||
EgtRemoveVolZmapPart( EMT.VMILL, i - 1)
|
||||
end
|
||||
end
|
||||
-- se sono rimaste più parti del numero di pezzi, devo fare ulteriori verifiche
|
||||
local nRest = EgtVolZmapPartCount( EMT.VMILL)
|
||||
if nRest > #vPrtBox then
|
||||
-- recupero tutti i box delle parti
|
||||
local vVmpBox = {}
|
||||
for i = 1, nRest do
|
||||
local b3VmPart = EgtVolZmapGetPartBBoxGlob( EMT.VMILL, i - 1, GDB_BB.STANDARD)
|
||||
table.insert( vVmpBox, b3VmPart)
|
||||
end
|
||||
--
|
||||
local vVmpFlag = {}
|
||||
for i = 1, #vPrtBox do
|
||||
local b3Part = vPrtBox[i]
|
||||
local nVmp
|
||||
local dErr = 400
|
||||
for j = 1, nRest do
|
||||
local b3VmPart = vVmpBox[j]
|
||||
local dCurrErr = ( b3Part:getCenter() - b3VmPart:getCenter()):len() +
|
||||
abs( b3Part:getDimX() - b3VmPart:getDimX()) +
|
||||
abs( b3Part:getDimY() - b3VmPart:getDimY()) +
|
||||
abs( b3Part:getDimZ() - b3VmPart:getDimZ())
|
||||
if dCurrErr < dErr then
|
||||
nVmp = j
|
||||
dErr = dCurrErr
|
||||
end
|
||||
end
|
||||
if nVmp then
|
||||
vVmpFlag[nVmp] = i
|
||||
end
|
||||
end
|
||||
for i = nRest, 1, -1 do
|
||||
if not vVmpFlag[i] then
|
||||
EgtRemoveVolZmapPart( EMT.VMILL, i - 1)
|
||||
end
|
||||
end
|
||||
-- se richiesta eliminazione, la eseguo
|
||||
if bToRemove then
|
||||
EgtRemoveVolZmapPart( EMT.VMILL, i - 1)
|
||||
table.remove( vVmPart, i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
# Essetre-90580012
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
|
||||
## Add your files
|
||||
|
||||
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
||||
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin https://gitlab.steamware.net/egalware-machines/essetre/essetre-90580012.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
|
||||
## Integrate with your tools
|
||||
|
||||
- [ ] [Set up project integrations](https://gitlab.steamware.net/egalware-machines/essetre/essetre-90580012/-/settings/integrations)
|
||||
|
||||
## Collaborate with your team
|
||||
|
||||
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
|
||||
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
|
||||
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
|
||||
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
|
||||
- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
|
||||
|
||||
## Test and Deploy
|
||||
|
||||
Use the built-in continuous integration in GitLab.
|
||||
|
||||
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
|
||||
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
|
||||
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
|
||||
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
|
||||
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
|
||||
|
||||
***
|
||||
|
||||
# Editing this README
|
||||
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
|
||||
## Suggestions for a good README
|
||||
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
||||
|
||||
## Name
|
||||
Choose a self-explaining name for your project.
|
||||
|
||||
## Description
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
||||
|
||||
## Badges
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
## Visuals
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
## Installation
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
||||
|
||||
## Usage
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
||||
|
||||
## Support
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
||||
|
||||
## Roadmap
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
|
||||
## Contributing
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
||||
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
|
||||
## Authors and acknowledgment
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
|
||||
## License
|
||||
For open source projects, say how it is licensed.
|
||||
|
||||
## Project status
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
+2
-1
@@ -38,7 +38,8 @@ local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos10", TcPos = "T101", Head = "H3", Group = "G1"},
|
||||
{Pos = "Pos11", TcPos = "T42", Head = "H2", Group = "G2"}}
|
||||
{Pos = "Pos11", TcPos = "T201", Head = "H1", Group = "G1"},
|
||||
{Pos = "Pos12", TcPos = "T42", Head = "H2", Group = "G2"}}
|
||||
|
||||
local UsePositionHead = true
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
[WALL]
|
||||
Kerf=10
|
||||
Offset=25
|
||||
+19
-10
@@ -19,9 +19,11 @@ local WallData = {
|
||||
CUT_SIC = 20, -- distanza di sicurezza per tagli
|
||||
CUT_EXTRA = 0, -- affondamento extra standard per tagli di lama e fresature
|
||||
CUT_EXTRA_MIN = 0, -- affondamento extra ridotto per tagli di lama e fresature
|
||||
CUT_VZ_MIN = -0.866, -- componente limite in Z del versore di un taglio (-60deg)
|
||||
MIN_Z_SAW = -6, -- quota minima rispetto alla tavola (default 0)
|
||||
NZ_MINA = 0.5, -- componente limite in Z normale di una faccia (-30deg)
|
||||
NZ_MINB = -0.4, -- componente limite in Z normale di un insieme di facce (-23deg)
|
||||
DRILL_TOL = 0.5, -- tolleranza tra diametro foro e diametro punta
|
||||
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
|
||||
DRILL_VZ_MIN = 0.5, -- componente limite in Z del versore di un foro
|
||||
DRILL_VX_MAX = 0.866, -- componente limite in X del versore di un foro sulle facce laterali
|
||||
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
|
||||
@@ -33,30 +35,37 @@ local WallData = {
|
||||
MAXDIAM_POCK_CORNER= 70, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
|
||||
SIMUL_VIEW_DIR = 3, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
||||
ORIG_CORNER = 'TR', -- angolo tavola per origine di battuta (BR (default), TR, BL, TL)
|
||||
ORIG_CORNER = 'TL', -- angolo tavola per origine di battuta (BR (default), TR, BL, TL)
|
||||
RAWPART_ROT = 180, -- rotazione del pannello grezzo rispetto alla descrizione BTL
|
||||
CUT_WITH_OUTLINE = false, -- taglio delle feature con l'outline del pezzo
|
||||
TAB_EXTRA_XP = 0, -- extra spazio su tavola per grezzo in X più
|
||||
TAB_EXTRA_XM = 10050, -- extra spazio su tavola per grezzo in X meno
|
||||
CUT_WITH_OUTLINE = false, -- taglio delle feature con l'outline del pezzo
|
||||
TAB_EXTRA_XP = 10500, -- extra spazio su tavola per grezzo in X più
|
||||
TAB_EXTRA_XM = 0, -- extra spazio su tavola per grezzo in X meno
|
||||
TAB_EXTRA_YP = 0, -- extra spazio su tavola per grezzo in Y più
|
||||
TAB_EXTRA_YM = 20, -- extra spazio su tavola per grezzo in Y meno
|
||||
DELTA_X = 0, -- allontanamento in X dai riferimenti
|
||||
DELTA_Y = 0, -- allontanamento in Y dai riferimenti
|
||||
DELTA_Z = 0, -- sollevamento dalla tavola
|
||||
SQUARING_TYPE = 0, -- master panel squaring: 0 = disabled, 1 = on rawpart, 2 = shrink to parts
|
||||
SQUARING_TOOL = 5, -- 0 = auto, 1 = double diskmill, 2 = double diskmill+blade, 3 = double blade, 4 = diskmill, 5 = blade, 6 = double mill, 7 = mill
|
||||
SQUARING_USE_ZIGZAG = true, -- false = oneway, true = zigzag. For mill only
|
||||
SQUARING_STARTS_ON_REFERENCE = true, -- false = squaring starts near machine parking, true = squaring starts on reference edge
|
||||
SQUARING_OFFSET_XY = 0, -- > 0 = larger rectangle, < 0 = smaller rectangle. Only with squaring on rawpart
|
||||
SQUARING_EXTEND_Z = 0, -- > 0 = squaring extends below Z0, < 0 = squaring stops above Z0
|
||||
SQUARING_MAX_OVERMATERIAL = 40, -- max overmaterial before squaring
|
||||
}
|
||||
|
||||
local function GetChainSawBlockedAxis( nInd)
|
||||
if nInd == 1 then
|
||||
return 'A1=0'
|
||||
else
|
||||
return 'A1=90'
|
||||
else
|
||||
return 'A1=0'
|
||||
end
|
||||
end
|
||||
WallData.GetChainSawBlockedAxis = GetChainSawBlockedAxis
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90580012.data"
|
||||
local sData = EgtGetSourceDir().."\\Ts3Data.lua"
|
||||
local sData = EgtGetCurrMachineDir().."\\Wall\\Ts3Data.lua"
|
||||
if EgtExistsFile( sTs3Data) then
|
||||
EgtCopyFile( sTs3Data, sData)
|
||||
local sTs3DataOld = sTs3Data..'.old'
|
||||
@@ -84,8 +93,8 @@ end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
local function GetOrigCorner( RefPos)
|
||||
-- sempre origine macchina 3
|
||||
return 'TR'
|
||||
-- sempre origine macchina 1
|
||||
return 'TL'
|
||||
end
|
||||
WallData.GetOrigCorner = GetOrigCorner
|
||||
|
||||
|
||||
Reference in New Issue
Block a user