From 6117583a794d43a503e50e17d2a7ad525e95b729 Mon Sep 17 00:00:00 2001 From: SaraP Date: Wed, 1 Feb 2023 11:03:24 +0100 Subject: [PATCH] 3dPrinting : - aggiunto offset lead point anche per shell interne quando non ci sono collegamenti. --- LuaLibs/CalcToolPath.lua | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/LuaLibs/CalcToolPath.lua b/LuaLibs/CalcToolPath.lua index 01732cf..eade0d3 100644 --- a/LuaLibs/CalcToolPath.lua +++ b/LuaLibs/CalcToolPath.lua @@ -169,6 +169,30 @@ local function AddLink( vCrv, nTpathGrpId, nLinkType, dLinkParam, dSPOffs, dStra end end +--------------------------------------------------------------------- +local function AddOffsetLeadPoint( vIds, nFirstCopy, dOffsetLP, nLinkType) + + -- se link va fatto solo sulla shell esterna + local nLast = EgtIf( nLinkType == LINK_TYPE.NONE, #vIds, 1) + + if abs( dOffsetLP) > GEO.EPS_SMALL then + for i = 1, nLast do + if dOffsetLP > GEO.EPS_SMALL then + -- taglio curva + EgtTrimCurveStartAtLen( vIds[i], dOffsetLP) + else + -- รจ necessario aggiungere un tratto + local nAddCrv = EgtCopyGlob( EgtIf( i == 1, nFirstCopy, vIds[i]), vIds[1], GDB_IN.AFTER) + EgtTrimCurveStartAtLen( nAddCrv, EgtCurveLength( nAddCrv) - abs( dOffsetLP)) + EgtAddCurveCompoCurve( vIds[i], nAddCrv, true, false) + end + end + end + + -- elimino curva aux usata per prima shell + EgtErase( nFirstCopy) +end + -------------------------------------------------------------------- local function AddLeadIn( nCrvId, LayerParams, nGrpId) @@ -353,20 +377,13 @@ local function CalcShellsToolPath( vEntIds, nTpathGrpId, LayerParams, dCorrZ) -- aggiungo le curve nel toolpath local vIds = AddCurvesToToolPath( vEntIds, nTpathGrpId, LayerParams.nOrder, LayerParams.bInvert, LayerParams.vtSlicing, LayerParams.dLayHeight, dCorrZ) - local nFirstCopy = EgtCopyGlob( vIds[1], nTpathGrpId) + local nFirstCopy = EgtCopyGlob( vIds[1], nTpathGrpId) -- necessaria per corretto offset lead point sulla shell esterna -- aggiungo gli opportuni raccordi AddLink( vIds, nTpathGrpId, LayerParams.nLinkType, LayerParams.dLinkParam, LayerParams.dSPOffs, LayerParams.dStrand, LayerParams.vtSlicing) - -- offset lead point curva iniziale - if LayerParams.dOffsetLP > - GEO.EPS_SMALL then - EgtTrimCurveStartAtLen( vIds[1], LayerParams.dOffsetLP) - EgtErase( nFirstCopy) - else - -- devi aggiungere un tratto di curva - EgtTrimCurveStartAtLen( nFirstCopy, EgtCurveLength( nFirstCopy) - abs( LayerParams.dOffsetLP)) - EgtAddCurveCompoCurve( vIds[1], nFirstCopy, true, false) - end + -- offset lead point + AddOffsetLeadPoint( vIds, nFirstCopy, LayerParams.dOffsetLP, LayerParams.nLinkType) -- aggiungo leadin/leadout if LayerParams.nLeadInType ~= LEAD_TYPE.NONE then