Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 53c68f8126 | |||
| ce835200c2 | |||
| a941ba0d0d | |||
| e475c01057 | |||
| 03647ee74c | |||
| 22f100ff6c | |||
| 3d0d6526ca | |||
| a911191d5b | |||
| aeba5edbad | |||
| 763ca86371 | |||
| e6e9790a9c | |||
| becd669f6d | |||
| 2fb6729240 | |||
| a3ad73b4a0 | |||
| e88e056c89 | |||
| 3853e7c0c7 | |||
| 4c41ecc7cb | |||
| b7384b9635 | |||
| bc5c99422b | |||
| c5e3af9180 | |||
| 714b3be628 | |||
| 29b63c77a6 | |||
| 53af42724b | |||
| 0be8849f2e | |||
| 246f64e4ce | |||
| 4d3669a24b | |||
| de682d511c | |||
| 55e7d9f2e7 | |||
| bf08515edf | |||
| b0b5a7f91d | |||
| 7cded14384 | |||
| 2bf9d01c50 | |||
| c654e00984 | |||
| f9f2b07489 |
+4
-7
@@ -13,12 +13,9 @@
|
||||
/Debug64
|
||||
/Release64
|
||||
/ipch
|
||||
/bin
|
||||
/obj
|
||||
/.vs
|
||||
/32/*.lua
|
||||
/32/LuaLibs/*.lua
|
||||
/32/Images/*.png
|
||||
/64/*.lua
|
||||
/64/LuaLibs/*.lua
|
||||
/64/Images/*.png
|
||||
/bin/*.lua
|
||||
/bin/*.ini
|
||||
/bin/LuaLibs/*.lua
|
||||
/bin/Images/*.png
|
||||
|
||||
+33
-64
@@ -2,96 +2,67 @@ variables:
|
||||
VERS_MAIN: '1.0'
|
||||
APP_NAME: 'Wall'
|
||||
NEW_REL: ''
|
||||
NET_SHARE_R: '\\10.74.82.201\EgwTech'
|
||||
NET_SHARE_X: '\\10.74.82.201\EgwTech'
|
||||
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
|
||||
NET_USERQ: 'steamw\egalware'
|
||||
|
||||
#Note compilazione LUA:
|
||||
# lua53 -o 32\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
||||
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
||||
|
||||
# helper compilazione LUA a 32 bit
|
||||
.LuaCompile32: &LuaCompile32
|
||||
# helper compilazione LUA a 32 e 64 bit
|
||||
.LuaCompile: &LuaCompile
|
||||
- |
|
||||
Set-Alias lua53 C:\Tools\Lua32\luac53
|
||||
Set-Alias lua54 C:\Tools\Lua32\luac54
|
||||
echo "Copia file *.ini"
|
||||
$FileList = Get-ChildItem("*.ini")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
Copy-Item -Path $FileName -Destination 32\$FileName
|
||||
echo "Copy-Item -Path $FileName -Destination 32\$FileName"
|
||||
Copy-Item -Path $FileName -Destination bin\$FileName
|
||||
echo "Copy-Item -Path $FileName -Destination bin\$FileName"
|
||||
}
|
||||
echo "Compilazione file *.lua 32bit"
|
||||
echo "Compilazione file *.lua 32/64bit"
|
||||
$FileList = Get-ChildItem("*.lua")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
lua53 -o 32\$FileName $FileName
|
||||
echo "lua53 -o 32\$FileName $FileName"
|
||||
lua54 -o bin\$FileName $FileName
|
||||
echo "lua54 -o bin\$FileName $FileName"
|
||||
}
|
||||
$FileList = Get-ChildItem("LuaLibs\*.lua")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
lua53 -o 32\LuaLibs\$FileName LuaLibs\$FileName
|
||||
echo "lua53 -o 32\LuaLibs\$FileName LuaLibs\$FileName"
|
||||
lua54 -o bin\LuaLibs\$FileName LuaLibs\$FileName
|
||||
echo "lua54 -o bin\LuaLibs\$FileName LuaLibs\$FileName"
|
||||
}
|
||||
|
||||
# helper compilazione LUA a 64 bit
|
||||
.LuaCompile64: &LuaCompile64
|
||||
- |
|
||||
Set-Alias lua53 C:\Tools\Lua64\luac53
|
||||
echo "Copia file *.ini"
|
||||
$FileList = Get-ChildItem("*.ini")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
Copy-Item -Path $FileName -Destination 64\$FileName
|
||||
echo "Copy-Item -Path $FileName -Destination 64\$FileName"
|
||||
}
|
||||
echo "Compilazione file *.lua 64bit"
|
||||
$FileList = Get-ChildItem("*.lua")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
lua53 -o 64\$FileName $FileName
|
||||
echo "lua53 -o 64\$FileName $FileName"
|
||||
}
|
||||
$FileList = Get-ChildItem("LuaLibs\*.lua")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
lua53 -o 64\LuaLibs\$FileName LuaLibs\$FileName
|
||||
echo "lua53 -o 64\LuaLibs\$FileName LuaLibs\$FileName"
|
||||
}
|
||||
|
||||
# Copy-Item -Path $FileName -Destination 64\$FileName
|
||||
# echo "Copy-Item -Path $FileName -Destination 64\$FileName"
|
||||
# helper copia SORGENTI verso cartella di rete R:\ dei SORGENTI
|
||||
# helper copia SORGENTI verso cartella di rete X:\ dei SORGENTI
|
||||
.CodeReplicaR: &CodeReplicaR
|
||||
- |
|
||||
net use R: /delete
|
||||
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
ROBOCOPY . R:\EgtData\$env:APP_NAME /MIR /XF .git* /XD .git
|
||||
net use X: /delete
|
||||
SLEEP 2
|
||||
net use R: /delete
|
||||
net use X: $env:NET_SHARE_X /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
ROBOCOPY . X:\EgtData\$env:APP_NAME /MIR /XF .git* /XD .git
|
||||
SLEEP 2
|
||||
net use X: /delete
|
||||
|
||||
|
||||
# helper copia script verso cartella di rete R:\ delle cartelle 32 e 64
|
||||
# helper copia script verso cartella di rete X:\ delle cartelle bin
|
||||
.ReplicaR: &ReplicaR
|
||||
- |
|
||||
net use R: /delete
|
||||
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
ROBOCOPY /MIR 32 R:\EgtData\$env:APP_NAME\32
|
||||
ROBOCOPY /MIR 64 R:\EgtData\$env:APP_NAME\64
|
||||
ROBOCOPY /MIR Images R:\EgtData\$env:APP_NAME\32\Images
|
||||
ROBOCOPY /MIR Images R:\EgtData\$env:APP_NAME\64\Images
|
||||
net use X: /delete
|
||||
SLEEP 2
|
||||
net use R: /delete
|
||||
net use X: $env:NET_SHARE_X /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
ROBOCOPY /MIR bin X:\EgtData\$env:APP_NAME\bin
|
||||
ROBOCOPY /MIR Images X:\EgtData\$env:APP_NAME\bin\Images
|
||||
SLEEP 2
|
||||
net use X: /delete
|
||||
|
||||
# helper copia script verso cartella di rete R:\ delle cartelle 32 e 64
|
||||
# helper copia script verso cartella di rete X:\ delle cartelle bin
|
||||
.ReplicaZ: &ReplicaZ
|
||||
- |
|
||||
net use Z: /delete
|
||||
SLEEP 2
|
||||
net use Z: $env:NET_SHARE_Z /u:$env:NET_USERQ $ZDRIVE_PASSWD
|
||||
ROBOCOPY /MIR 32 Z:\EgtData\$env:APP_NAME\32
|
||||
ROBOCOPY /MIR 64 Z:\EgtData\$env:APP_NAME\64
|
||||
ROBOCOPY /MIR Images Z:\EgtData\$env:APP_NAME\32\Images
|
||||
ROBOCOPY /MIR Images Z:\EgtData\$env:APP_NAME\64\Images
|
||||
ROBOCOPY /MIR bin Z:\EgtData\$env:APP_NAME\bin
|
||||
ROBOCOPY /MIR Images Z:\EgtData\$env:APP_NAME\bin\Images
|
||||
SLEEP 2
|
||||
net use Z: /delete
|
||||
|
||||
@@ -100,15 +71,13 @@ stages:
|
||||
|
||||
LuaCompile:build:
|
||||
stage: build
|
||||
# only:
|
||||
# - main
|
||||
# - master
|
||||
only:
|
||||
- main
|
||||
- master
|
||||
tags:
|
||||
- win
|
||||
script:
|
||||
- *LuaCompile32
|
||||
- *LuaCompile64
|
||||
- *LuaCompile
|
||||
- *CodeReplicaR
|
||||
- *ReplicaR
|
||||
- *ReplicaZ
|
||||
|
||||
|
||||
+25
-49
@@ -1,53 +1,29 @@
|
||||
|
||||
REM Compilazione degli script Wall Egaltech 2022.05.09
|
||||
REM Compilazione degli script Wall Egaltech 2023.02.27
|
||||
REM Per togliere info di debug aggiungere flag -s prima del nome del file di input
|
||||
|
||||
REM Compilazione 32 bit
|
||||
REM Compilazione 32 e 64 bit
|
||||
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WallExec.lua LuaLibs\WallExec.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WallLib.lua LuaLibs\WallLib.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WMachiningLib.lua LuaLibs\WMachiningLib.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessCut.lua LuaLibs\WProcessCut.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessDoubleCut.lua LuaLibs\WProcessDoubleCut.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessDrill.lua LuaLibs\WProcessDrill.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessDtMortise.lua LuaLibs\WProcessDtMortise.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessFreeContour.lua LuaLibs\WProcessFreeContour.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessLapJoint.lua LuaLibs\WProcessLapJoint.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessMark.lua LuaLibs\WProcessMark.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessMortise.lua LuaLibs\WProcessMortise.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessSawCut.lua LuaLibs\WProcessSawCut.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessText.lua LuaLibs\WProcessText.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\LuaLibs\WProcessVariant.lua LuaLibs\WProcessVariant.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\BatchProcess.lua BatchProcess.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\BatchProcessNew.lua BatchProcessNew.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\GetWallData.lua GetWallData.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\NestFlipAndRotate.lua NestFlipAndRotate.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\NestProcess.lua NestProcess.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\Overturn.lua Overturn.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\Process.lua Process.lua
|
||||
\EgtProg\Dll32\luac53 -o 32\Rotate.lua Rotate.lua
|
||||
|
||||
REM Compilazione 64 bit
|
||||
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WallExec.lua LuaLibs\WallExec.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WallLib.lua LuaLibs\WallLib.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WMachiningLib.lua LuaLibs\WMachiningLib.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessCut.lua LuaLibs\WProcessCut.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessDoubleCut.lua LuaLibs\WProcessDoubleCut.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessDrill.lua LuaLibs\WProcessDrill.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessDtMortise.lua LuaLibs\WProcessDtMortise.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessFreeContour.lua LuaLibs\WProcessFreeContour.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessLapJoint.lua LuaLibs\WProcessLapJoint.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessMark.lua LuaLibs\WProcessMark.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessMortise.lua LuaLibs\WProcessMortise.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessSawCut.lua LuaLibs\WProcessSawCut.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessText.lua LuaLibs\WProcessText.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\LuaLibs\WProcessVariant.lua LuaLibs\WProcessVariant.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\BatchProcess.lua BatchProcess.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\BatchProcessNew.lua BatchProcessNew.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\GetWallData.lua GetWallData.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\NestFlipAndRotate.lua NestFlipAndRotate.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\NestProcess.lua NestProcess.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\Overturn.lua Overturn.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\Process.lua Process.lua
|
||||
\EgtProg\Dll64\luac53 -o 64\Rotate.lua Rotate.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WallExec.lua LuaLibs\WallExec.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WallLib.lua LuaLibs\WallLib.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WMachiningLib.lua LuaLibs\WMachiningLib.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessCut.lua LuaLibs\WProcessCut.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessDoubleCut.lua LuaLibs\WProcessDoubleCut.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessDrill.lua LuaLibs\WProcessDrill.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessDtMortise.lua LuaLibs\WProcessDtMortise.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessFreeContour.lua LuaLibs\WProcessFreeContour.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessLapJoint.lua LuaLibs\WProcessLapJoint.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessMark.lua LuaLibs\WProcessMark.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessMortise.lua LuaLibs\WProcessMortise.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessSawCut.lua LuaLibs\WProcessSawCut.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessText.lua LuaLibs\WProcessText.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessVariant.lua LuaLibs\WProcessVariant.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\BatchProcess.lua BatchProcess.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\BatchProcessNew.lua BatchProcessNew.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\GetWallData.lua GetWallData.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\NestFlipAndRotate.lua NestFlipAndRotate.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\NestProcess.lua NestProcess.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Overturn.lua Overturn.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Process.lua Process.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Rotate.lua Rotate.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Version.lua Version.lua
|
||||
|
||||
+3
-1
@@ -1,4 +1,4 @@
|
||||
-- GetWallData.lua by Egaltech s.r.l. 2022/06/28
|
||||
-- GetWallData.lua by Egaltech s.r.l. 2023/03/08
|
||||
-- Recupero dati da file WallData.lua di macchina
|
||||
|
||||
-- Intestazioni
|
||||
@@ -37,6 +37,8 @@ local WD = require( 'WallData')
|
||||
-- Assegno valori di interesse
|
||||
GWD.SIMUL_VIEW_DIR = WD.SIMUL_VIEW_DIR
|
||||
GWD.ORIG_CORNER = WD.ORIG_CORNER
|
||||
GWD.DELTA_X = WD.DELTA_X
|
||||
GWD.DELTA_Y = WD.DELTA_Y
|
||||
GWD.NESTING_CORNER = WD.NESTING_CORNER
|
||||
GWD.HOR_DRILL_DIAM = WD.HOR_DRILL_DIAM
|
||||
GWD.MIN_HEIGHT = WD.MIN_HEIGHT
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
-- Libreria ricerca lavorazioni per Pareti
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
-- 2023/03/09 Piccola correzione alla SideDepth in FindMilling
|
||||
-- In FindMilling aggiunta gestione spessore e massimo materiale nel caso di lam
|
||||
local WMachiningLib = {}
|
||||
|
||||
-- Include
|
||||
@@ -55,14 +57,15 @@ function WMachiningLib.FindMilling( sType, dDepth, sTuuid, nTool_ID, dMaxDiam, d
|
||||
for i = 1, #Millings do
|
||||
local Milling = Millings[i]
|
||||
if Milling.On and Milling.Type == sType and SetCurrMachiningAndTool( Milling.Name) then
|
||||
local bIsBlade = ( EgtTdbGetCurrToolParam( MCH_TP.TYPE) & MCH_TF.SAWBLADE ~= 0) or false
|
||||
local nMchType = EgtMdbGetCurrMachiningParam( MCH_MP.TYPE)
|
||||
local sMyTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||
local dTMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT)
|
||||
local dTMaxMat = EgtIf( bIsBlade, EgtTdbGetCurrToolParam( MCH_TP.THICK), EgtTdbGetCurrToolParam( MCH_TP.MAXMAT))
|
||||
local dTMaxDepth = EgtIf( WD.MILL_MAX_DEPTH_AS_MAT, dTMaxMat, EgtTdbGetCurrToolMaxDepth())
|
||||
local dTDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
|
||||
local dTDiamTh = EgtTdbGetCurrToolThDiam() or 0
|
||||
local dTTipFeed = EgtTdbGetCurrToolParam( MCH_TP.TIPFEED)
|
||||
local dTMaxDepthOnSide = min( EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd') or 0, 0.5 * ( dTDiam - dTDiamTh))
|
||||
local dTMaxDepthOnSide = EgtIf( bIsBlade, EgtTdbGetCurrToolParam( MCH_TP.MAXMAT), min( EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd') or 999, 0.5 * ( dTDiam - dTDiamTh)))
|
||||
local nMyTool_ID = EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'Tool_ID', 'i')
|
||||
if nMchType == MCH_MY.MILLING and
|
||||
( not sTuuid or sTuuid == sMyTuuid) and
|
||||
|
||||
@@ -137,7 +137,7 @@ function WPD.RotateClassify( Proc)
|
||||
local vtExtr = EgtCurveExtrusion( AuxId, GDB_RT.GLOB)
|
||||
local ptCen = EgtCP( AuxId, GDB_RT.GLOB)
|
||||
-- se foro orizzontale con punta lunga
|
||||
if dDiam <= WD.HOR_DRILL_DIAM + WD.DRILL_TOL and dDiam >= WD.HOR_DRILL_DIAM - WD.DRILL_TOL and vtExtr:getZ() > -0.1 and vtExtr:getZ() < 0.1 then
|
||||
if dDiam <= ( WD.HOR_DRILL_DIAM or 35) + WD.DRILL_TOL and dDiam >= ( WD.HOR_DRILL_DIAM or 35) - WD.DRILL_TOL and vtExtr:getZ() > -0.1 and vtExtr:getZ() < 0.1 then
|
||||
-- se orientato perpendicolare ad X
|
||||
if AreSameOrOppositeVectorApprox( vtExtr, X_AX()) then
|
||||
nRot0 = 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2022/08/29
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2023/03/08
|
||||
-- Gestione calcolo profilo libero per Pareti
|
||||
-- 2021/11/15 Penna e chiodature sono sempre riportate sulla faccia sopra anche se nel progetto sono sotto.
|
||||
-- 2021/12/10 In taglio con lama aggiunta gestione SCC per testa Gearbox.
|
||||
@@ -14,6 +14,8 @@
|
||||
-- 2022/08/29 Corretta gestione tipo Pocket senza fondo (sono lavorabili da entrambe le parti con fresatura).
|
||||
-- 2022/12/13 Aggiunta la funzione Is3EdgesApprox per riconoscere come 3 lati anche facce con lati aggiuntivi molto corti (<15 mm)
|
||||
-- 2022/12/14 Aggiunto l'accorciamento della lama in caso di facce vicine orientate verso il basso
|
||||
-- 2023/02/28 In lavorazioni con sega a catena per invertire lato mandrino ora Invert + Left invece di MCH_SCC.OPPOSITE.
|
||||
-- 2023/03/08 In lavorazione con fresa, se imposto Tool_ID non si controlla più possa lavorare di testa.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WPF = {}
|
||||
@@ -1714,23 +1716,22 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
local dEal = vFace[i].Whisk - vFace[i].Len - dSawDiam / 2
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal)
|
||||
-- percorso da non invertire
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
-- assegno utilizzo faccia
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN)
|
||||
-- imposto angolo 3° asse rot
|
||||
EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, sRot3Ang)
|
||||
-- assegno affondamento
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, dDepth)
|
||||
-- assegno lato di lavoro
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
-- posizione braccio porta testa
|
||||
-- assegno lato di lavoro e inversione direzione movimento
|
||||
if vFace[i].Norm:getX() < 0.018 then
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.NONE)
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.OPPOSITE)
|
||||
EgtSetMachiningParam( MCH_MP.OFFSR, dSawThick)
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, true)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
||||
end
|
||||
-- posizione braccio porta testa
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.NONE)
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
@@ -1766,23 +1767,22 @@ local function AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal)
|
||||
-- percorso da non invertire
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
-- assegno utilizzo faccia
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN)
|
||||
-- imposto angolo 3° asse rot
|
||||
EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, sRot3Ang)
|
||||
-- assegno affondamento
|
||||
EgtSetMachiningParam( MCH_MP.DEPTH, dDepth)
|
||||
-- assegno lato di lavoro
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
-- posizione braccio porta testa
|
||||
if vFace[i].Norm:getX() < 0.018 then
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.NONE)
|
||||
-- assegno lato di lavoro e inversione direzione movimento
|
||||
if vFace[i].Norm:getX() < 0.018 then
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, false)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.RIGHT)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.OPPOSITE)
|
||||
EgtSetMachiningParam( MCH_MP.OFFSR, dSawThick)
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, true)
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
||||
end
|
||||
-- posizione braccio porta testa
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.NONE)
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
@@ -2036,7 +2036,7 @@ local function MakeByCut( Proc, nRawId, b3Raw)
|
||||
end
|
||||
-- altrimenti provo con la sega a catena
|
||||
elseif sSawing then
|
||||
local nCsOk, sCSErr, dThick = AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
local nCsOk, sCsErr, dThick = AddSawings( sSawing, vFace, Proc, nRawId, b3Raw)
|
||||
if nCsOk == 0 then return false, sCsErr end
|
||||
bDone = ( dThick ~= nil)
|
||||
-- se ci sono almeno due facce e lavorato almeno un angolo
|
||||
@@ -2126,7 +2126,8 @@ local function MakeByMill( Proc, nRawId, b3Raw)
|
||||
local bToolInv = ( vtExtr:getZ() < -0.1)
|
||||
local nTool_ID = EgtGetInfo( Proc.Id, 'CNT_DATA', 'i')
|
||||
-- recupero la lavorazione
|
||||
local sMilling = WM.FindMilling( 'FreeContour', nil, nil, nTool_ID, nil, nil, true)
|
||||
local bTipFeed = EgtIf( nTool_ID, false, true)
|
||||
local sMilling = WM.FindMilling( 'FreeContour', nil, nil, nTool_ID, nil, nil, bTipFeed)
|
||||
if not sMilling then
|
||||
local sErr = 'Error : milling not found in library'
|
||||
if nTool_ID then sErr = sErr .. ' (Tool_ID=' .. tostring( nTool_ID) .. ')' end
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
-- 2022/11/15 DS Con lama massima inclinazione 60deg.
|
||||
-- 2022/12/01 Per 2 facce con angolo > 90° implementata lavorazione principale verticale. Se da sopra, aggiunta ripresa del lato inclinato.
|
||||
-- 2022/12/14 Nel caso di 2 facce piccola correzione al modo di ordinare le facce.
|
||||
-- 2023/03/09 Gestito caso riconoscimento errato Stype 3
|
||||
-- 2023/03/09 In MakeMoreFaces aggiunta la possibilità di lavorare le fessure con la lama
|
||||
-- 2023/03/17 In MakeByMill gestito correttamente il caso di Workside destro.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WPL = {}
|
||||
@@ -142,6 +145,26 @@ function WPL.Classify( Proc, b3Raw)
|
||||
bAllowNegativeFace = true
|
||||
end
|
||||
end
|
||||
|
||||
-- conto le adiacenze delle facce
|
||||
local vAdj = {}
|
||||
local nFacesWithMoreThanOneAdj = 0
|
||||
for i = 1, Proc.Fct do
|
||||
-- recupero le adiacenze del loop esterno
|
||||
local vFacAdj = EgtSurfTmFacetAdjacencies( Proc.Id, i - 1)[1]
|
||||
-- le conto
|
||||
local nCount = 0
|
||||
for j = 1, #vFacAdj do
|
||||
if vFacAdj[j] >= 0 then
|
||||
nCount = nCount + 1
|
||||
end
|
||||
end
|
||||
vAdj[i] = nCount
|
||||
if nCount > 1 then
|
||||
nFacesWithMoreThanOneAdj = nFacesWithMoreThanOneAdj + 1
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico se la faccia è lavorabile da sopra o di fianco
|
||||
if ( vtN:getZ() >= WD.NZ_MINA or ( dMinNz < -0.866 and Proc.Fct >= 3 and ( vtN:getZ() > - 0.01 or bAllowNegativeFace))) then
|
||||
Proc.Stype = 1
|
||||
@@ -155,7 +178,7 @@ function WPL.Classify( Proc, b3Raw)
|
||||
Proc.Stype = 2
|
||||
return ( vtN2:getZ() >= WD.NZ_MINA or ( dMinNz < -0.866 and Proc.Fct >= 3 and vtN2:getZ() > - 0.01))
|
||||
-- se tre facce
|
||||
elseif Proc.Fct == 3 then
|
||||
elseif Proc.Fct == 3 and nFacesWithMoreThanOneAdj < 2 then
|
||||
-- verifico se U da sopra
|
||||
-- dati della faccia
|
||||
local nFac2 = EgtIf( nFacInd == 0, 1, 0)
|
||||
@@ -1359,6 +1382,13 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
|
||||
EgtSetMachiningParam( MCH_MP.ENDADDLEN, 0) -- -dMillDiam/2 + dAddLen)
|
||||
EgtSetMachiningParam( MCH_MP.LOTANG, 0)
|
||||
EgtSetMachiningParam( MCH_MP.LOPERP, dSideDist + WD.CUT_SIC)
|
||||
-- setto inversione in base al workside
|
||||
local bIsWorkSideRight = ( EgtGetMachiningParam( MCH_MP.WORKSIDE) == MCH_MILL_WS.RIGHT)
|
||||
local bInvert = false
|
||||
if bIsWorkSideRight then
|
||||
bInvert = true
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.INVERT, bInvert)
|
||||
-- imposto posizione braccio porta testa
|
||||
local nSCC = MCH_SCC.ADIR_ZP
|
||||
if AreSameOrOppositeVectorApprox( vtN, Z_AX()) then
|
||||
@@ -2525,15 +2555,17 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
|
||||
end
|
||||
local vtN = EgtSurfTmFacetNormVersor( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
local _, dH, dV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
local dMaxSlotThicknessForBlade = 25
|
||||
local bIsSmallSlot = ( Proc.Fct == 3 and ( min( dH, dV) < dMaxSlotThicknessForBlade + 10 * GEO.EPS_SMALL) and vtN:getZ() > -0.01)
|
||||
-- se di fianco
|
||||
if not bPckt and Proc.Fct >= 3 and vtN:getZ() < WD.NZ_MINA then
|
||||
if not bPckt and Proc.Fct >= 3 and ( ( vtN:getZ() < WD.NZ_MINA) or bIsSmallSlot) then
|
||||
-- recupero elevazione faccia in feature
|
||||
local dSideElev = WL.GetFaceElevation( Proc.Id, nFacInd)
|
||||
-- se abilitata lavorazione ribasso con fresa di fianco e parametro Q03 abilitato
|
||||
local sMillOnSide, dTMaxDepth, dMaxMat, dDiam = WM.FindMilling( 'SideMill', nil, nil, nil, nil, min( dH, dV), nil, dSideElev)
|
||||
local _, nUseMillOnSide = EvaluateQParam( Proc)
|
||||
-- se ho abilitata lavorazione di fresa di fianco
|
||||
if Proc.Fct >= 3 and sMillOnSide and nUseMillOnSide >= 1 then
|
||||
if Proc.Fct >= 3 and sMillOnSide and nUseMillOnSide >= 1 and not bIsSmallSlot then
|
||||
-- cerco nei parametri utensili la nota di affondamento di fianco SIDEDEPTH
|
||||
local dMaxDepthOnSide = 0
|
||||
local dMillDiam = 0
|
||||
@@ -2575,15 +2607,17 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
|
||||
end
|
||||
else
|
||||
-- fresatura (se definita)
|
||||
local sMilling = WM.FindMilling( 'SideGroove')
|
||||
local sMilling = WM.FindMilling( 'SideGroove', nil, nil, nil, nil, min( dH, dV))
|
||||
-- recupero i dati dell'utensile
|
||||
local dMaxMat = 1000
|
||||
local dMaxDepthOnSide = 0
|
||||
local bIsBlade = false
|
||||
if sMilling and EgtMdbSetCurrMachining( sMilling) then
|
||||
local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID)
|
||||
if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then
|
||||
local dMillDiam = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dMillDiam
|
||||
if ( EgtTdbGetCurrToolParam( MCH_TP.TYPE) & MCH_TF.SAWBLADE) ~= 0 then
|
||||
bIsBlade = EgtTdbGetCurrToolParam( MCH_TP.TYPE) & MCH_TF.SAWBLADE ~= 0
|
||||
if bIsBlade then
|
||||
dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.THICK) or dMaxMat
|
||||
dMaxDepthOnSide = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT)
|
||||
else
|
||||
@@ -2596,12 +2630,12 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
|
||||
end
|
||||
end
|
||||
end
|
||||
if sMilling and dElev < dMaxDepthOnSide and dMaxMat <= min( dH, dV) + 20 * GEO.EPS_SMALL then
|
||||
return MakeSideGrooveByMill( Proc, nFacInd, nRawId, b3Raw, sMilling)
|
||||
-- altrimenti sega a catena
|
||||
else
|
||||
return MakeByChainSaw( Proc, nFacInd, nRawId, b3Raw, dElev, dH, dV)
|
||||
end
|
||||
if sMilling and dElev < dMaxDepthOnSide then
|
||||
return MakeSideGrooveByMill( Proc, nFacInd, nRawId, b3Raw, sMilling)
|
||||
-- altrimenti sega a catena
|
||||
else
|
||||
return MakeByChainSaw( Proc, nFacInd, nRawId, b3Raw, dElev, dH, dV)
|
||||
end
|
||||
end
|
||||
end
|
||||
local nFacet = EgtIf( bPckt or vtN:getZ() >= WD.NZ_MINA, nFacInd, nFacInd2)
|
||||
|
||||
@@ -90,7 +90,7 @@ function WPMK.Make( Proc, nRawId, b3Raw)
|
||||
local b3Tab = EgtGetTableArea()
|
||||
local dMaxZTable = b3Tab:getMax():getZ()
|
||||
local dDeltaZ = dMinZRaw - dMaxZTable
|
||||
local MIN_Z_OFFSET = 100
|
||||
local MIN_Z_OFFSET = 99.9
|
||||
if vtExtr:getZ() < WD.NZ_MINA then
|
||||
if dDeltaZ < MIN_Z_OFFSET - GEO.EPS_SMALL or vtExtr:getZ() <= -0.1 then
|
||||
local sErr = 'Error : Mark from bottom impossible'
|
||||
|
||||
@@ -51,7 +51,7 @@ function WPM.Classify( Proc, b3Raw)
|
||||
local b3Tab = EgtGetTableArea()
|
||||
local dMaxZTable = b3Tab:getMax():getZ()
|
||||
local dDeltaZ = dMinZRaw - dMaxZTable
|
||||
local MIN_Z_OFFSET = 100
|
||||
local MIN_Z_OFFSET = 99.9
|
||||
return EgtIf( dDeltaZ < MIN_Z_OFFSET - GEO.EPS_SMALL, vtN:getZ() > WD.NZ_MINA, vtN:getZ() > -0.1)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- WallExec.lua by Egaltech s.r.l. 2022/05/12
|
||||
-- WallExec.lua by Egaltech s.r.l. 2023/03/06
|
||||
-- Libreria esecuzione lavorazioni per Pareti
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
@@ -75,22 +75,22 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr
|
||||
end
|
||||
if sOrigCorner == 'TL' then
|
||||
nCorner = MCH_CR.TL
|
||||
OrigOnTab = Point3d( 0, b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( 0 + abs( WD.DELTA_X or 0), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
elseif sOrigCorner == 'BL' then
|
||||
nCorner = MCH_CR.BL
|
||||
OrigOnTab = Point3d( 0, abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( 0 + abs( WD.DELTA_X or 0), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
elseif sOrigCorner == 'TR' then
|
||||
nCorner = MCH_CR.TR
|
||||
OrigOnTab = Point3d( b3Tab:getDimX(), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( b3Tab:getDimX() - abs( WD.DELTA_X or 0), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
elseif sOrigCorner == 'BR' then
|
||||
nCorner = MCH_CR.BR
|
||||
OrigOnTab = Point3d( b3Tab:getDimX(), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( b3Tab:getDimX() - abs( WD.DELTA_X or 0), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
elseif sOrigCorner == 'TM' then
|
||||
nCorner = MCH_CR.TR
|
||||
OrigOnTab = Point3d( WD.MID_REF, b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( WD.MID_REF - abs( WD.DELTA_X or 0), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
elseif sOrigCorner == 'BM' then
|
||||
nCorner = MCH_CR.BR
|
||||
OrigOnTab = Point3d( WD.MID_REF, abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( WD.MID_REF - abs( WD.DELTA_X or 0), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
end
|
||||
-- Impostazione dell'attrezzaggio di default
|
||||
EgtImportSetup()
|
||||
|
||||
+76
-75
@@ -56,21 +56,22 @@ local Text = require( 'WProcessText')
|
||||
-- Carico i dati globali
|
||||
local WD = require( 'WallData')
|
||||
|
||||
-------------------------------------------------------------------
|
||||
local function ClassifyFlip( vPartProc, b3Part)
|
||||
|
||||
local FlipFeatureStates = {}
|
||||
local bLapJoints = false
|
||||
|
||||
for nInd = 1, #vPartProc do
|
||||
if LapJoint.Identify( vPartProc[nInd]) then
|
||||
if LapJoint.Identify( vPartProc[nInd]) then
|
||||
-- setto parametro Q
|
||||
if vPartProc[nInd].Prc == 30 then
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q08", 1)
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q08A", 1)
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q08A", 1)
|
||||
else
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q03", 1)
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q03A", 1)
|
||||
end
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q03A", 1)
|
||||
end
|
||||
bLapJoints = true
|
||||
local nFlip0, nFlip1 = LapJoint.FlipClassify(vPartProc[nInd])
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
@@ -80,7 +81,7 @@ local function ClassifyFlip( vPartProc, b3Part)
|
||||
local nFlip0, nFlip1 = Drill.FlipClassify(vPartProc[nInd], b3Part)
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
table.insert( FlipFeatureStates, { Flip0 = nFlip0, Flip1 = nFlip1})
|
||||
end
|
||||
end
|
||||
elseif Cut.Identify( vPartProc[nInd]) then
|
||||
local nFlip0, nFlip1 = Cut.FlipClassify(vPartProc[nInd], b3Part)
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
@@ -90,7 +91,7 @@ local function ClassifyFlip( vPartProc, b3Part)
|
||||
-- setto parametro Q
|
||||
if vPartProc[nInd].Prc == 12 then
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q02", 1)
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q02A", 1)
|
||||
EgtSetInfo( vPartProc[nInd].Id, "Q02A", 1)
|
||||
end
|
||||
local nFlip0, nFlip1 = DoubleCut.FlipClassify(vPartProc[nInd], b3Part)
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
@@ -100,7 +101,7 @@ local function ClassifyFlip( vPartProc, b3Part)
|
||||
local nFlip0, nFlip1 = SawCut.FlipClassify(vPartProc[nInd], b3Part)
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
table.insert( FlipFeatureStates, { Flip0 = nFlip0, Flip1 = nFlip1})
|
||||
end
|
||||
end
|
||||
elseif FreeContour.Identify( vPartProc[nInd]) then
|
||||
local nFlip0, nFlip1 = FreeContour.FlipClassify(vPartProc[nInd], b3Part)
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
@@ -120,19 +121,19 @@ local function ClassifyFlip( vPartProc, b3Part)
|
||||
local nFlip0, nFlip1 = Mark.FlipClassify(vPartProc[nInd], b3Part)
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
table.insert( FlipFeatureStates, { Flip0 = nFlip0, Flip1 = nFlip1})
|
||||
end
|
||||
end
|
||||
elseif Text.Identify( vPartProc[nInd]) then
|
||||
local nFlip0, nFlip1 = Text.FlipClassify(vPartProc[nInd], b3Part)
|
||||
if nFlip0 and nFlip1 and nFlip0 ~= nFlip1 then
|
||||
table.insert( FlipFeatureStates, { Flip0 = nFlip0, Flip1 = nFlip1})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return FlipFeatureStates, bLapJoints
|
||||
|
||||
return FlipFeatureStates, bLapJoints
|
||||
end
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
local function ClassifyRotation( vPartProc)
|
||||
|
||||
local RotateFeatureStates = {}
|
||||
@@ -144,22 +145,21 @@ local function ClassifyRotation( vPartProc)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return RotateFeatureStates
|
||||
return RotateFeatureStates
|
||||
end
|
||||
|
||||
---
|
||||
|
||||
-------------------------------------------------------------------
|
||||
-------------------------------------------------------------------
|
||||
local vPartProc = WE.CollectFeatures( NFAR.PARTID)
|
||||
local b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
local bManualFlip = EgtGetInfo( NFAR.PARTID, "MANUALFLIP", 'b')
|
||||
local bManualRot = EgtGetInfo( NFAR.PARTID, "MANUALROT", 'b')
|
||||
|
||||
-- FLIP
|
||||
|
||||
-- FLIP
|
||||
local FlipFeatureStates, bLapJoints = ClassifyFlip( vPartProc, b3Part)
|
||||
|
||||
if not bManualFlip then
|
||||
local bFlip
|
||||
if not bManualFlip then
|
||||
local bFlip
|
||||
-- analizzo stati flip delle feature
|
||||
local nFlip0Min = 100
|
||||
local nFlip0Cnt = 0
|
||||
@@ -187,16 +187,16 @@ if not bManualFlip then
|
||||
elseif nFlip0Cnt < nFlip1Cnt then
|
||||
bFlip = false
|
||||
elseif bLapJoints then
|
||||
-- se equivalenti ma ci sono lap joints, fisso il flip per non avere problemi con le aree di lavorazione nel nesting
|
||||
bFlip = false
|
||||
-- se equivalenti ma ci sono lap joints, fisso il flip per non avere problemi con le aree di lavorazione nel nesting
|
||||
bFlip = false
|
||||
end
|
||||
elseif nFlip0Min < nFlip1Min then
|
||||
bFlip = true
|
||||
else
|
||||
bFlip = false
|
||||
bFlip = false
|
||||
end
|
||||
|
||||
if bFlip ~= nil then
|
||||
if bFlip ~= nil then
|
||||
-- se una posizione è più conveniente dell'altra setto info nel pezzo
|
||||
EgtSetInfo( NFAR.PARTID, "NestAllowFlip", false)
|
||||
EgtSetInfo( NFAR.PARTID, "NestFlip", bFlip)
|
||||
@@ -206,10 +206,10 @@ if not bManualFlip then
|
||||
|
||||
if bFlip then
|
||||
-- flip pezzo
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), X_AX(), 180, GDB_RT.GLOB)
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), X_AX(), 180, GDB_RT.GLOB)
|
||||
-- modifico le info del pezzo
|
||||
local nPartFlip = EgtGetInfo( NFAR.PARTID, "INVERTED", 'i') or 0
|
||||
local nTotFlip = EgtIf( nPartFlip == 180, 0, 180)
|
||||
local nTotFlip = EgtIf( nPartFlip == 180, 0, 180)
|
||||
EgtSetInfo( NFAR.PARTID, "INVERTED", nTotFlip)
|
||||
EgtSetInfo( NFAR.PARTID, "FLIPROTMODIFIED", 1)
|
||||
end
|
||||
@@ -217,12 +217,12 @@ end
|
||||
|
||||
-- rimuovo parametri Q
|
||||
local b3PartInside = BBox3d( b3Part)
|
||||
b3PartInside:expand( - WD.INSIDE_RAW_TOL)
|
||||
for nInd = 1, #vPartProc do
|
||||
b3PartInside:expand( - ( WD.INSIDE_RAW_TOL or 30))
|
||||
for nInd = 1, #vPartProc do
|
||||
local Proc = vPartProc[nInd]
|
||||
|
||||
if LapJoint.Identify( Proc) then
|
||||
-- cerco la faccia rivolta verso l'alto e la faccia rivolta verso il basso
|
||||
if LapJoint.Identify( Proc) then
|
||||
-- cerco la faccia rivolta verso l'alto e la faccia rivolta verso il basso
|
||||
local nFaceInd = -1
|
||||
local nFaceDownInd = -1
|
||||
for nIdx = 0, Proc.Fct - 1 do
|
||||
@@ -231,8 +231,8 @@ for nInd = 1, #vPartProc do
|
||||
nFaceInd = nIdx
|
||||
elseif vtN:getZ() < - 0.95 then
|
||||
nFaceDownInd = nIdx
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- se è lap joint dall'alto
|
||||
if nFaceInd ~= -1 and nFaceDownInd == -1 then
|
||||
local ptCen = EgtSurfTmFacetCenter( Proc.Id, nFaceInd, GDB_ID.ROOT)
|
||||
@@ -241,11 +241,11 @@ for nInd = 1, #vPartProc do
|
||||
-- resetto parametro Q
|
||||
if Proc.Prc == 30 then
|
||||
EgtRemoveInfo( Proc.Id, "Q08")
|
||||
EgtRemoveInfo( Proc.Id, "Q08A")
|
||||
EgtRemoveInfo( Proc.Id, "Q08A")
|
||||
else
|
||||
EgtRemoveInfo( Proc.Id, "Q03")
|
||||
EgtRemoveInfo( Proc.Id, "Q03A")
|
||||
end
|
||||
EgtRemoveInfo( Proc.Id, "Q03A")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -264,21 +264,22 @@ for nInd = 1, #vPartProc do
|
||||
-- resetto parametro Q
|
||||
if Proc.Prc == 12 then
|
||||
EgtRemoveInfo( Proc.Id, "Q02")
|
||||
EgtRemoveInfo( Proc.Id, "Q02A")
|
||||
EgtRemoveInfo( Proc.Id, "Q02A")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- ROTATION
|
||||
nRotate = 0
|
||||
nRotate = 0
|
||||
|
||||
-- venatura
|
||||
EgtRemoveInfo( NFAR.PARTID, "HasGrainDirection")
|
||||
local bGrain = false
|
||||
local sGrainInfo = EgtGetInfo( NFAR.PARTID, "GRAINDIRECTION", 's')
|
||||
local sGrainInfo = EgtGetInfo( NFAR.PARTID, "GRAINDIRECTION", 's')
|
||||
if sGrainInfo then
|
||||
local sGrainAlign = string.sub( sGrainInfo, 7)
|
||||
local sGrainDir = string.sub( sGrainInfo, 1, 5)
|
||||
@@ -286,21 +287,21 @@ if sGrainInfo then
|
||||
EgtSetInfo( NFAR.PARTID, "HasGrainDirection", 1)
|
||||
bGrain = true
|
||||
-- trovo la rotazione ( a meno di 180°) che deve avere il pezzo per essere allineato con la venatura del grezzo
|
||||
local nGrainRot = 0
|
||||
local nGrainRot = 0
|
||||
if ( sGrainDir == "1,0,0" and not NFAR.RAW_GRAIN_DIR_X) or ( sGrainDir == "0,1,0" and NFAR.RAW_GRAIN_DIR_X) then
|
||||
nGrainRot = 90
|
||||
nGrainRot = 90
|
||||
end
|
||||
|
||||
local nPartRot = EgtGetInfo( NFAR.PARTID, "ROTATED", 'i') or 0
|
||||
if ( nGrainRot == 0 and ( nPartRot == 90 or nPartRot == 270)) or ( nGrainRot == 90 and ( nPartRot == 0 or nPartRot == 180)) then
|
||||
local b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
local b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), Z_AX(), 90, GDB_RT.GLOB)
|
||||
nRotate = 90
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not bManualRot then
|
||||
if not bManualRot then
|
||||
|
||||
local RotateFeatureStates = ClassifyRotation( vPartProc)
|
||||
|
||||
@@ -346,7 +347,7 @@ if not bManualRot then
|
||||
{ Rot = 90, Score = nRot90Min, ScoreCnt = nRot90Cnt},
|
||||
{ Rot = 180, Score = nRot180Min, ScoreCnt = nRot180Cnt},
|
||||
{ Rot = 270, Score = nRot270Min, ScoreCnt = nRot270Cnt}}
|
||||
local nRotateOpt = 0
|
||||
local nRotateOpt = 0
|
||||
if #RotateFeatureStates > 0 then
|
||||
-- calcolo lato con punteggio minore o molteplicita' piu' alta
|
||||
local nRotMax = MinList[1].Rot
|
||||
@@ -359,7 +360,7 @@ if not bManualRot then
|
||||
nScoreCnt = MinList[nInd].ScoreCnt
|
||||
elseif MinList[nInd].Score == nScoreMax then
|
||||
-- se punteggio > 0 conservo quello con molteplicità più alta, se punteggio = 0 conservo quello con molteplicità più bassa
|
||||
if ( nScoreMax ~= 0 and MinList[nInd].ScoreCnt > nScoreCnt) or ( nScoreMax == 0 and MinList[nInd].ScoreCnt < nScoreCnt) then
|
||||
if ( nScoreMax ~= 0 and MinList[nInd].ScoreCnt > nScoreCnt) or ( nScoreMax == 0 and MinList[nInd].ScoreCnt < nScoreCnt) then
|
||||
nRotMax = MinList[nInd].Rot
|
||||
nScoreMax = MinList[nInd].Score
|
||||
nScoreCnt = MinList[nInd].ScoreCnt
|
||||
@@ -369,7 +370,7 @@ if not bManualRot then
|
||||
nRotateOpt = nRotMax
|
||||
else
|
||||
nRotateOpt = 0
|
||||
end
|
||||
end
|
||||
|
||||
local bRotNest = false
|
||||
local nStepRotNest = 0
|
||||
@@ -387,40 +388,40 @@ if not bManualRot then
|
||||
-- altrimenti permetto tutto
|
||||
bRotNest = true
|
||||
nStepRotNest = 90
|
||||
end
|
||||
end
|
||||
|
||||
-- verifico se ci sono fori lungo Y che bloccano la rotazione
|
||||
local bDrillOnY = ( nStepRotNest == 180)
|
||||
local bDrillOnY = ( nStepRotNest == 180)
|
||||
|
||||
local b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
local b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
|
||||
if bGrain then
|
||||
-- se venatura eseguo rotazione solo se è di 180°
|
||||
if nRotateOpt == 180 then
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), Z_AX(), nRotateOpt, GDB_RT.GLOB)
|
||||
if bGrain then
|
||||
-- se venatura eseguo rotazione solo se è di 180°
|
||||
if nRotateOpt == 180 then
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), Z_AX(), nRotateOpt, GDB_RT.GLOB)
|
||||
nRotate = nRotate + nRotateOpt
|
||||
end
|
||||
nStepRotNest = 180
|
||||
end
|
||||
nStepRotNest = 180
|
||||
else
|
||||
-- eseguo rotazione
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), Z_AX(), nRotateOpt, GDB_RT.GLOB)
|
||||
nRotate = nRotate + nRotateOpt
|
||||
end
|
||||
|
||||
-- verifico se rotazione è valida ( pezzo contenuto nel grezzo) solo se no venatura
|
||||
if not bGrain then
|
||||
b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
-- verifico se rotazione è valida ( pezzo contenuto nel grezzo) solo se no venatura
|
||||
if not bGrain then
|
||||
b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
local bValidRotationForRaw = b3Part:getDimX() < WD.MAX_LENGTH and b3Part:getDimY() < WD.MAX_WIDTH
|
||||
local bRotatedIsValid = b3Part:getDimY() < WD.MAX_LENGTH and b3Part:getDimX() < WD.MAX_WIDTH
|
||||
if not bValidRotationForRaw and bRotatedIsValid then
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), Z_AX(), 90, GDB_RT.GLOB)
|
||||
nRotate = nRotate + 90
|
||||
nStepRotNest = 180
|
||||
nRotate = nRotate + 90
|
||||
nStepRotNest = 180
|
||||
end
|
||||
end
|
||||
|
||||
-- se no venatura e non ci sono fori verifico se il pezzo cade
|
||||
if not bGrain and not bDrillOnY then
|
||||
if not bGrain and not bDrillOnY then
|
||||
b3Part = EgtGetBBoxGlob( NFAR.PARTID, GDB_BB.STANDARD)
|
||||
local bValidRotation = b3Part:getDimX() > ( WD.INTRULLI or 1200)
|
||||
-- verifico se ruotata resta valida
|
||||
@@ -428,22 +429,22 @@ if not bManualRot then
|
||||
-- se non è valida ma ruotato lo sarebbe, ruoto
|
||||
if not bValidRotation and bRotatedIsValid and nStepRotNest ~= 180 then
|
||||
EgtRotate( NFAR.PARTID, b3Part:getCenter(), Z_AX(), 90, GDB_RT.GLOB)
|
||||
nRotate = nRotate + 90
|
||||
nStepRotNest = 180
|
||||
nRotate = nRotate + 90
|
||||
nStepRotNest = 180
|
||||
elseif bValidRotation and not bRotatedIsValid then
|
||||
-- se fosse valida ma la sua ruotata no, allora blocco lo step nella rotazione del nesting
|
||||
nStepRotNest = 180
|
||||
end
|
||||
nStepRotNest = 180
|
||||
end
|
||||
end
|
||||
|
||||
-- setto info nel pezzo
|
||||
-- setto info nel pezzo
|
||||
if nRotate > 0 then
|
||||
local nPartRot = EgtGetInfo( NFAR.PARTID, "ROTATED", 'i') or 0
|
||||
local nTotRot = nPartRot - nRotate
|
||||
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
|
||||
EgtSetInfo( NFAR.PARTID, "ROTATED", nTotRot)
|
||||
EgtSetInfo( NFAR.PARTID, "ROTATED", nTotRot)
|
||||
EgtSetInfo( NFAR.PARTID, "FLIPROTMODIFIED", 1)
|
||||
end
|
||||
end
|
||||
|
||||
EgtSetInfo( NFAR.PARTID, "NestStepRot", nStepRotNest)
|
||||
EgtSetInfo( NFAR.PARTID, "NestRot", nRotate)
|
||||
@@ -451,4 +452,4 @@ if not bManualRot then
|
||||
end
|
||||
|
||||
|
||||
NFAR.ERR = 0
|
||||
NFAR.ERR = 0
|
||||
+360
-545
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
||||
-- Version.lua by Egalware s.r.l. 2023/03/27
|
||||
-- Gestione della versione di Wall
|
||||
|
||||
NAME = 'Wall'
|
||||
VERSION = '2.5d1'
|
||||
MIN_EXE = '2.5b3'
|
||||
Reference in New Issue
Block a user