From fdb69f9f69c95b5115eedb9d0b314907efb0392a Mon Sep 17 00:00:00 2001 From: DarioS Date: Mon, 4 Apr 2022 07:38:27 +0200 Subject: [PATCH] DataWall : - in FreeContour correzioni e modifiche per pulitura spigoli tipo 2 e 3 - aggiunto sort per utensili anche a pulitura spigoli. --- LuaLibs/WProcessFreeContour.lua | 20 +++++++++++--------- LuaLibs/WallExec.lua | 4 ++-- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/LuaLibs/WProcessFreeContour.lua b/LuaLibs/WProcessFreeContour.lua index 9b793af..f44c8f6 100644 --- a/LuaLibs/WProcessFreeContour.lua +++ b/LuaLibs/WProcessFreeContour.lua @@ -1,4 +1,4 @@ --- ProcessFreeContour.lua by Egaltech s.r.l. 2022/03/16 +-- ProcessFreeContour.lua by Egaltech s.r.l. 2022/04/03 -- 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. @@ -7,6 +7,7 @@ -- 2022/02/21 Corretti allungamenti/accorciamenti tagli inclinati con fresa. Migliorata gestione tagli trasversali per macchine travi. -- 2022/03/14 Corretto riconoscimento lato esterno per percorsi aperti. -- 2022/03/16 Ulteriore modifica per riconoscimento lato esterno (aggiunto uso vExtr a GetFacesExternalSide). +-- 2022/04/03 Correzioni e modifiche per pulitura spigoli tipo 2 e 3. -- Tabella per definizione modulo local WPF = {} @@ -23,6 +24,7 @@ local WM = require( 'WMachiningLib') if WD.CHECK_MIN_Z_SAW == nil then WD.CHECK_MIN_Z_SAW = true end if not WD.MIN_Z_SAW then WD.MIN_Z_SAW = 0 end if not WD.MAX_CLEAN_CRN60 then WD.MAX_CLEAN_CRN60 = 150 end +if not WD.MAX_CLEAN_CRN30 then WD.MAX_CLEAN_CRN30 = 68 end local WHISK_OFFS = 0.1 local WHISK_SAFE = 5 local MIN_LEN_CUT = 250 @@ -633,7 +635,7 @@ local function MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bC if i < #vGeom then -- ricavo i punti e l'angolo interno _, _, _, dAng = EgtSurfTmFacetsContact( vGeom[i][1], vGeom[i][2], vGeom[i+1][2], GDB_ID.ROOT) - elseif i == #vGeom and nConeCut == 3 and bClosed then + elseif bClosed then -- ricavo i punti e l'angolo interno _, _, _, dAng = EgtSurfTmFacetsContact( vGeom[i][1], vGeom[i][2], vGeom[1][2], GDB_ID.ROOT) else @@ -677,17 +679,17 @@ local function MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bC end end -- calcolo la lunghezza della linea da inserire in base all'angolo e alla lunghezza utensile - local dLenAdd = abs(( dMillLength * sin(33)) - ( dMillDiam / 2)) + local dLenAdd = abs(( dMillLength * sin( 33)) - ( dMillDiam / 2)) -- per ogni entità compongo la nuova lista per creare percorso for i = 1, nIdCount do -- aggiungo linea precedente table.insert( nPath, ( nId1st + i - 1)) -- se non è la linea finale e l'angolo tra le due facce è ammesso - if i < nIdCount and dThick <= ( WD.MAX_CLEAN_CRN30 + 20 * GEO.EPS_SMALL) and nPathData[i][2] < 0 and - nPathData[i][2] > -(180-dAngleSmall + 10 * GEO.EPS_SMALL) then + if ( i < nIdCount or bClosed) and dThick <= ( WD.MAX_CLEAN_CRN30 + 20 * GEO.EPS_SMALL) and + nPathData[i][2] < 0 and nPathData[i][2] > -( 180 - dAngleSmall + 10 * GEO.EPS_SMALL) then -- aggiungo una retta sulla bisettrice local _, vtN2 = EgtSurfTmFacetCenter( vGeom[i][1], vGeom[i][2], GDB_ID.ROOT) - local _, vtN3 = EgtSurfTmFacetCenter( vGeom[i][1], vGeom[i+1][2], GDB_ID.ROOT) + local _, vtN3 = EgtSurfTmFacetCenter( vGeom[i][1], vGeom[EgtIf( i == nIdCount, 1, i+1)][2], GDB_ID.ROOT) local ptP1 = EgtEP( ( nId1st + i - 1), GDB_ID.ROOT) -- sommo i tre versori per avere una direzione media local vtExtrExit = vtN2 + vtN3 @@ -710,10 +712,10 @@ local function MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bC -- aggiungo linea precedente table.insert( nPath, ( nId1st + i - 1)) -- se non è la linea finale e l'angolo tra le due facce è ammesso - if ( i < nIdCount and nPathData[i][2] < 0) or ( i == nIdCount and bClosed and nPathData[i][2] < 0) then + if ( i < nIdCount or bClosed) and nPathData[i][2] < 0 then -- aggiungo una retta sulla bisettrice local _, vtN2 = EgtSurfTmFacetCenter( vGeom[i][1], vGeom[i][2], GDB_ID.ROOT) - local _, vtN3 = EgtSurfTmFacetCenter( vGeom[i][1], vGeom[ EgtIf( i == nIdCount and bClosed, 1, i+1)][2], GDB_ID.ROOT) + local _, vtN3 = EgtSurfTmFacetCenter( vGeom[i][1], vGeom[EgtIf( i == nIdCount, 1, i+1)][2], GDB_ID.ROOT) local ptP1 = EgtEP( ( nId1st + i - 1), GDB_ID.ROOT) -- sommo i tre versori per avere una direzione media local vtExtrExit = vtN2 + vtN3 @@ -1490,7 +1492,7 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd -- altrimenti se devo fare rientranza per inserimento utensile cono 30° elseif nConeCut == 2 then -- eseguo la costruzione del percorso - local nPathId, sErr = MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick) + local nPathId, sErr = MakeCustomPath( vGeom, nConeCut, dMillDiam, nAddGrpId, dThick, bClosed and bAllType4) if nPathId == 0 then return 0, sErr end EgtSetMachiningGeometry({{ nPathId, -1}}) EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal) diff --git a/LuaLibs/WallExec.lua b/LuaLibs/WallExec.lua index ba7b8cc..18075c6 100644 --- a/LuaLibs/WallExec.lua +++ b/LuaLibs/WallExec.lua @@ -1,4 +1,4 @@ --- WallExec.lua by Egaltech s.r.l. 2022/03/15 +-- WallExec.lua by Egaltech s.r.l. 2022/04/03 -- Libreria esecuzione lavorazioni per Pareti -- Tabella per definizione modulo @@ -557,7 +557,7 @@ local function SortMachinings( nPhase, PrevMch, nPartId) -- Fresature che sono rifiniture di spigoli PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.MILLING, { 'SideMill_'}, true, 'MOVE_AFTER', false, false, true, true) -- Fresature che sono puliture di spigoli - PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.MILLING, { 'Clean_'}, true, 'MOVE_AFTER', false) + PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.MILLING, { 'Clean_'}, true, 'MOVE_AFTER', false, false, true) -- Tagli per gole PrevMch = SortMach( nPhase, PrevMch, nPartId, MCH_OY.SAWING, { 'GorgeCut_'}, true) -- Tagli con lama