diff --git a/LuaLibs/DiceCut.lua b/LuaLibs/DiceCut.lua index d53cad2..ce6bd85 100644 --- a/LuaLibs/DiceCut.lua +++ b/LuaLibs/DiceCut.lua @@ -275,12 +275,15 @@ local function VerifyFirstOrthoCut( CutTable, OffsetP, BBoxRawPart, dNzLimDwnUp) -- normale alla faccia ortogonale local _, vtO = EgtSurfTmFacetCenter( CutOId, 0, GDB_ID.ROOT) vtO = vtO - vtO * vtN1 * vtN1 ; vtO:normalize() + local dMaxElev = EgtSurfTmFacetElevationInBBox( CutOId, 0, BBoxRawPart, true, GDB_ID.ROOT) -- calcolo lunghezza prima semi-faccia local asseX1 = vtO local asseY1 = vtN1 ^ asseX1 local Frame1 = Frame3d( ptC1, ptC1+asseX1, ptC1+asseY1) local Box1 = EgtGetBBoxRef( Cut1Id, GDB_BB.STANDARD, Frame1) local x1 = Box1:getDimX() + -- prendo il massimo tra la lugnhezza della faccia parallela e l'elevazione della corrispondente ortogonale + x1 = max( x1, dMaxElev) -- calcolo lunghezza seconda semi-faccia local asseX2 = vtO local asseY2 = vtN2 ^ asseX2 @@ -430,7 +433,7 @@ function DiceCut.GetDice( nParent, BBoxRawPart, ptCPlanes, vtNPlanes, bGetOrtoPl if dElevO then local m = ceil( dElevO / OffsetO) OffsetO = dElevO / m - end + end -- elenco di tutte le superfici generate dai tagli local TabFUCHSIA = {} diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index 4708298..bada866 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -309,7 +309,7 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw bIsBiLinea = true local vtTg1 = ptPm - ptP1 ; vtTg1:normalize() local vtTg2 = ptP2 - ptPm ; vtTg2:normalize() - local dCosMax = 0.951 -- cos( 18°) + local dCosMax = 0.966 -- cos( 15°) local dLenMin = 30 local dLenMax = max( 0.5 * dSawDiam * 0.17365 + 1, 2 * dLenMin) dCosAngleL1L2 = vtTg1 * vtTg2 @@ -468,14 +468,14 @@ function FacesBySaw.MakeOne( nSurfId, nFacet, sCutting, dSawDiam, Par5, dVzLimDw nSCC = MCH_SCC.ADIR_ZM elseif abs( vtAux:getX()) > abs( vtAux:getY()) - GEO.EPS_SMALL then -- se il taglio è orizzontale, si gira aggregato lama per facilitare caduta del legno - if abs( vtTg:getZ()) < GEO.EPS_SMALL and abs( vtOrthO:getZ()) > GEO.EPS_SMALL then + if abs( vtTg:getZ()) < 10 * GEO.EPS_SMALL and not AreSameOrOppositeVectorApprox( vtN, Z_AX()) then nSCC = EgtIf( ( vtAux:getX() > -GEO.EPS_SMALL), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) else nSCC = EgtIf( ( vtAux:getX() > -GEO.EPS_SMALL), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM) end else -- se il taglio è orizzontale, si gira aggregato lama per facilitare caduta del legno - if abs( vtTg:getZ()) < GEO.EPS_SMALL and abs( vtOrthO:getZ()) > GEO.EPS_SMALL then + if abs( vtTg:getZ()) < 10 * GEO.EPS_SMALL and not AreSameOrOppositeVectorApprox( vtN, Z_AX()) then nSCC = EgtIf( ( vtAux:getY() > -GEO.EPS_SMALL), MCH_SCC.ADIR_YM, MCH_SCC.ADIR_YP) else nSCC = EgtIf( ( vtAux:getY() > -GEO.EPS_SMALL), MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 4ed4761..d362ae0 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -6398,6 +6398,21 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa bUseOtherFace = true rfFac, dH, dV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFacInd, GDB_ID.ROOT) end + + -- se forma a U (recupero la larghezza della faccia perpendicolarmente alle altre) + if Proc.Fct == 3 and bIsU then + local vtN2 = EgtSurfTmFacetNormVersor( Proc.Id, EgtIf( nFacInd == 0, 1, 0), GDB_ID.ROOT) + local vtX = vtN2 ^ vtN + if not vtX:isSmall() then + local frRef = Frame3d( ptC, ptC + 100 * vtX, ptC + 100 * vtN2) + local b3Ref = EgtSurfTmGetFacetBBoxRef( Proc.Id, nFacInd, GDB_BB.STANDARD, frRef) + if b3Ref then + dH = b3Ref:getDimX() + dV = b3Ref:getDimY() + end + end + end + -- eseguo bOk, sWarn, sStat = MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev, bForceUseBlade, diff --git a/UpdateLog.txt b/UpdateLog.txt index dcf6615..718f1ed 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,11 +1,16 @@ ==== Beam Update Log ==== +Versione 2.6k2 (28/11/2024) +- Modif : nei tagli migliorati i casi in cui si inverte l'SCC per facilitare la caduta del legno +- Modif : nei tagli migliorato controllo rimozione del primo cubetto molto piccolo +- Modif : nei tagli migliorati i casi con bilinea +- Fixed : in lapjoint corretto un caso in cui si sbagliava a calcolare la dimensione della tasca + Versione 2.6k1 (15/11/2024) - Modif : in macchine tipo Fast lunghezza minima feature per considerare taglio lungo portata a 400 mm - Modif : in tacche si applica svuotatura anche nel caso di elevazione non raggiunta - Modif : in forature in doppio, se necessario, si aumenta lo step per evitare collisione tra le punte durante lavorazione - Fixed : in L010 correzione in utilizzo Q07 (forzatura frese) -- Fixed : risolto un problema di chariot collision in doppio in macchine tipo PF - Fixed : in coda di rondine corretto bug che causava un blocco anomalo del programma Versione 2.6j4 (06/11/2024) diff --git a/Version.lua b/Version.lua index d05a9c1..e423195 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.6k1' +VERSION = '2.6k2' MIN_EXE = '2.6e5'