diff --git a/LuaLibs/CalcToolPath.lua b/LuaLibs/CalcToolPath.lua index d46eb9b..2aa4406 100644 --- a/LuaLibs/CalcToolPath.lua +++ b/LuaLibs/CalcToolPath.lua @@ -15,7 +15,8 @@ local AMD = require( 'AddManData') --------------------------------------------------------------------- local function GetLayerParamsForToolPathCalc() local nParamsGrp = EgtGetFirstNameInGroup( GDB_ID.ROOT, PARAMS_GRP) - local LayerParams = {} + local LayerParams = {} + LayerParams.dStrand = EgtGetInfo( nParamsGrp, KEY_STRAND, 'd') LayerParams.dLayHeight = EgtGetInfo( nParamsGrp, KEY_SLICE_STEP, 'd') LayerParams.bInvert = EgtGetInfo( nParamsGrp, KEY_PRINT_DIRECTION, 'b') LayerParams.nOrder = EgtGetInfo( nParamsGrp, KEY_PRINT_ORDER, 'i') @@ -147,28 +148,31 @@ function CalcToolPath.Exec( nPartId) local nPrevId = EgtGetFirstInGroup( nTpathGrpId) local nCurrId = EgtGetNext( nPrevId or GDB_ID.NULL) local k = 0 - while nCurrId do - local nLinkId - EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - k * LayerParams.LinkDist) - k = k + 1 - EgtChangeClosedCurveStartPoint( nCurrId, EgtEP( nPrevId)) - - if LayerParams.LinkType == LINK_TYPE.LINEAR then - EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - LayerParams.LinkParam / 2) - EgtTrimCurveStartAtLen( nCurrId, LayerParams.LinkParam / 2) - nLinkId = EgtLine( nTpathGrpId, EgtEP( nPrevId), EgtSP( nCurrId)) - else - EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - LayerParams.LinkParam / 2) - EgtTrimCurveStartAtLen( nCurrId, LayerParams.LinkParam / 2) - local _, _, dAngIni = SphericalFromVector( EgtEV( nPrevId)) - local _, _, dAngFin = SphericalFromVector( EgtSV( nCurrId)) - nLinkId = EgtBiArc( nTpathGrpId, EgtEP( nPrevId), EgtSP( nCurrId), dAngIni, dAngFin, 0.5) - end - EgtRelocate( nLinkId, nCurrId, GDB_IN.BEFORE) - EgtModifyCurveExtrusion( nLinkId, Z_AX(), GDB_RT.GLOB) - local nType = EgtGetInfo( nCurrId, KEY_TYPE, 'i') - EgtSetInfo( nLinkId, KEY_TYPE, TYPE.LINK) - nPrevId = nCurrId + while nCurrId do + -- verifico se ha senso creare link + if abs( dist( EgtEP( nPrevId), EgtSP( nCurrId))) < LayerParams.dStrand + 10 then + local nLinkId + EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - k * LayerParams.LinkDist) + k = k + 1 + EgtChangeClosedCurveStartPoint( nCurrId, EgtEP( nPrevId)) + + if LayerParams.LinkType == LINK_TYPE.LINEAR then + EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - LayerParams.LinkParam / 2) + EgtTrimCurveStartAtLen( nCurrId, LayerParams.LinkParam / 2) + nLinkId = EgtLine( nTpathGrpId, EgtEP( nPrevId), EgtSP( nCurrId)) + else + EgtTrimCurveEndAtLen( nPrevId, EgtCurveLength( nPrevId) - LayerParams.LinkParam / 2) + EgtTrimCurveStartAtLen( nCurrId, LayerParams.LinkParam / 2) + local _, _, dAngIni = SphericalFromVector( EgtEV( nPrevId)) + local _, _, dAngFin = SphericalFromVector( EgtSV( nCurrId)) + nLinkId = EgtBiArc( nTpathGrpId, EgtEP( nPrevId), EgtSP( nCurrId), dAngIni, dAngFin, 0.5) + end + EgtRelocate( nLinkId, nCurrId, GDB_IN.BEFORE) + EgtModifyCurveExtrusion( nLinkId, Z_AX(), GDB_RT.GLOB) + local nType = EgtGetInfo( nCurrId, KEY_TYPE, 'i') + EgtSetInfo( nLinkId, KEY_TYPE, TYPE.LINK) + end + nPrevId = nCurrId nCurrId = EgtGetNext( nCurrId) end