Compare commits
56 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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
|
||||
|
||||
+16
-2
@@ -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
|
||||
|
||||
+10
-5
@@ -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
|
||||
@@ -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 = ( EgtGetNumberFromIni( 'Mach', 'NoPartProgram', 0, EgtGetIniFile()) == 0)
|
||||
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
|
||||
@@ -2406,7 +2406,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,7 @@
|
||||
-- 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.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WPL = {}
|
||||
@@ -1350,7 +1351,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
|
||||
@@ -1980,7 +1981,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 +2755,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)
|
||||
@@ -2859,7 +2863,7 @@ local function MakeMoreFaces( Proc, nRawId, b3Raw)
|
||||
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 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 +2925,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
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
+22
-11
@@ -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,7 @@
|
||||
-- 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.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WallExec = {}
|
||||
@@ -80,33 +81,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()
|
||||
|
||||
+32
-2
@@ -1,9 +1,39 @@
|
||||
==== Wall Update Log ====
|
||||
|
||||
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/03/24
|
||||
-- Gestione della versione di Wall
|
||||
|
||||
NAME = 'Wall'
|
||||
VERSION = '2.5l1'
|
||||
MIN_EXE = '2.5b3'
|
||||
VERSION = '2.6g1'
|
||||
MIN_EXE = '2.6g1'
|
||||
|
||||
Reference in New Issue
Block a user