Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e0a87fbf6 | |||
| e43afd5af4 | |||
| 8b095a195a | |||
| f2a066192f | |||
| e59030ed4b | |||
| a859e72707 | |||
| fa9a8a7e49 |
@@ -545,7 +545,7 @@ local function GetFacesData( Proc, bOpposite, bCalclForBlade, dToolDiam, dToolMa
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
local function GetTunnelDimension( nId, nPartId, nAddGrpId)
|
||||
local function GetTunnelDimension( nId, nPartId, nAddGrpId, bClosed)
|
||||
-- sono necessarie almeno 2 facce
|
||||
local nFacCnt = EgtSurfTmFacetCount( nId)
|
||||
if nFacCnt < 2 then return end
|
||||
@@ -559,7 +559,7 @@ local function GetTunnelDimension( nId, nPartId, nAddGrpId)
|
||||
end
|
||||
-- determino l'asse medio (le facce sono già ordinate consecutivamente)
|
||||
local vtAx = V_NULL()
|
||||
for i = 1, nFacCnt do
|
||||
for i = 1, EgtIf( bClosed, nFacCnt, nFacCnt - 1) do
|
||||
local j = i % nFacCnt + 1
|
||||
local vtOrtho = vtN[i] ^ vtN[j]
|
||||
if vtOrtho:normalize() then
|
||||
@@ -665,7 +665,7 @@ local function MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bC
|
||||
-- in base al tipo di ripresa spigolo modifico il percorso
|
||||
if nConeCut == 2 then
|
||||
-- acquisisco la lunghezza utensile
|
||||
sMilling, dMaxDepth = WM.FindMilling( 'CleanCorner30')
|
||||
local sMilling = WM.FindMilling( 'CleanCorner30')
|
||||
if not sMilling then
|
||||
local sErr = 'Error : CleanCorner 30 not found in library'
|
||||
return 0, sErr
|
||||
@@ -698,7 +698,7 @@ local function MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bC
|
||||
vtExtrExit:normalize()
|
||||
-- linea intermedia (componente lunghezza utensile in direzione bisettrice)
|
||||
local pEnd = ptP1 + ( dLenAdd * vtExtrExit)
|
||||
nAuxId = EgtLine( nAddGrpId, ptP1, pEnd, GDB_RT.GLOB)
|
||||
local nAuxId = EgtLine( nAddGrpId, ptP1, pEnd, GDB_RT.GLOB)
|
||||
table.insert( nPath, nAuxId)
|
||||
-- linea di ritorno
|
||||
nAuxId = EgtLine( nAddGrpId, pEnd, ptP1, GDB_RT.GLOB)
|
||||
@@ -727,7 +727,7 @@ local function MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bC
|
||||
local dLenAdd = abs( (dMillDiam/2) / cos( nPathData[i][2]/2)) + dExtraCorner - (dMillDiam/2)
|
||||
-- linea intermedia (componente lunghezza utensile in direzione bisettrice)
|
||||
local pEnd = ptP1 + ( dLenAdd * vtExtrExit)
|
||||
nAuxId = EgtLine( nAddGrpId, ptP1, pEnd, GDB_RT.GLOB)
|
||||
local nAuxId = EgtLine( nAddGrpId, ptP1, pEnd, GDB_RT.GLOB)
|
||||
table.insert( nPath, nAuxId)
|
||||
-- linea di ritorno
|
||||
nAuxId = EgtLine( nAddGrpId, pEnd, ptP1, GDB_RT.GLOB)
|
||||
@@ -814,7 +814,7 @@ local function AddMillCornerMachining( nPartId, nNewProc, nFacInd, tFacAdj, nTyp
|
||||
-- riordino le facce
|
||||
ReorderFacesFromTab( nNewProcLoc, vFace)
|
||||
-- acquisisco il numero della faccia
|
||||
nFacCnt = EgtSurfTmFacetCount( nNewProcLoc)
|
||||
local nFacCnt = EgtSurfTmFacetCount( nNewProcLoc)
|
||||
nFacInd = nFacCnt - 1
|
||||
else
|
||||
return true, ''
|
||||
@@ -1003,10 +1003,7 @@ local function AddMillCornerMachining( nPartId, nNewProc, nFacInd, tFacAdj, nTyp
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ AuxId, -1}})
|
||||
-- imposto posizione braccio porta testa
|
||||
local nSCC = MCH_SCC.ADIR_YM
|
||||
if vtExtr:getY() > 100 * GEO.EPS_ZERO then
|
||||
nSCC = MCH_SCC.ADIR_YP
|
||||
end
|
||||
local nSCC = MCH_SCC.ADIR_ZP
|
||||
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
|
||||
EgtSetMachiningParam( MCH_MP.LEADINTYPE, 0)
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, 4)
|
||||
@@ -1082,6 +1079,8 @@ local function AddMillCorner( nTypeConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
dMillTotDiam = dMillDiam + ( abs( dThickTool) * tan( dSideAng)) * 2
|
||||
end
|
||||
end
|
||||
-- verifico se ciclo chiuso
|
||||
local bClosed = ( abs( vFace[1].PrevAng) > 0.1)
|
||||
-- copio la feature nel layer di appoggio
|
||||
local nNewProc
|
||||
if nMasterNewProc then
|
||||
@@ -1094,7 +1093,7 @@ local function AddMillCorner( nTypeConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
local bMakeLocSurf
|
||||
if nFacCnt <= 4 then
|
||||
-- recupero profondità e faccia di fondo
|
||||
_, _, dDepth, _, _, nSurfInt = GetTunnelDimension( nNewProc, Proc.PartId, nAddGrpId)
|
||||
_, _, dDepth, _, _, nSurfInt = GetTunnelDimension( nNewProc, Proc.PartId, nAddGrpId, bClosed)
|
||||
if nSurfInt then
|
||||
-- aggiungo la faccia di fondo appena calcolata
|
||||
nNewProc = EgtSurfTmBySewing( nAddGrpId, { nNewProc, nSurfInt}, true)
|
||||
@@ -1109,8 +1108,6 @@ local function AddMillCorner( nTypeConeCut, vFace, Proc, nRawId, b3Raw,
|
||||
else
|
||||
bMakeLocSurf = true
|
||||
end
|
||||
-- verifico se ciclo chiuso
|
||||
local bClosed = ( abs( vFace[1].PrevAng) > 0.1)
|
||||
-- ciclo di inserimento delle fresate sulle facce del contorno in esame
|
||||
local i = 1
|
||||
-- se faccia finale con fine non lavorato, forzo partenza da prima faccia non tutta saltata (tipo 4)
|
||||
@@ -2412,7 +2409,7 @@ local function MakeByPocket( Proc, nRawId, b3Raw)
|
||||
return MakeByMill( Proc, nRawId, b3Raw)
|
||||
end
|
||||
-- se la faccia di fondo ha confini aperti, devo lavorarla direttamente
|
||||
vAdj = EgtSurfTmFacetAdjacencies( Proc.Id, nFacet)[1] or {}
|
||||
local vAdj = EgtSurfTmFacetAdjacencies( Proc.Id, nFacet)[1] or {}
|
||||
for i = 1, #vAdj do
|
||||
if vAdj[i] == - 1 then
|
||||
bPocketBotface = true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- WProcessLapJoint.lua by Egaltech s.r.l. 2023/04/17
|
||||
-- WProcessLapJoint.lua by Egaltech s.r.l. 2023/09/19
|
||||
-- Gestione calcolo mezzo-legno per Pareti
|
||||
-- 2021/08/27 DS Se tre o più facce con flag PCKT=1 forzo svuotatura con fresa (per Variant).
|
||||
-- 2021/08/29 DS Se svuotatura di fianco setto flag per farla dopo i tagli.
|
||||
@@ -26,6 +26,7 @@
|
||||
-- 2023/07/25 Aggiunte passate laterali per SideGroove, se specificato SIDESTEP nelle note utensile.
|
||||
-- 2023/08/01 Migliorato controllo testa sotto al grezzo in SieGroove.
|
||||
-- 2023/08/07 Controllo testa sotto al grezzo in SideGroove escluso se richiesto il move after.
|
||||
-- 2023/09/19 Controllo lavorabilità con una sola faccia ora ha limiti come FreeContour.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local WPL = {}
|
||||
@@ -113,8 +114,8 @@ function WPL.Classify( Proc, b3Raw)
|
||||
if Proc.Fct == 1 then
|
||||
-- dati della faccia
|
||||
local vtN = EgtSurfTmFacetNormVersor( Proc.Id, 0, GDB_ID.ROOT)
|
||||
-- verifico se è lavorabile da sopra
|
||||
return vtN:getZ() >= WD.NZ_MINA
|
||||
-- verifico se è lavorabile da sopra o di fianco
|
||||
return vtN:getZ() >= -0.5
|
||||
-- se 2 facce
|
||||
elseif Proc.Fct == 2 then
|
||||
-- dati delle facce
|
||||
@@ -122,7 +123,7 @@ function WPL.Classify( Proc, b3Raw)
|
||||
vtN[1] = EgtSurfTmFacetNormVersor( Proc.Id, 0, GDB_ID.ROOT)
|
||||
vtN[2] = EgtSurfTmFacetNormVersor( Proc.Id, 1, GDB_ID.ROOT)
|
||||
-- verifico se è lavorabile da sopra o di fianco
|
||||
return ( vtN[1]:getZ() >= - 0.028 or vtN[2]:getZ() >= - 0.028)
|
||||
return ( vtN[1]:getZ() >= -0.028 or vtN[2]:getZ() >= -0.028)
|
||||
-- se più di 2 facce
|
||||
else
|
||||
local nFacInd, dElev, nFacInd2, dElev2 = WL.GetFaceWithMostAdj( Proc.Id, Proc.PartId)
|
||||
@@ -1004,10 +1005,7 @@ local function AddMillCornerMachining( nPartId, nNewProc, nFacInd, tFacAdj, nTyp
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ AuxId, -1}})
|
||||
-- imposto posizione braccio porta testa
|
||||
local nSCC = MCH_SCC.ADIR_YM
|
||||
if vtExtr:getY() > 100 * GEO.EPS_ZERO then
|
||||
nSCC = MCH_SCC.ADIR_YP
|
||||
end
|
||||
local nSCC = MCH_SCC.ADIR_ZP
|
||||
EgtSetMachiningParam( MCH_MP.SCC, nSCC)
|
||||
EgtSetMachiningParam( MCH_MP.LEADINTYPE, 0)
|
||||
EgtSetMachiningParam( MCH_MP.LEADOUTTYPE, 4)
|
||||
@@ -2286,7 +2284,7 @@ local function MakeOneFace( Proc, nRawId, b3Raw)
|
||||
-- recupero la lavorazione di taglio con lama e i suoi parametri
|
||||
local sCutting, dSawDiam, dSawThick, dSawMaxDepth = WM.FindCutting( 'Standard')
|
||||
-- se non inclinata o capacità di taglio non sufficiente, provo con svuotatura
|
||||
if not sCutting or vtN:getZ() > 0.866 or dSawMaxDepth < dDimV + WD.CUT_SIC then
|
||||
if not sCutting or vtN:getZ() > 0.866 or dSawMaxDepth < dDimV + WD.CUT_EXTRA then
|
||||
-- faccio con svuotatura
|
||||
local nFacet = 0
|
||||
return MakeByPocketing( Proc, nFacet, nRawId, b3Raw)
|
||||
|
||||
@@ -105,7 +105,7 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr
|
||||
-- Impostazione dell'attrezzaggio di default
|
||||
EgtImportSetup()
|
||||
-- Impostazione eventuale allargamento area disponibile per grezzo
|
||||
EgtSetTableAreaOffset( WD.TAB_EXTRA_XP or 0, WD.TAB_EXTRA_XM or 0, WD.TAB_EXTRA_YP or 0, WD.TAB_EXTRA_YM or 0)
|
||||
EgtSetTableAreaOffset( WD.TAB_EXTRA_XP or 0, WD.TAB_EXTRA_YP or 0, WD.TAB_EXTRA_XM or 0, WD.TAB_EXTRA_YM or 0)
|
||||
-- Creazione del grezzo e suo posizionamento in macchina
|
||||
local nRaw = GDB_ID.NULL
|
||||
if nRawOutlineId and nRawOutlineId ~= GDB_ID.NULL then
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
==== Wall Update Log ====
|
||||
|
||||
Versione 2.5i2 (20/09/2023)
|
||||
- Modif : in LapJoint con una sola faccia controllo lavorabilità ora come per FreeContour
|
||||
- Modif : in CleanCorner ora AuxDir (SCC) sempre Z+
|
||||
- Fixed : in FreeContour piccola correzione alla pulizia corner
|
||||
- Fixed : corretta impostazione allargamento aree disposizone grezzi su tavola.
|
||||
|
||||
Versione 2.5i1 (12/09/2023)
|
||||
- Fixed : correzioni per pulizia corner in FreeContour.
|
||||
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
-- Version.lua by Egalware s.r.l. 2023/09/12
|
||||
-- Version.lua by Egalware s.r.l. 2023/09/18
|
||||
-- Gestione della versione di Wall
|
||||
|
||||
NAME = 'Wall'
|
||||
VERSION = '2.5i1'
|
||||
VERSION = '2.5i2'
|
||||
MIN_EXE = '2.5b3'
|
||||
|
||||
Reference in New Issue
Block a user