From d5f2422729be55514361ece2fb4e55998f120ad3 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 27 Sep 2023 17:23:45 +0200 Subject: [PATCH] DataBeam 2.5i2 : - aggiunta cancellazione curve temporanee da loop di facce in BeamLib.Is3EdgesApprox - piccola modifica per Turn su bInvert di FacesBySaw.MakeOne - in foratura quando errore in applicazione lavorazione si inverte e riprova solo se singola su foro aperto - in MakeLongMoreFaces migliorata gestione spezzatura di Tunnel - in lavorazione tenoni per Turn si assegna SCC per privilegiare accesso dal lato corto della trave. --- Compile.bat | 3 ++- LuaLibs/BeamLib.lua | 23 ++++++++++++----------- LuaLibs/FacesBySaw.lua | 5 +++-- LuaLibs/ProcessDrill.lua | 7 ++++--- LuaLibs/ProcessLapJoint.lua | 15 ++++++++++----- LuaLibs/ProcessTenon.lua | 11 +++++++++-- Version.lua | 4 ++-- 7 files changed, 42 insertions(+), 26 deletions(-) diff --git a/Compile.bat b/Compile.bat index a0b8a84..f26d16d 100644 --- a/Compile.bat +++ b/Compile.bat @@ -1,5 +1,5 @@ -REM Compilazione degli script Beam Egaltech 2023.02.27 +REM Compilazione degli script Beam Egaltech 2023.09.26 REM Per togliere info di debug aggiungere flag -s prima del nome del file di input REM Compilazione 32 e 64 bit @@ -9,6 +9,7 @@ REM Compilazione 32 e 64 bit \EgtProg\Dll32\luac54 -o bin\LuaLibs\DiceCut.lua LuaLibs\DiceCut.lua \EgtProg\Dll32\luac54 -o bin\LuaLibs\FaceByPocket.lua LuaLibs\FaceByPocket.lua \EgtProg\Dll32\luac54 -o bin\LuaLibs\FacesBySaw.lua LuaLibs\FacesBySaw.lua +\EgtProg\Dll32\luac54 -o bin\LuaLibs\FeatureTopology.lua LuaLibs\FeatureTopology.lua \EgtProg\Dll32\luac54 -o bin\LuaLibs\MachiningLib.lua LuaLibs\MachiningLib.lua \EgtProg\Dll32\luac54 -o bin\LuaLibs\ProcessBlockHausFront.lua LuaLibs\ProcessBlockHausFront.lua \EgtProg\Dll32\luac54 -o bin\LuaLibs\ProcessChamfer.lua LuaLibs\ProcessChamfer.lua diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 1c0c131..ae309bc 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -1064,23 +1064,24 @@ end function BeamLib.Is3EdgesApprox( Proc, nFacet, nAddGrpId) nAddGrpId = nAddGrpId or BeamLib.GetAddGroup( Proc.PartId) local bResult = false - local nContourId = EgtExtractSurfTmFacetLoops( Proc.Id, nFacet, nAddGrpId) + local nContourId, nContourCnt = EgtExtractSurfTmFacetLoops( Proc.Id, nFacet, nAddGrpId) + if not nContourId then return false end EgtMergeCurvesInCurveCompo( nContourId) -- recupero il numero effettivo di lati local _, nEntityCount = EgtCurveDomain( nContourId) local nEdges = nEntityCount - if nContourId then - if nEntityCount and nEntityCount == 3 then - bResult = true - -- rimuovo i lati molto corti dal conteggio totale - elseif nEntityCount then - for i = 1, nEntityCount do - local dLength = EgtCurveCompoLength( nContourId, i - 1) - if dLength < 15 then nEdges = nEdges - 1 end - end + if nEntityCount and nEntityCount == 3 then + bResult = true + -- rimuovo i lati molto corti dal conteggio totale + elseif nEntityCount then + for i = 1, nEntityCount do + local dLength = EgtCurveCompoLength( nContourId, i - 1) + if dLength < 15 then nEdges = nEdges - 1 end end - if nEdges == 3 then bResult = true end end + if nEdges == 3 then bResult = true end + -- cancello tutti i contorni appena creati + EgtErase( EgtTableFill( nContourId, nContourCnt)) return bResult end diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index 3b06698..662dddb 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -1,4 +1,4 @@ --- FacesBySaw.lua by Egaltech s.r.l. 2023/06/14 +-- FacesBySaw.lua by Egaltech s.r.l. 2023/09/26 -- Gestione taglio con lama di feature con una o due facce -- 2021/01/06 Cambiato limite per attacco Tg con lama e CalcLeadInOutGeom rinominata in CalcLeadInOutPerpGeom. -- 2021/02/03 In taglio lama si accettano anche due lati con deviazione minore di 20deg. @@ -17,6 +17,7 @@ -- 2023/04/20 Alcune modifiche per gestire tagli con faceuse parallelo. -- 2023/05/18 Imposto in ogni caso dVzLimDwnUp prima anche di bDownHead. -- 2023/06/14 Aggiunta MakeParallelOne e tolti parametri nForceWorkSide, nForceSCC da MakeOne. +-- 2023/09/26 Piccola modifica per Turn su bInvert di MakeOne. -- Tabella per definizione modulo local FacesBySaw = {} @@ -183,7 +184,7 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw local bInvert = bForceInvert -- se la lama ruota in senso antiorario inverto la direzione di lavorazione, per avere rotazione lama opposta a avanzamento if bInvert == nil then - if not BD.TURN then + if not BD.TURN or abs( ptP2:getY() - ptP1:getY()) < 250 then if bIsSawCCW ~= bDownUp then bInvert = ( ptP2:getZ() < ptP1:getZ() + 100 * GEO.EPS_SMALL) else diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index 05cf3a0..ee0addd 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -1,4 +1,4 @@ --- ProcessDrill.lua by Egaltech s.r.l. 2023/05/11 +-- ProcessDrill.lua by Egaltech s.r.l. 2023/09/26 -- Gestione calcolo forature per Travi -- 2021/04/14 DS Corretta gestione Invert con testa da sotto. Migliorato calcolo ingombro portautensile. -- 2021/05/03 DS Su macchina con testa da sotto aggiunta possibilità di fare fori verticali metà sopra e l'altra sotto. @@ -18,6 +18,7 @@ -- 2022/12/28 Implementata gestione forature in doppio -- 2023/05/11 Se lavorazione in doppio e precedente no oppure di tipo diverso, forzo risalita a Zmax. -- 2023/07/28 Aggiunta gestione rinvio 90deg solo per forature da sotto esattamente verticali. +-- 2023/09/26 Se errore in applicazione lavorazione si inverte e riprova solo se foratura singola su foro aperto. -- Tabella per definizione modulo local ProcessDrill = {} @@ -166,7 +167,7 @@ function ProcessDrill.Classify( Proc, b3Raw) return false, false, false end local bOpen = ( Proc.Fce ~= 0) - local bFaceDown = ( ptCen:getZ() < b3Raw:getMin():getZ() + 2 and (( not Proc.Head and not Proc.Tail) or (( BD.ROT90 or BD.DOWN_HEAD or BD.TURN) and ( Proc.Flg == 2 or Proc.Flg == -2)))) + local bFaceDown = ( ptCen:getZ() < b3Raw:getMin():getZ() + 2 and (( not Proc.Head and not Proc.Tail) or (( BD.ROT90 or BD.DOWN_HEAD or BD.TURN) and abs( Proc.Flg) == 2))) -- verifico se il foro è sotto e quindi va spostato o sopra o sul fianco if (( vtExtr:getZ() < BD.DRILL_VZ_MIN or bFaceDown) and ( not bOpen or Proc.Flg ~= 1)) then if not bOpen then @@ -516,7 +517,7 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) -- eseguo local bOk = ML.ApplyMachining( true, false) - if not bOk and bDownDrill then + if not bOk and bDownDrill and bOpen and abs( Proc.Flg) == 1 then if sType == 'Drill' or sType == 'Drill_H2' or sType == 'AngleDrill' then EgtSetMachiningParam( MCH_MP.INVERT, true) else diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index a3e5867..ed50d5d 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2023/08/10 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2023/09/26 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -74,6 +74,7 @@ -- 2023/08/02 Corretto incremento della profondità pari al raggio utensile per tunnel con sega a catena. -- 2023/08/10 Modificata scelta SCC per tasche in Y+/- in coda o quasi (anche per relativi antischeggia con lama). -- 2023/09/12 In MakeByPockets gestito correttamente il ritorno nil di GetUShapeWidth. +-- 2023/09/26 In MakeLongMoreFaces migliorata gestione spezzatura di Tunnel. -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -5568,7 +5569,7 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead) end -- verifico se applicare gestione speciale per tunnel local nSurfBottomId - if Proc.Topology == 'Tunnel' and Proc.AffectedFaces.Front then + if Proc.Topology == 'Tunnel' then bAddEndCapLeftSide = true bAddEndCapRightSide = true -- recupero centro e normale delle facce @@ -5585,9 +5586,12 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead) if Proc.Fct >= 3 then vtOrtho = vtN[1] ^ vtN[3] else - return 0, 0, 0 + local sErr = 'Error : disconnected tunnel' + EgtOutLog( sErr) + return false, sErr end end + vtOrtho = EgtIf( abs( vtOrtho:getY()) > abs( vtOrtho:getZ()), -Y_AX(), -Z_AX()) local ptMaxBox = Proc.Box:getMax() -- per creare le superfici di cap nei tunnel serve aggiungere una faccia di fondo -- recupero il box della trave e lo ingrandisco di poco per essere sicuro di avere intersezione con il piano di fondo @@ -5596,7 +5600,7 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead) -- superficie di fondo nSurfBottomId = EgtSurfTmPlaneInBBox( nAddGrpId, ptMaxBox, vtOrtho, b3SolidExtended, GDB_ID.ROOT) -- calcolo di quanto allargare le superfici - local dWidth = b3Raw:getDimY() + local dWidth = EgtIf( Proc.AffectedFaces.Front, Proc.Box:getDimZ(), Proc.Box:getDimY()) dAddLen = min( dWidth, 100) / 2 end -- la divido in parti lungo X @@ -5649,7 +5653,8 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead) end if i < nPart then -- definizione del piano destro - local ptOn = Point3d( Xmin + i * dPartLen, 0, 0) + local dAdd = EgtIf( i < nPart, dAddLen, 0) + local ptOn = Point3d( Xmin + dAdd + i * dPartLen, 0, 0) local vtN = X_AX() -- taglio della superficie lato destro EgtCutSurfTmPlane( AddId, ptOn, vtN, true, GDB_RT.GLOB) diff --git a/LuaLibs/ProcessTenon.lua b/LuaLibs/ProcessTenon.lua index 6a8465a..696be04 100644 --- a/LuaLibs/ProcessTenon.lua +++ b/LuaLibs/ProcessTenon.lua @@ -1,4 +1,4 @@ --- ProcessTenon.lua by Egaltech s.r.l. 2023/03/27 +-- ProcessTenon.lua by Egaltech s.r.l. 2023/09/26 -- Gestione calcolo tenone per Travi -- 2021/10/04 Corretto calcolo HCING per pezzi piccoli. -- 2022/02/15 Aggiornata VerifyOrientation per macchine con testa da sotto. @@ -10,6 +10,7 @@ -- 2022/12/20 Aggiunta gestione smusso. Migliorata scelta tra sopra e sotto per il punto di inizio. In VerifyOrientation aggiunta trave medio alta. -- 2023/01/20 Modificata scelta lato di attacco per pezzo piccolo su macchine con pinza speciale (pinza 5). -- 2023/03/27 Migliorate condizioni scelta pretaglio con lama o fresa; gestione unificata con ProcessDtTenon. Migliorato calcolo altezza tenone. +-- 2023/09/26 Per macchina TURN si assegna SCC per privilegiare accesso dal lato corto della trave. -- Tabella per definizione modulo local ProcessTenon = {} @@ -325,7 +326,13 @@ function ProcessTenon.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) end -- imposto posizione braccio porta testa local nSCC = MCH_SCC.NONE - if not BD.C_SIMM and not BD.TURN then + if BD.TURN then + if b3Solid:getDimY() >= b3Solid:getDimZ() then + nSCC = MCH_SCC.ADIR_ZP + else + nSCC = MCH_SCC.ADIR_YM + end + elseif not BD.C_SIMM then nSCC = MCH_SCC.ADIR_YM if abs( vtExtr:getY()) > 0.088 then nSCC = EgtIf( vtExtr:getX() < GEO.EPS_SMALL, MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) diff --git a/Version.lua b/Version.lua index 98fa033..38866fa 100644 --- a/Version.lua +++ b/Version.lua @@ -1,6 +1,6 @@ --- Version.lua by Egaltech s.r.l. 2023/08/10 +-- Version.lua by Egaltech s.r.l. 2023/09/26 -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.5i1' +VERSION = '2.5i2' MIN_EXE = '2.5c1'