diff --git a/LuaLibs/CalcToolPath.lua b/LuaLibs/CalcToolPath.lua index ccb43c2..fa18fcc 100644 --- a/LuaLibs/CalcToolPath.lua +++ b/LuaLibs/CalcToolPath.lua @@ -18,6 +18,7 @@ local s_nDefaultWipeAng = -90 -- angolo = 0° per wipe significa che esce orto local s_dApproxTol = 0.1 local s_dHSafeWipe = 2 local s_nCurrIdx +local s_dSpiralVaseTanTol = 0.001 --------------------------------------------------------------------- local function GetLayerParamsForToolPathCalc() @@ -2091,12 +2092,20 @@ local function SpiralVase( vLayIds, LayerParams) else local ptOld = EgtEP( nOldId, GDB_ID.ROOT) local ptNew = EgtSP( nNewEntId, GDB_ID.ROOT) - -- se i punti non coincidono modifico la curva per avere transizione più uniforme - if not AreSamePointApprox( ptOld, ptNew) then + -- modifico la curva per avere una transizione più uniforme tra i due layers + if EgtCurveCompoRadius( nNewEntId, 0) == -1 and dist( ptOld, ptNew) / EgtCurveCompoLength( nNewEntId, 0) < s_dSpiralVaseTanTol then + -- se i punti sono abbastanza vicini e la curva inizia con un tratto lineare sufficientemente lungo allora distribuisco la differenza tra i + -- due layer solo sul primo tratto + EgtModifyCurveStartPoint( nNewEntId, ptOld, GDB_RT.GLOB) + else + -- distribuisco la differenza su tutta la curva -- recupero la curva da usare come guida - local nGuideId = EgtCopyGlob( nOldPathId, nTpathGrpId) - -- la porto alla stessa quota del toolpath + local nGuideId = EgtCopyGlob( nOldPathId, nPathGrpId) + -- la rendo coerente con il toolpath EgtMove( nGuideId, vtMove + LayerParams.dLayHeight * LayerParams.vtSlicing, GDB_RT.GLOB) + if LayerParams.bInvert then + EgtInvertCurve( nGuideId) + end -- modifico i punti iniziali affinchè coincidano con il punto finale del percorso precedente EgtChangeClosedCurveStartPoint( nGuideId, ptOld, GDB_RT.GLOB) EgtChangeClosedCurveStartPoint( nNewEntId, ptOld, GDB_RT.GLOB) diff --git a/LuaLibs/RunCalcSolids.lua b/LuaLibs/RunCalcSolids.lua index f27f016..6b1f9bc 100644 --- a/LuaLibs/RunCalcSolids.lua +++ b/LuaLibs/RunCalcSolids.lua @@ -158,7 +158,7 @@ local function CreateSpiralVaseSolid( nCrvId, nSolidGrp, LayerParams, dStrand) local ptRefEnd = EgtUP( nSectE, i, GDB_ID.ROOT) local _, _, dParMinDist = EgtPointCurveDist( ptRefEnd, vCrvs[i+1], GDB_ID.ROOT) local _, dParE = EgtCurveDomain( vCrvs[i+1]) - if abs( dParE - dParMinDist) > GEO.EPS_SMALL then + if abs( dParE - dParMinDist) > GEO.EPS_SMALL and dParMinDist > 0.5 * dParE then EgtTrimCurveEndAtParam( vCrvs[i+1], dParMinDist) end EgtModifyCurveEndPoint( vCrvs[i+1], ptRefEnd, GDB_RT.GLOB) diff --git a/Version.lua b/Version.lua index c284358..d80d882 100644 --- a/Version.lua +++ b/Version.lua @@ -1,4 +1,4 @@ -- Version.lua by Egaltech s.r.l. 2024/05/06 -- Gestione della versione di 3dPrinting -VERSION = '2.6g2' \ No newline at end of file +VERSION = '2.6k1' \ No newline at end of file