diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 1394037..eb16352 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -18,7 +18,7 @@ -- 2022/07/26 Alla funzione FindFaceBestOrientedAsAxis aggiunta la possibilità di escludere una faccia dalla ricerca -- 2022/09/01 Aggiunte le funzioni GetTunnelDimension, CalcCollisionSafety, SetOpenSide, precedentemente in ProcessLapJoint. -- 2023/01/10 In GetFaceWithMostAdj aggiunta verifica che la feature abbia almeno una faccia aperta. --- 2023/01/20 Modificata PutStartNearestToEdge per gestire lato preferito come Y+, Y-, z*, Z-. +-- 2023/01/20 Modificata PutStartNearestToEdge per gestire lato preferito come Y+, Y-, z*, Z-. Aggiunta funzione GetDistanceToNextPart. -- Tabella per definizione modulo local BeamLib = {} @@ -785,6 +785,22 @@ function BeamLib.GetPhaseType( nPhase) return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'TYPE') or '') end +--------------------------------------------------------------------- +function BeamLib.GetDistanceToNextPart( nRawId, nPhase) + -- Recupero la distanza tra la fine del pezzo e il pezzo successivo + local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or BD.OVM_MID + -- se segue una parte rimanente riutilizzabile, modifico opportunamente questa distanza + if not BeamLib.IsSplittedPartPhase( nPhase) then + local nNextRawId = EgtGetNextRawPart( nRawId) + if nNextRawId and + EgtGetPartInRawPartCount( nNextRawId) <= 0 and + EgtGetRawPartBBox( nNextRawId):getDimX() >= BD.MinRaw then + dDistToNextPiece = BD.OVM_MID + end + end + return dDistToNextPiece +end + --------------------------------------------------------------------- function BeamLib.GetChainSawBlockedAxis( nInd) if BD.GetChainSawBlockedAxis then diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index e2759d5..136929b 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -2499,7 +2499,7 @@ local function MakeByMillAsSaw( Proc, nPhase, nRawId, nPartId, nFacInd, -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) -- ottengo la distanza tra la fine del pezzo e il pezzo successivo - local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5. + local dDistToNextPiece = BL.GetDistanceToNextPart( nRawId, nPhase) -- verifico definizione faccia con il maggior numero di adiacenze if not nFacInd then local sErr = 'Error : MakeByMillAsSaw could not find reference face' @@ -2643,7 +2643,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, -- ingombro del grezzo local b3Raw = EgtGetRawPartBBox( nRawId) -- ottengo la distanza tra la fine del pezzo e il pezzo successivo - local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5.4 + local dDistToNextPiece = BL.GetDistanceToNextPart( nRawId, nPhase) -- verifico se fessura con 3 facce o tunnel local bOrthoFaces local bIs3Faces = ( Proc.Fct == 3) @@ -5474,7 +5474,7 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead) -- recupero l'ingombro del grezzo di appartenenza local b3Raw = EgtGetRawPartBBox( nRawId) -- ottengo la distanza tra la fine del pezzo e il pezzo successivo - local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or BD.OVM_MID + local dDistToNextPiece = BL.GetDistanceToNextPart( nRawId, nPhase) -- verifico se applicare gestione speciale delle giunzioni (U diretta come asse X) local bAddEndCap = false local dAddLen = 0 diff --git a/LuaLibs/ProcessLongCut.lua b/LuaLibs/ProcessLongCut.lua index df1295d..7b15e4a 100644 --- a/LuaLibs/ProcessLongCut.lua +++ b/LuaLibs/ProcessLongCut.lua @@ -1,4 +1,4 @@ --- ProcessLongCut.lua by Egaltech s.r.l. 2022/11/30 +-- ProcessLongCut.lua by Egaltech s.r.l. 2023/01/18 -- Gestione calcolo taglio longitudinale per Travi -- 2021/02/03 Corretto FaceUse con fresa orizzontale su taglio orizzontale. -- 2021/05/18 Possibile taglio con lama anche di fianco su macchina con testa da sotto. @@ -15,7 +15,7 @@ -- 2022/11/04 Aggiunto passaggio parametro bDownHead (Testa da Sotto) nelle chiamate a MakeSideFace. -- 2022/11/28 Correzioni varie per attacco, pulizia spigoli, utilizzo H3 -- 2022/11/30 Modifiche su SCC per TURN. --- 2022/01/18 Aggiunta, se richiesta, una lavorazione ulteriore con sega a catena nei casi in cui la doppia lama non sia sufficiente. +-- 2023/01/18 Aggiunta, se richiesta, una lavorazione ulteriore con sega a catena nei casi in cui la doppia lama non sia sufficiente. -- Tabella per definizione modulo local ProcessLongCut = {} @@ -463,10 +463,10 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus local bTopStart = ( Proc.Box:getMax():getZ() > b3Solid:getMax():getZ() - 20) -- Determino se parte da sotto local bBottomStart = ( Proc.Box:getMin():getZ() < b3Solid:getMin():getZ() + 20) - -- determino se lavorazione da davanti o da dietro + -- Determino se lavorazione da davanti o da dietro local bFront = ( vtN:getY() < 0) - -- ottengo la distanza tra la fine del pezzo e il pezzo successivo - local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or BD.OVM_MID + -- Ottengo la distanza tra la fine del pezzo e il pezzo successivo o grezzo utilizzabile e non ancora separato + local dDistToNextPiece = BL.GetDistanceToNextPart( nRawId, nPhase) local bForcedLim local sWarn ---------------------------------------------------------------------------------------------------------------------------------------- @@ -554,13 +554,7 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus EgtOutLog( sErr) return false, sErr end - - -- verifico se la parte rimanente della barra è riutilizzabile - local nNextRawId = EgtGetNextRawPart( nRawId) - local bIsNextRawPartUnloadable = nNextRawId and - EgtGetPartInRawPartCount( nNextRawId) <= 0 and - EgtGetRawPartBBox( nNextRawId):getDimX() >= BD.MinRaw - + -- Se non limitato o forzato uso lama e da sopra e richiesto con doppio taglio di lama e superiore al limite minimo if ( ( not bLimXmin and not bLimXmax) or bForceUseBladeOnNotThruFace) and ( bCanUseUnderBlade or bCanUseBlade) and nUseBlade > 0 and b3Solid:getDimX() > dLimMinPiece - 1 then local sCutting @@ -607,8 +601,8 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus end end end - -- se la fine (a sinistra) non è limitata e ho un pezzo successivo meno distante di metà raggio, oppure se grezzo finale della barra di lunghezza sufficiente, setto la fine come limitata - if ((( bCanUseBlade or bCanUseUnderBlade) and ( dDistToNextPiece < dToolDiam/2 or dDistToNextPiece < dToolDiamDn/2)) or bIsNextRawPartUnloadable) and not bLimXmin then + -- se la fine (a sinistra) non è limitata e ho un pezzo successivo o grezzo riutilizzabile meno distante di metà raggio, setto la fine come limitata + if (( bCanUseBlade or bCanUseUnderBlade) and ( dDistToNextPiece < dToolDiam/2 or dDistToNextPiece < dToolDiamDn/2)) and not bLimXmin then if bForceUseBladeOnNotThruFace then bForcedLim = true bLimXmin = true @@ -1004,8 +998,8 @@ function ProcessLongCut.Make( Proc, nPhase, nRawId, nPartId, bCustUseBlade, nCus dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth end end - -- se la fine (a sinistra) non è limitata e ho un pezzo successivo meno distante di metà raggio, oppure se grezzo finale della barra di lunghezza sufficiente, setto la fine come limitata - if ( dDistToNextPiece < dToolDiam/2 or bIsNextRawPartUnloadable) and not bLimXmin then + -- se la fine (a sinistra) non è limitata e ho un pezzo successivo o grezzo riutilizzabile meno distante di metà raggio, setto la fine come limitata + if dDistToNextPiece < dToolDiam/2 and not bLimXmin then bForcedLim = true bLimXmin = true end diff --git a/LuaLibs/ProcessLongDoubleCut.lua b/LuaLibs/ProcessLongDoubleCut.lua index 303e153..32a1596 100644 --- a/LuaLibs/ProcessLongDoubleCut.lua +++ b/LuaLibs/ProcessLongDoubleCut.lua @@ -325,7 +325,7 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster end -- ottengo la distanza tra la fine del pezzo e il pezzo successivo - local dDistToNextPiece = EgtGetInfo( nRawId, 'BDST', 'd') or 5.4 + local dDistToNextPiece = BL.GetDistanceToNextPart( nRawId, nPhase) local bForcedLim local sWarn ----------------------------------------------------------------------------------------------------------------------------------------