Compare commits
87 Commits
2.5l1
...
Ticket#2136
| Author | SHA1 | Date | |
|---|---|---|---|
| a53a6f3e63 | |||
| dbf17d942c | |||
| 72020a8874 | |||
| 5d422b6edc | |||
| abc61f53ba | |||
| 32fdaf5096 | |||
| 2ea09e3ebc | |||
| ce8072ad1b | |||
| 88fd8d525c | |||
| 01c5037d77 | |||
| 34e7befc10 | |||
| 846d96b967 | |||
| cfd3379c98 | |||
| 6f06755539 | |||
| a0af959c9f | |||
| f397b66e26 | |||
| 31782b904e | |||
| 93fe741f84 | |||
| ba2158a909 | |||
| 6e0758218c | |||
| 401108ce56 | |||
| b7973541e4 | |||
| bf1e9065ae | |||
| 1faa9e2075 | |||
| ceef5b78f3 | |||
| 66e2bd6e45 | |||
| 0508f12673 | |||
| 2bbfe1f3ce | |||
| 4a67fdeeff | |||
| 1c86ed925a | |||
| 3f8540b3df | |||
| c92327641c | |||
| 499e49f4f6 | |||
| 099e81cbfd | |||
| 0f38de8f58 | |||
| d5e30baf06 | |||
| 4531434e79 | |||
| e56074f662 | |||
| 5866566ebe | |||
| c4272d917e | |||
| 52a10eeb9f | |||
| 1d5689c007 | |||
| f402590534 | |||
| b3289195f4 | |||
| f0a07554b2 | |||
| 1ed45a8569 | |||
| 43482f5a6d | |||
| e66831d223 | |||
| 548bc7bc6c | |||
| 3f7a2c016d | |||
| 3763338bb3 | |||
| 767acf2579 | |||
| 4da70c0d3c | |||
| d939e07fd3 | |||
| 67bf77fe19 | |||
| 384d72eb13 | |||
| 22541cfc9b | |||
| 1dac9716e7 | |||
| 68464cf5b1 | |||
| 78bf456326 | |||
| cb4d597369 | |||
| 7bcd159db0 | |||
| abed970b7a | |||
| 96760ac284 | |||
| 392040f8d6 | |||
| 56dc61a9d6 | |||
| ea5e62222c | |||
| 3b098e1541 | |||
| 354cbe85b9 | |||
| 25779abb81 | |||
| 1a4baaf1be | |||
| 20fccb24af | |||
| aa94102b28 | |||
| a2d89cd98d | |||
| 6e2e976675 | |||
| db5ae17d63 | |||
| 3e9da2724b | |||
| a1946a4a41 | |||
| 87cb7480be | |||
| 9563735770 | |||
| d1218915f7 | |||
| 19c7a54aa7 | |||
| 7bbed3cb8a | |||
| 25f599a1fa | |||
| c0970c52ff | |||
| 61590f611d | |||
| f8011493f2 |
@@ -20,5 +20,4 @@
|
||||
/bin/LuaLibs/*.lua
|
||||
/bin/Images/*.png
|
||||
.vscode/settings.json
|
||||
bin/LuaLibs/.placeholder
|
||||
bin/Images/.placeholder
|
||||
|
||||
+4
-4
@@ -24,14 +24,14 @@ variables:
|
||||
$FileList = Get-ChildItem("*.lua")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
lua54 -o bin\$FileName $FileName
|
||||
echo "lua54 -o bin\$FileName $FileName"
|
||||
lua54 -o bin\$FileName -s $FileName
|
||||
echo "lua54 -o bin\$FileName -s $FileName"
|
||||
}
|
||||
$FileList = Get-ChildItem("LuaLibs\*.lua")
|
||||
ForEach ($File in $FileList) {
|
||||
$FileName = Split-Path $File -leaf
|
||||
lua54 -o bin\LuaLibs\$FileName LuaLibs\$FileName
|
||||
echo "lua54 -o bin\LuaLibs\$FileName LuaLibs\$FileName"
|
||||
lua54 -o bin\LuaLibs\$FileName -s LuaLibs\$FileName
|
||||
echo "lua54 -o bin\LuaLibs\$FileName -s LuaLibs\$FileName"
|
||||
}
|
||||
|
||||
# helper copia SORGENTI verso cartella di rete X:\ dei SORGENTI
|
||||
|
||||
+19
-4
@@ -14,6 +14,7 @@
|
||||
-- 2022/05/02 Consentito allargamento area disponibile per grezzi su tavola da WallData.
|
||||
-- 2023/04/09 Aggiunta gestione flag per taglio feature con outline (da WD.CUT_WITH_OUTLINE).
|
||||
-- 2023/04/17 Aggiunta gestione flag per rotazione grezzo di 180deg (da WD.RAWPART_ROT).
|
||||
-- 2024/02/20 Tolleranza su altezza pannello in grezzo portata a 0.1 mm.
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
@@ -232,6 +233,9 @@ if bToProcess then
|
||||
end
|
||||
else
|
||||
dExtraW = 10
|
||||
if WD.DEFAULT_RAW_NO_EXTRA_WIDTH then
|
||||
dExtraW = 0
|
||||
end
|
||||
dRawW = dRawW + dExtraW
|
||||
end
|
||||
end
|
||||
@@ -276,6 +280,11 @@ if bToProcess then
|
||||
-- Ne recupero la posizione
|
||||
for i = 1, #vWall do
|
||||
local PosX = EgtGetInfo( vWall[i].Id, 'POSX', 'd')
|
||||
local PosZ = EgtGetInfo( vWall[i].Id, 'POSZ', 'd')
|
||||
if bProj and WD.DEFAULT_RAW_NO_EXTRA_WIDTH and #vWall == 1 then
|
||||
PosX = 0
|
||||
PosZ = 0
|
||||
end
|
||||
vWall[i].PosX = PosX + min( dExtraL, 1200)
|
||||
if WD.USE_POSY then
|
||||
local PosY = EgtGetInfo( vWall[i].Id, 'POSY', 'd')
|
||||
@@ -283,7 +292,6 @@ if bToProcess then
|
||||
else
|
||||
vWall[i].PosY = 0
|
||||
end
|
||||
local PosZ = EgtGetInfo( vWall[i].Id, 'POSZ', 'd')
|
||||
vWall[i].PosZ = PosZ + dExtraW / 2
|
||||
end
|
||||
|
||||
@@ -348,7 +356,7 @@ if bToProcess then
|
||||
local vWallErr = {}
|
||||
for i = 2, #vWall do
|
||||
local dDimH = vWall[i].Box:getDimZ() + vWall[i].PosY
|
||||
if abs( dDimH - dRawH) > 10 * GEO.EPS_SMALL then
|
||||
if abs( dDimH - dRawH) > 100 * GEO.EPS_SMALL then
|
||||
table.insert( vWallErr, i)
|
||||
end
|
||||
end
|
||||
@@ -364,6 +372,12 @@ if bToProcess then
|
||||
PostErrView( WALL.ERR, WALL.MSG)
|
||||
return
|
||||
end
|
||||
|
||||
-- se impostato flag apposito, in vista il grezzo è uguale al pezzo
|
||||
if bProj and WD.DEFAULT_RAW_NO_EXTRA_WIDTH and #vWall == 1 then
|
||||
dRawL = vWall[1].Box:getDimX()
|
||||
dRawW = vWall[1].Box:getDimY()
|
||||
end
|
||||
|
||||
-- Verifico dimensioni massime grezzo
|
||||
if dRawL > WD.MAX_LENGTH + 10 * GEO.EPS_SMALL or dRawW > WD.MAX_WIDTH + 10 * GEO.EPS_SMALL or dRawH > WD.MAX_HEIGHT + 10 * GEO.EPS_SMALL then
|
||||
@@ -497,7 +511,7 @@ else
|
||||
-- Passo in modalità lavora
|
||||
EgtSetCurrMachGroup( EgtGetLastMachGroup())
|
||||
-- Se necessario eseguo aggiornamento con ricalcolo delle lavorazioni
|
||||
if bToRecalc then
|
||||
if bToRecalc or WALL.FLAG == 3 or WALL.FLAG == 4 then
|
||||
EgtOutLog( ' +++ Recalculating all dispositions and machinings >>>')
|
||||
EgtImportSetup()
|
||||
EgtApplyAllMachinings()
|
||||
@@ -561,7 +575,8 @@ if ( WALL.FLAG == 0 and ( bToProcess or bToRecalc)) or WALL.FLAG == 3 or WALL.F
|
||||
end
|
||||
|
||||
-- *** Genero programma CN *** ( se richiesto)
|
||||
if WALL.FLAG == 0 or WALL.FLAG == 4 then
|
||||
local bIsGenerationEnabled = ( EgtVerifyKeyOption( 110) == false)
|
||||
if bIsGenerationEnabled and ( WALL.FLAG == 0 or WALL.FLAG == 4) then
|
||||
EgtOutLog( ' +++ Generating NC part program >>>')
|
||||
local sInfo = 'EgtCAM5' .. EgtIf( EgtIs64bit(), ' 64bit', '')
|
||||
if EgtGetExeVersion then
|
||||
|
||||
+11
-6
@@ -275,11 +275,15 @@ if bToProcess then
|
||||
dMinY = ( WD.MINRAWY_HOR_DRILL or 2800)
|
||||
end
|
||||
-- Assegno dimensioni del pannello
|
||||
dPanelLen = vWall[1].Box:getDimX() + 20
|
||||
dPanelWidth = math.max( vWall[1].Box:getDimY() + 20, dMinY)
|
||||
local dExtraW = 10
|
||||
if WD.DEFAULT_RAW_NO_EXTRA_WIDTH then
|
||||
dExtraW = 0
|
||||
end
|
||||
dPanelLen = vWall[1].Box:getDimX() + 2 * dExtraW
|
||||
dPanelWidth = math.max( vWall[1].Box:getDimY() + 2 * dExtraW, dMinY)
|
||||
-- Assegno posizione prima ed unica parete
|
||||
vWall[1].PosX = 10
|
||||
vWall[1].PosZ = 10
|
||||
vWall[1].PosX = dExtraW
|
||||
vWall[1].PosZ = dExtraW
|
||||
vWall[1].Rot = 0
|
||||
vWall[1].Flip = 0
|
||||
end
|
||||
@@ -545,7 +549,7 @@ else
|
||||
-- Passo in modalità lavora
|
||||
EgtSetCurrMachGroup( EgtGetLastMachGroup())
|
||||
-- Se necessario eseguo aggiornamento con setup corrente e ricalcolo delle lavorazioni
|
||||
if bToRecalc then
|
||||
if bToRecalc or WALL.FLAG == 3 or WALL.FLAG == 4 then
|
||||
EgtOutLog( ' +++ Recalculating all dispositions and machinings >>>')
|
||||
EgtImportSetup()
|
||||
EgtApplyAllMachinings()
|
||||
@@ -609,7 +613,8 @@ if ( WALL.FLAG == 0 and ( bToProcess or bToRecalc)) or WALL.FLAG == 3 or WALL.F
|
||||
end
|
||||
|
||||
-- *** Genero programma CN *** ( se richiesto)
|
||||
if WALL.FLAG == 0 or WALL.FLAG == 4 then
|
||||
local bIsGenerationEnabled = ( EgtVerifyKeyOption( 110) == false)
|
||||
if bIsGenerationEnabled and ( WALL.FLAG == 0 or WALL.FLAG == 4) then
|
||||
EgtOutLog( ' +++ Generating NC part program >>>')
|
||||
local sInfo = 'EgtCAM5' .. EgtIf( EgtIs64bit(), ' 64bit', '')
|
||||
if EgtGetExeVersion then
|
||||
|
||||
+25
-25
@@ -1,30 +1,30 @@
|
||||
|
||||
REM Compilazione degli script Wall Egaltech 2023.09.26
|
||||
REM Compilazione degli script Wall Egaltech 2024.03.24
|
||||
REM Per togliere info di debug aggiungere flag -s prima del nome del file di input
|
||||
|
||||
REM Compilazione 32 e 64 bit
|
||||
|
||||
\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\WFeatureTopology.lua LuaLibs\WFeatureTopology.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
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WallExec.lua -s LuaLibs\WallExec.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WallLib.lua -s LuaLibs\WallLib.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WMachiningLib.lua -s LuaLibs\WMachiningLib.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessCut.lua -s LuaLibs\WProcessCut.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessDoubleCut.lua -s LuaLibs\WProcessDoubleCut.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessDrill.lua -s LuaLibs\WProcessDrill.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessDtMortise.lua -s LuaLibs\WProcessDtMortise.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WFeatureTopology.lua -s LuaLibs\WFeatureTopology.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessFreeContour.lua -s LuaLibs\WProcessFreeContour.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessLapJoint.lua -s LuaLibs\WProcessLapJoint.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessMark.lua -s LuaLibs\WProcessMark.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessMortise.lua -s LuaLibs\WProcessMortise.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessSawCut.lua -s LuaLibs\WProcessSawCut.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessText.lua -s LuaLibs\WProcessText.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\LuaLibs\WProcessVariant.lua -s LuaLibs\WProcessVariant.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\BatchProcess.lua -s BatchProcess.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\BatchProcessNew.lua -s BatchProcessNew.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\GetWallData.lua -s GetWallData.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\NestFlipAndRotate.lua -s NestFlipAndRotate.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\NestProcess.lua -s NestProcess.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Overturn.lua -s Overturn.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Process.lua -s Process.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Rotate.lua -s Rotate.lua
|
||||
\EgtProg\Dll32\luac54 -o bin\Version.lua -s Version.lua
|
||||
|
||||
@@ -192,6 +192,7 @@ function WFeatureTopology.Classify( Proc, b3Raw)
|
||||
sFamily = 'DRILLING'
|
||||
elseif Proc.Fct == 1 and bIsAnyDimensionLongAsPart and bIsFeatureCuttingEntireSection then
|
||||
sFamily = 'Cut'
|
||||
bIsThrough = true
|
||||
elseif Proc.Fct == 1 and bIsAnyDimensionLongAsPart then
|
||||
sFamily = 'Bevel'
|
||||
bIsThrough = true
|
||||
|
||||
@@ -66,9 +66,8 @@ function WPDC.Make( Proc, nRawId, b3Raw)
|
||||
-- se singola faccia, passo a quella lavorazione
|
||||
if Proc.Fct == 1 then return Cut.Make( Proc, nRawId, b3Raw) end
|
||||
-- altrimenti due facce e passo alla LapJoint
|
||||
local LapProc = { PartId = Proc.PartId, Id = Proc.Id, Grp = Proc.Grp + 2, Prc = Proc.Prc, Box = Proc.Box, Fct = Proc.Fct, Flg = Proc.Flg,
|
||||
Diam = Proc.Diam, Fcs = Proc.Fcs, Fce = Proc.Fce, CutId = Proc.CutId, TaskId = Proc.TaskId}
|
||||
return LapJoint.Make( LapProc, nRawId, b3Raw)
|
||||
Proc.Grp = Proc.Grp + 2
|
||||
return LapJoint.Make( Proc, nRawId, b3Raw)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
+39
-19
@@ -324,32 +324,41 @@ function WPD.Make( Proc, nRawId, b3Raw)
|
||||
local bAngledContourDrill = false
|
||||
local nAngledContourDrillId = GDB_ID.NULL
|
||||
local dReduceDepth = 0
|
||||
local bUseTabs = false
|
||||
-- se trovata svuotatura, verifico se richiesta invece contornatura
|
||||
if nType == 'Pocket' then
|
||||
-- recupero eventuale flag per fare sola contornatura
|
||||
local nContourOnly = ( EgtGetInfo( Proc.Id, sContourOnly, 'i') or 0)
|
||||
if nContourOnly == 1 then
|
||||
-- imposto riduzione profondita' per evitare distacco pezzo interno
|
||||
dReduceDepth = 5
|
||||
-- se inclinato e passante
|
||||
if abs( vtExtr:getZ()) >= WD.DRILL_VZ_MIN and abs( vtExtr:getZ()) < 0.999 and Proc.Fcs > 0 and Proc.Fce > 0 then
|
||||
-- gruppo ausiliario per preforo
|
||||
local nAddGrpId = WL.GetAddGroup( Proc.PartId)
|
||||
-- ricavo contorno inferiore della superficie
|
||||
local nAngledCircleId, nAngledCircleCnt = EgtExtractSurfTmLoops( Proc.Id, nAddGrpId)
|
||||
local dMinZ = 10000
|
||||
local nMinCircleId = GDB_ID.NULL
|
||||
for Circleindex = 1, nAngledCircleCnt do
|
||||
local b3Circle = EgtGetBBoxGlob( nAngledCircleId + Circleindex -1, GDB_BB.EXACT)
|
||||
if b3Circle:getMin():getZ() < dMinZ then
|
||||
nMinCircleId = nAngledCircleId + Circleindex -1
|
||||
-- se passante
|
||||
if Proc.Fcs > 0 and Proc.Fce > 0 then
|
||||
-- se inclinato
|
||||
if abs( vtExtr:getZ()) >= WD.DRILL_VZ_MIN and abs( vtExtr:getZ()) < 0.999 then
|
||||
-- gruppo ausiliario per preforo
|
||||
local nAddGrpId = WL.GetAddGroup( Proc.PartId)
|
||||
-- ricavo contorno inferiore della superficie
|
||||
local nAngledCircleId, nAngledCircleCnt = EgtExtractSurfTmLoops( Proc.Id, nAddGrpId)
|
||||
local dMinZ = 10000
|
||||
local nMinCircleId = GDB_ID.NULL
|
||||
for Circleindex = 1, nAngledCircleCnt do
|
||||
local b3Circle = EgtGetBBoxGlob( nAngledCircleId + Circleindex -1, GDB_BB.EXACT)
|
||||
if b3Circle:getMin():getZ() < dMinZ then
|
||||
nMinCircleId = nAngledCircleId + Circleindex -1
|
||||
end
|
||||
end
|
||||
-- estrudo
|
||||
EgtModifyCurveExtrusion( nMinCircleId, vtExtr, GDB_RT.GLOB)
|
||||
EgtModifyCurveThickness( nMinCircleId, dLen)
|
||||
bAngledContourDrill = true
|
||||
nAngledContourDrillId = nMinCircleId
|
||||
-- se non inclinato e abbastanza grande uso i tab
|
||||
-- TODO se si risolve il problema dei tabs non funzionanti sotto ai 200 mm rimuovere il check sul diametro
|
||||
elseif dDiam > 100 - 10 * GEO.EPS_SMALL then
|
||||
bUseTabs = true
|
||||
-- se non inclinato e piccolo non arrivo sul fondo
|
||||
else
|
||||
dReduceDepth = 5
|
||||
end
|
||||
-- estrudo
|
||||
EgtModifyCurveExtrusion( nMinCircleId, vtExtr, GDB_RT.GLOB)
|
||||
EgtModifyCurveThickness( nMinCircleId, dLen)
|
||||
bAngledContourDrill = true
|
||||
nAngledContourDrillId = nMinCircleId
|
||||
end
|
||||
sDrilling = WM.FindMilling( 'FreeContour', dLen, nil, nil, nil, nil, true)
|
||||
if sDrilling then
|
||||
@@ -515,6 +524,17 @@ function WPD.Make( Proc, nRawId, b3Raw)
|
||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'MirrorAx', Proc.MirrorAx)
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
||||
if bUseTabs then
|
||||
local dStep = EgtGetMachiningParam( MCH_MP.STEP)
|
||||
EgtSetMachiningParam( MCH_MP.STEPTYPE, MCH_MILL_ST.ONEWAY)
|
||||
EgtSetMachiningParam( MCH_MP.LEAVETAB, true)
|
||||
EgtSetMachiningParam( MCH_MP.TABHEIGHT, EgtClamp( dStep, 0.15 * dDepth, 0.25 * dDepth ))
|
||||
EgtSetMachiningParam( MCH_MP.TABLEN, EgtClamp( 2 * dDiamT, 0.1 * dDiam, 0.2 * dDiam ))
|
||||
EgtSetMachiningParam( MCH_MP.TABANGLE, 45)
|
||||
EgtSetMachiningParam( MCH_MP.TABDIST, 100)
|
||||
EgtSetMachiningParam( MCH_MP.TABMIN, 3)
|
||||
EgtSetMachiningParam( MCH_MP.TABMAX, 3)
|
||||
end
|
||||
-- eseguo
|
||||
if not EgtApplyMachining( true, false) then
|
||||
local _, sErr = EgtGetLastMachMgrError()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2023/10/02
|
||||
-- ProcessFreeContour.lua by Egaltech s.r.l. 2024/03/24
|
||||
-- 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.
|
||||
@@ -28,6 +28,7 @@
|
||||
-- 2023/11/14 Spostamento di alcune funzioni in WallLib.
|
||||
-- Aggiunta dei FreeContour in doppio.
|
||||
-- 2023/12/13 In MakeByPocket aggiunta la possibilità di svuotare tasche passanti.
|
||||
-- 2024/03/24 Sostituite funzioni di Collision Detection (EgtCDe*) con quelle di verifica interferenza (EgtTest*).
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WPF = {}
|
||||
@@ -699,18 +700,17 @@ end
|
||||
---------------------------------------------------------------------
|
||||
local function CalcInterference( nNewProc, vtExtr, ptCentr, dDiam1, dDiam2,
|
||||
dTall1, dTall2, dDiam3, dTall3)
|
||||
|
||||
local ptCentrGrid1 = ptCentr + ( vtExtr * 0.01)
|
||||
local frOriTool = Frame3d( ptCentrGrid1, vtExtr)
|
||||
local bColl1 = EgtCDeConeSolid( frOriTool, dDiam1/2, dDiam2/2, dTall1, nNewProc, 0, GDB_RT.GLOB)
|
||||
local bColl1 = EgtTestConeSurface( frOriTool, dDiam1/2, dDiam2/2, dTall1, nNewProc, 0, GDB_RT.GLOB)
|
||||
if bColl1 then return true end
|
||||
local ptCentrGrid2 = ptCentr + ( vtExtr * ( dTall1 + 0.01))
|
||||
frOriTool = Frame3d( ptCentrGrid2, vtExtr)
|
||||
local bColl2 = EgtCDeCylSolid( frOriTool, dDiam2/2, (dTall2-dTall1), nNewProc, 0, GDB_RT.GLOB)
|
||||
local bColl2 = EgtTestCylSurface( frOriTool, dDiam2/2, (dTall2-dTall1), nNewProc, 0, GDB_RT.GLOB)
|
||||
if bColl2 then return true end
|
||||
local ptCentrGrid3 = ptCentr + ( vtExtr * ( dTall2 + 0.01))
|
||||
frOriTool = Frame3d( ptCentrGrid3, vtExtr)
|
||||
local bColl3 = EgtCDeCylSolid( frOriTool, dDiam3/2, (dTall3-dTall2), nNewProc, 0, GDB_RT.GLOB)
|
||||
local bColl3 = EgtTestCylSurface( frOriTool, dDiam3/2, (dTall3-dTall2), nNewProc, 0, GDB_RT.GLOB)
|
||||
if bColl3 then return true end
|
||||
-- restituisco risultato controllo collisioni
|
||||
return false
|
||||
@@ -1486,9 +1486,11 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd
|
||||
end
|
||||
--scrivo nell'operazione il vettore somma delle normali alle superfici che servirà per il doppio
|
||||
local vtNSum = Vector3d( 0, 0, 0)
|
||||
for iGeom = 1, #vGeom do
|
||||
local nFace = vGeom[iGeom][2]
|
||||
vtNSum = vtNSum + Proc.Face[ nFace + 1].VtN
|
||||
if Proc.Face and #Proc.Face > 0 then
|
||||
for iGeom = 1, #vGeom do
|
||||
local nFace = vGeom[iGeom][2]
|
||||
vtNSum = vtNSum + Proc.Face[ nFace + 1].VtN
|
||||
end
|
||||
end
|
||||
EgtSetInfo( nMchId or GDB_ID.NULL, 'NORM_SUM', vtNSum)
|
||||
-- eseguo
|
||||
@@ -2406,7 +2408,7 @@ local function MakeByPocket( Proc, nRawId, b3Raw)
|
||||
local nAddedBottomSurface = EgtSurfTmByFlatContour( nAddGrpId, nBottomLoopId)
|
||||
local vtNAddedBottomSurface = EgtSurfTmFacetNormVersor( nAddedBottomSurface, 0)
|
||||
if AreOppositeVectorApprox( vtNAddedBottomSurface, Z_AX()) then EgtInvertSurf( nAddedBottomSurface) end
|
||||
nProcTmWithAddedBottomSurfaceId = EgtSurfTmBySewing( nAddGrpId, { nAddedBottomSurface, Proc.Id})
|
||||
nProcTmWithAddedBottomSurfaceId = EgtSurfTmBySewing( nAddGrpId, { nAddedBottomSurface, Proc.Id}, false)
|
||||
if nProcTmWithAddedBottomSurfaceId then
|
||||
-- ricerco la faccia di fondo della trimesh (gli id potrebbero essere cambiati)
|
||||
for i = 1, Proc.Fct do
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
-- 2023/11/14 Aggiunta tasche in doppio.
|
||||
-- Miglioramenti sostanziali nella gestione delle tasche.
|
||||
-- 2023/11/16 Fresature a salire estese a groove cieche.
|
||||
-- 2024/02/20 Piccola correzione ai casi in cui si utilizza il SIDESTEP.
|
||||
-- 2024/08/09 In MakeByMill, se fresa Side trovata ma non applicabile, si considera come se non trovata
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WPL = {}
|
||||
@@ -1217,7 +1219,7 @@ local function MakeByChainSaw( Proc, nFacet, nRawId, b3Raw, dElev, dH, dV)
|
||||
local sStartAngs
|
||||
if WD.GetChainSawStartAngs then
|
||||
local vtN2 = EgtSurfTmFacetNormVersor( Proc.Id, nFacAdj, GDB_ID.ROOT)
|
||||
sStartAngs = WD.GetChainSawStartAngs( vtN2)
|
||||
sStartAngs = WD.GetChainSawStartAngs( vtN2, vtN, ptC)
|
||||
end
|
||||
-- Lati chiusi
|
||||
local bOpenStart = false
|
||||
@@ -1350,7 +1352,7 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
|
||||
if not sMilling then
|
||||
local sErr = 'Error : Side not found in library'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
return false, sErr, true
|
||||
end
|
||||
-- recupero i dati dell'utensile
|
||||
local dMillDiam = 20
|
||||
@@ -1371,13 +1373,13 @@ local function MakeByMill( Proc, nFacet, nOthFac, nRawId, b3Raw, dSideDist)
|
||||
if dMillDiam < dDiam or dMaxDepth < dElev then
|
||||
local sErr = 'Error : Side Elevation too big'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
return false, sErr, true
|
||||
end
|
||||
local dMillExtra = dMillTotLen - dMillLen
|
||||
if Proc.Box:getMin():getZ() - dMillExtra < b3Raw:getMin():getZ() - 10 * GEO.EPS_SMALL then
|
||||
local sErr = 'Error : Tool collide with table'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
return false, sErr, true
|
||||
end
|
||||
-- inserisco la lavorazione di contornatura
|
||||
local sName = 'Mill_' .. ( EgtGetName( Proc.Id) or tostring( Proc.Id))
|
||||
@@ -1980,7 +1982,7 @@ local function MakeSideGrooveByMill( Proc, nFacet, nRawId, b3Raw, sCustomMach, d
|
||||
local dStepOri
|
||||
if not bExcludeSideMill then
|
||||
local nSideStep = 1
|
||||
if dSideStep > 0 and not ( bEnablePreMill or bAsEnablePreMill) and nModifyLeadInOut < 1 then
|
||||
if dSideStep > 0 and not ( bEnablePreMill or bAsEnablePreMill) then
|
||||
nSideStep = ceil( dElev / dSideStep)
|
||||
dSideStep = max( dElev / nSideStep, 0)
|
||||
end
|
||||
@@ -2754,7 +2756,10 @@ local function MakeTwoFaces( Proc, nRawId, b3Raw)
|
||||
bLikeAsMakeFirstGroove = false
|
||||
return MakeSideGrooveByMill( Proc, nFacetVert, nRawId, b3Raw, EgtIf( bEnableMillOnSide and dMaxDepthOnSide, sMillOnSide, nil), dMaxDepthOnSide, bMakeFirstGroove, bMachFromDn, dAng, bLikeAsMakeFirstGroove, nil, nil, bDoubleMillOnSide)
|
||||
else
|
||||
local bOk, sErr = MakeByMill( Proc, nFacet, 1 - nFacet, nRawId, b3Raw, dSideDist)
|
||||
local bOk, sErr, bSideMachiningNotFound = MakeByMill( Proc, nFacet, 1 - nFacet, nRawId, b3Raw, dSideDist)
|
||||
if not bOk and bSideMachiningNotFound then
|
||||
bOk, sErr = MakeByPocketing( Proc, nFacet, nRawId, b3Raw)
|
||||
end
|
||||
-- se angolo ottuso riprendo il lato quasi verticale
|
||||
if bOk and dAng and dAng > -90 + 10 * GEO.EPS_SMALL then
|
||||
local bOk2, sErr2 = MakeSideGrooveByMill( Proc, nFacetVert, nRawId, b3Raw, EgtIf( bEnableMillOnSide and dMaxDepthOnSide, sMillOnSide, nil), dMaxDepthOnSide, bMakeFirstGroove, bMachFromDn, dAng, false, nil, true)
|
||||
@@ -2858,8 +2863,8 @@ 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)
|
||||
local dMaxSlotThicknessForBlade = 19
|
||||
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) or bIsSmallSlot) then
|
||||
-- recupero elevazione faccia in feature
|
||||
@@ -2921,7 +2926,7 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
|
||||
end
|
||||
else
|
||||
-- fresatura (se definita); se disponibile, cerco di usare un utensile che non lavori al limite della capacità di sottosquadro
|
||||
local dSideElevMultiplier = 1.2
|
||||
local dSideElevMultiplier = 1.1
|
||||
local sMilling = WM.FindMilling( 'SideGroove', nil, nil, nil, nil, min( dH, dV), nil, dSideElevMultiplier * dSideElev)
|
||||
-- se non ho trovato un utensile un po' più grande del sottosquadro richiesto, passo alla ricerca standard
|
||||
if not sMilling then
|
||||
|
||||
@@ -29,7 +29,11 @@ function WPSC.Classify( Proc, b3Raw)
|
||||
if not AuxId then return false end
|
||||
AuxId = AuxId + Proc.Id
|
||||
local vtDir = EgtSV( AuxId, GDB_ID.ROOT)
|
||||
return ( vtDir:getZ() > 0.5)
|
||||
local vtDirZ = vtDir:getZ()
|
||||
if Proc.IsThrough then
|
||||
vtDirZ = abs( vtDir:getZ())
|
||||
end
|
||||
return ( vtDirZ > 0.5)
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
+28
-13
@@ -1,4 +1,4 @@
|
||||
-- WallExec.lua by Egaltech s.r.l. 2023/10/16
|
||||
-- WallExec.lua by Egaltech s.r.l. 2024/02/20
|
||||
-- Libreria esecuzione lavorazioni per Pareti
|
||||
-- 2023/05/25 Aggiunto ordinamento in base a priorità da btl.
|
||||
-- 2023/06/07 Nel caso di outline con priorità aggiunta la rimozione degli sfridi nella lavorazione successiva.
|
||||
@@ -8,6 +8,8 @@
|
||||
-- 2023/11/14 Modifiche sostanziali per l'aggiunta delle lavorazioni in doppio.
|
||||
-- In Collect aggiunto il recupero preliminare di varie informazioni sulla feature.
|
||||
-- 2023/12/11 In ClassifyTopology si passa ora anche l'Id del grezzo (allineamento Topology con Beam).
|
||||
-- 2024/02/20 Aggiunta gestione DeltaX/Y/Z del pannello dall'origine da BTL.
|
||||
-- 2024/08/30 Aggiunta nota altezza sottopezzo, per pareti a layer
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WallExec = {}
|
||||
@@ -80,33 +82,43 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr
|
||||
local OrigOnTab
|
||||
local nCorner
|
||||
local sOrigCorner = WD.ORIG_CORNER or 'BR'
|
||||
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL
|
||||
if WD.GetOrigCorner then
|
||||
sOrigCorner = WD.GetOrigCorner( EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'REFPOS', 'i') or 0)
|
||||
end
|
||||
sOrigCorner = WD.GetOrigCorner( EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 0)
|
||||
end
|
||||
-- offset da interfaccia
|
||||
local dDeltaXFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAY', 'd') or 0
|
||||
local dDeltaYFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAX', 'd') or 0
|
||||
local dDeltaZFromBtl = EgtGetInfo( BtlInfoId, 'PANELDELTAZ', 'd') or 0
|
||||
-- se da interfaccia arriva un valore > 0 si usa quello, altrimenti si legge da WallData (default 0)
|
||||
local DeltaX = EgtIf( dDeltaXFromBtl > 0, dDeltaXFromBtl, WD.DELTA_X or 0)
|
||||
local DeltaY = EgtIf( dDeltaYFromBtl > 0, dDeltaYFromBtl, WD.DELTA_Y or 0)
|
||||
local DeltaZ = EgtIf( dDeltaZFromBtl > 0, dDeltaZFromBtl, WD.DELTA_Z or 0)
|
||||
|
||||
if sOrigCorner == 'TL' then
|
||||
nCorner = MCH_CR.TL
|
||||
OrigOnTab = Point3d( 0 + abs( WD.DELTA_X or 0), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( 0 + abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ)
|
||||
elseif sOrigCorner == 'BL' then
|
||||
nCorner = MCH_CR.BL
|
||||
OrigOnTab = Point3d( 0 + abs( WD.DELTA_X or 0), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( 0 + abs( DeltaX), abs( DeltaY), DeltaZ)
|
||||
elseif sOrigCorner == 'TR' then
|
||||
nCorner = MCH_CR.TR
|
||||
OrigOnTab = Point3d( b3Tab:getDimX() - abs( WD.DELTA_X or 0), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( b3Tab:getDimX() - abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ)
|
||||
elseif sOrigCorner == 'BR' then
|
||||
nCorner = MCH_CR.BR
|
||||
OrigOnTab = Point3d( b3Tab:getDimX() - abs( WD.DELTA_X or 0), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( b3Tab:getDimX() - abs( DeltaX), abs( DeltaY), DeltaZ)
|
||||
elseif sOrigCorner == 'TM' then
|
||||
nCorner = MCH_CR.TR
|
||||
OrigOnTab = Point3d( WD.MID_REF - abs( WD.DELTA_X or 0), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( WD.MID_REF - abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ)
|
||||
elseif sOrigCorner == 'BM' then
|
||||
nCorner = MCH_CR.BR
|
||||
OrigOnTab = Point3d( WD.MID_REF - abs( WD.DELTA_X or 0), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( WD.MID_REF - abs( DeltaX), abs( DeltaY), DeltaZ)
|
||||
elseif sOrigCorner == 'TN' then
|
||||
nCorner = MCH_CR.TL
|
||||
OrigOnTab = Point3d( WD.NEW_REF + abs( WD.DELTA_X or 0), b3Tab:getDimY() - abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( WD.NEW_REF + abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ)
|
||||
elseif sOrigCorner == 'BN' then
|
||||
nCorner = MCH_CR.BL
|
||||
OrigOnTab = Point3d( WD.NEW_REF + abs( WD.DELTA_X or 0), abs( WD.DELTA_Y or 0), ( WD.DELTA_Z or 0))
|
||||
OrigOnTab = Point3d( WD.NEW_REF + abs( DeltaX), abs( DeltaY), DeltaZ)
|
||||
end
|
||||
-- Impostazione dell'attrezzaggio di default
|
||||
EgtImportSetup()
|
||||
@@ -154,6 +166,7 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr
|
||||
end
|
||||
else
|
||||
local dPosH = EgtIf( vWall[i].PosY < 0.1, ( dRawH - PartHeight) / 2, vWall[i].PosY)
|
||||
EgtSetInfo( nRaw, 'SUBPIECE', dPosH)
|
||||
ptPos = Point3d( dRawL - vWall[i].PosX - PartLen, vWall[i].PosZ, dPosH) + vtOffs
|
||||
end
|
||||
EgtAddPartToRawPart( Pz, ptPos, nRaw)
|
||||
@@ -205,8 +218,10 @@ function WallExec.CollectFeatures( PartId, b3Raw)
|
||||
Proc.DistanceToRawPart = WL.GetProcessDistanceToRawPart( Proc, b3Raw)
|
||||
-- recupero informazioni sulle facce della feature
|
||||
Proc.Face = {}
|
||||
for i = 1, Proc.Fct do
|
||||
Proc.Face[i] = { Id = i - 1, VtN = EgtSurfTmFacetNormVersor( Proc.Id, i - 1, GDB_ID.ROOT ), Elevation = WL.GetFaceElevation( Proc.Id, i - 1, PartId)}
|
||||
if Proc.Fct < 50 then
|
||||
for i = 1, Proc.Fct do
|
||||
Proc.Face[i] = { Id = i - 1, VtN = EgtSurfTmFacetNormVersor( Proc.Id, i - 1, GDB_ID.ROOT ), Elevation = WL.GetFaceElevation( Proc.Id, i - 1, PartId)}
|
||||
end
|
||||
end
|
||||
end
|
||||
if Proc.Box and not Proc.Box:isEmpty() then
|
||||
|
||||
@@ -157,9 +157,9 @@ local bManualRot = EgtGetInfo( NFAR.PARTID, "MANUALROT", 'b')
|
||||
|
||||
-- FLIP
|
||||
local FlipFeatureStates, bLapJoints = ClassifyFlip( vPartProc, b3Part)
|
||||
local bFlip
|
||||
|
||||
if not bManualFlip then
|
||||
local bFlip
|
||||
-- analizzo stati flip delle feature
|
||||
local nFlip0Min = 100
|
||||
local nFlip0Cnt = 0
|
||||
@@ -440,7 +440,7 @@ if not bManualRot then
|
||||
-- setto info nel pezzo
|
||||
if nRotate > 0 then
|
||||
local nPartRot = EgtGetInfo( NFAR.PARTID, "ROTATED", 'i') or 0
|
||||
local nTotRot = nPartRot - nRotate
|
||||
local nTotRot = nPartRot - EgtIf( bFlip, -nRotate, nRotate)
|
||||
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
|
||||
EgtSetInfo( NFAR.PARTID, "ROTATED", nTotRot)
|
||||
EgtSetInfo( NFAR.PARTID, "FLIPROTMODIFIED", 1)
|
||||
|
||||
+18
-11
@@ -19,7 +19,7 @@ NEST.MACH_AREA_OTHER_DIAM = 200
|
||||
NEST.MACH_AREA_IGNORE_3rdFACE = 1 -- 0
|
||||
|
||||
|
||||
local sLog = 'NestProcess : ' .. NEST.FILE .. ', ' .. NEST.MACHINE .. ', ' .. LEN["1"] .. ', ' .. WIDTH["1"]
|
||||
local sLog = 'NestProcess : ' .. NEST.FILE .. ', ' .. NEST.MACHINE .. ', ' .. LEN[1] .. ', ' .. WIDTH[1]
|
||||
EgtOutLog( sLog)
|
||||
|
||||
-- Cancello file di log specifico
|
||||
@@ -1128,9 +1128,10 @@ local function ClassifyAngles( nPartId, RawPart, sRefOrig, bLockedRot, dMinSheet
|
||||
if nRotate >= 360 then
|
||||
nRotate = nRotate - 360
|
||||
end
|
||||
if nRotate > 0 then
|
||||
if nRotate > 0 then
|
||||
local bPartFlip = ( ( EgtGetInfo( nPartId, "INVERTED", 'i') or 0) == 180)
|
||||
local nPartRot = EgtGetInfo( nPartId, "ROTATED", 'i') or 0
|
||||
local nTotRot = nPartRot - nRotate
|
||||
local nTotRot = nPartRot - EgtIf( bPartFlip, -nRotate, nRotate)
|
||||
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
|
||||
EgtSetInfo( nPartId, "ROTATED", nTotRot)
|
||||
EgtSetInfo( nPartId, "MODIFIEDFORNEST", 1)
|
||||
@@ -1325,8 +1326,9 @@ local function ComputeRestrictedZones( RawParts)
|
||||
bOnOppositeSide = true
|
||||
-- aggiorno le info di rotazione
|
||||
if res.nRotate > 0 then
|
||||
local bPartFlip = ( ( EgtGetInfo( AngleClassification[nInd].PartId, "INVERTED", 'i') or 0) == 180)
|
||||
local nPartRot = EgtGetInfo( AngleClassification[nInd].PartId, "ROTATED", 'i') or 0
|
||||
local nTotRot = nPartRot - res.nRotate
|
||||
local nTotRot = nPartRot - EgtIf( bPartFlip, -res.nRotate, res.nRotate)
|
||||
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
|
||||
EgtSetInfo( AngleClassification[nInd].PartId, "ROTATED", nTotRot)
|
||||
EgtSetInfo( AngleClassification[nInd].PartId, "MODIFIEDFORNEST", 1)
|
||||
@@ -1507,7 +1509,6 @@ local function AddParts(RawParts, vPartsDoneManually)
|
||||
bRotNest = false
|
||||
elseif EgtExistsInfo( nPartId, "NestRot") then
|
||||
nStepRotNest = EgtGetInfo( nPartId, "NestStepRot", 'i')
|
||||
nRotate = EgtGetInfo( nPartId, "NestRot", 'i')
|
||||
bRotNest = EgtGetInfo( nPartId, "NestAllowRot", 'b')
|
||||
-- verifico se rotazione è valida (pezzo è contenuto nel grezzo)
|
||||
local bValidRotationInRaw = b3Part:getDimX() < RawParts[1].Len - 2 * NEST.KERF + GEO.EPS_SMALL and b3Part:getDimY() < dRawMaxWidth - 2 * NEST.KERF + GEO.EPS_SMALL
|
||||
@@ -1884,15 +1885,21 @@ if bNestingOk then
|
||||
EgtSetInfo( nPartDuploId, "POSX", ptPos:getX() + dXCorr)
|
||||
EgtSetInfo( nPartDuploId, "POSY", ptPos:getY() + dYCorr)
|
||||
|
||||
local nPartRot = EgtGetInfo( nId, "ROTATED", 'i') or 0
|
||||
local nTotRot = dAngRot - nPartRot
|
||||
nTotRot = EgtIf( nTotRot < 0, nTotRot + 360, nTotRot)
|
||||
EgtSetInfo( nPartDuploId, "ROT", nTotRot)
|
||||
|
||||
local nPartFlip = EgtGetInfo( nId, "INVERTED", 'i')
|
||||
local nPartFlip = EgtGetInfo( nId, "INVERTED", 'i') or 0
|
||||
nPartFlip = EgtIf( nPartFlip == 180, 1, 0)
|
||||
local nTotFlip = EgtIf( nPartFlip ~= nFlag, 180, 0)
|
||||
EgtSetInfo( nPartDuploId, "FLIP", nTotFlip)
|
||||
|
||||
local bPartFlip = ( nTotFlip == 180)
|
||||
local nPartRot = EgtGetInfo( nId, "ROTATED", 'i') or 0
|
||||
local nTotRot = nPartRot - EgtIf( bPartFlip, -dAngRot, dAngRot)
|
||||
if nTotRot < 0 then
|
||||
nTotRot = nTotRot + 360
|
||||
elseif nTotRot >= 360 then
|
||||
nTotRot = nTotRot - 360
|
||||
end
|
||||
EgtSetInfo( nPartDuploId, "ROT", nTotRot)
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+53
-2
@@ -1,9 +1,60 @@
|
||||
==== Wall Update Log ====
|
||||
|
||||
Versione 2.6j1 (29/10/2024)
|
||||
- Fixed : in Nesting e Flip/Rot corretto problema in rotazione pezzi che causava ribaltamenti non voluti nella copia grezzo
|
||||
|
||||
Versione 2.6i2 (30/09/2024)
|
||||
- Modif : aggiunta nota altezza sottopezzo, per pareti a layer
|
||||
|
||||
Versione 2.6i1 (25/09/2024)
|
||||
- Fixed : in NestProcess correzione in lettura array per cambio dll di lettura
|
||||
|
||||
Versione 2.6h2 (28/08/2024)
|
||||
- Modif : Aggiunto controllo licenza/chiave per abilitazione generazione PartProgram
|
||||
- Fixed : in FreeContour corretto caso in cui si chiedevano informazioni sulla faccia non presenti.
|
||||
|
||||
Versione 2.6h1 (20/08/2024)
|
||||
- Modif : in LapJoint, se fresa Side trovata ma non applicabile, si considera come se non trovata
|
||||
- Modif : in Collect analisi facce limitata a feature che ne hanno meno di 50
|
||||
- Modif : aggiunti nuovi parametri alla chiamata della funzione GetChainSawStartAngs da WallData della macchina
|
||||
|
||||
Versione 2.6g2 (19/07/2024)
|
||||
- Modif : in BatchProcess e BatchProcessNew si forza ricalcolo ogni volta che si è in situazione di CHECK o CHECK + GENERATE
|
||||
|
||||
Versione 2.6g1 (17/07/2024)
|
||||
- Modif : in ProcessDrill, se foro verticale passante e diametro inferiore a 100 mm, riduzione affondamento di 5 mm sostituito con tab
|
||||
- Fixed : correzioni a utilizzo DEFAULT_RAW_NO_EXTRA_WIDTH
|
||||
|
||||
Versione 2.6f1 (21/06/2024)
|
||||
- Added : in BatchProcess e BatchProcessNew aggiunto DEFAULT_RAW_NO_EXTRA_WIDTH per eliminare il sovramateriale grezzo in vista
|
||||
|
||||
Versione 2.6e2 (24/05/2024)
|
||||
- Modif : in LapJoint se non si trova una lavorazione di tipo side si cerca una pocketing
|
||||
- Fixed : in BatchProcessNew se generazione non abilitata si salta questa fase invece di restituire errore
|
||||
- Fixed : piccoli errori in LapJoint e DoubleCut.
|
||||
|
||||
Versione 2.6e1 (03/03/5/2024)
|
||||
- Fixed : correzione per assegnazione a SawCut di flag passante (bIsThrough).
|
||||
|
||||
Versione 2.6c3 (26/03/2024)
|
||||
- Modif : modifica per richiamare le nuove funzioni di Test interferenza solidi superfici nel controllo validità lavorazione pulizia spigoli interni
|
||||
- Modif : in compilazione vengono eliminate le info di debug
|
||||
- Fixed : in processSawCut si ignora verso vettore se taglio passante.
|
||||
|
||||
Versione 2.6b2 (21/02/2024)
|
||||
- Added : aggiunta gestione spostamento pannello rispetto a origine da dato BTL di TS3v7.
|
||||
|
||||
Versione 2.6b1 (20/02/2024)
|
||||
- Modif : In BatchProcess tolleranza su altezza pannello in grezzo portata a 0.1 mm
|
||||
- Fixed : in LapJoint piccola correzione ai casi in cui si utilizza il SIDESTEP.
|
||||
|
||||
Versione 2.5l2 (21/12/2023)
|
||||
- Fixed : in FreeContour -> MakeByPocket corretto un bug che provocava la cancellazione della feature dopo averla lavorata
|
||||
|
||||
Versione 2.5l1 (13/12/2023)
|
||||
- Modif : modifiche a WallExec, WallLib, FeatureTopology per allineamento Topology con Beam
|
||||
- Modif : In FreeContour -> MakeByPocket aggiunta la possibilità di svuotare tasche passanti
|
||||
- Modif : In FreeContour -> MakeByPocket in tasche speciali cliente 90480029 forzato step unico
|
||||
- Modif : in FreeContour -> MakeByPocket aggiunta la possibilità di svuotare tasche passanti
|
||||
- Modif : in FreeContour -> MakeByPocket in tasche speciali cliente 90480029 forzato step unico
|
||||
|
||||
Versione 2.5k1 (14/11/2023)
|
||||
- Added : aggiunte lavorazioni in doppio.
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
-- Version.lua by Egalware s.r.l. 2023/12/13
|
||||
-- Version.lua by Egalware s.r.l. 2024/08/20
|
||||
-- Gestione della versione di Wall
|
||||
|
||||
NAME = 'Wall'
|
||||
VERSION = '2.5l1'
|
||||
MIN_EXE = '2.5b3'
|
||||
VERSION = '2.6j1'
|
||||
MIN_EXE = '2.6h1'
|
||||
|
||||
Reference in New Issue
Block a user