From 78b722b23616e968d5d13f0fb6abf89da5062f5a Mon Sep 17 00:00:00 2001 From: SaraP Date: Wed, 8 May 2024 11:09:12 +0200 Subject: [PATCH] 3dPrinting : - migliorata chiusura solidi nel caso spiral vase. --- LuaLibs/RunCalcSolids.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/LuaLibs/RunCalcSolids.lua b/LuaLibs/RunCalcSolids.lua index fa8194a..f0c5453 100644 --- a/LuaLibs/RunCalcSolids.lua +++ b/LuaLibs/RunCalcSolids.lua @@ -105,7 +105,7 @@ end local function CreateSpiralVaseSolid( nCrvId, nSolidGrp, LayerParams, dStrand) -- gruppo temporaneo per conti - local nGrpTmp = EgtGroup( nSolidGrp) + local nGrpTmp = EgtGroup( nSolidGrp, Frame3d( ORIG(), LayerParams.vtSlicing, GDB_RT.GLOB)) local ptS = EgtSP( nCrvId, GDB_ID.ROOT) local vtS = EgtSV( nCrvId, GDB_ID.ROOT) @@ -114,6 +114,7 @@ local function CreateSpiralVaseSolid( nCrvId, nSolidGrp, LayerParams, dStrand) local dDelta = ( ptE - ptS) * LayerParams.vtSlicing -- appiattisco la curva local nCrvCopy = EgtCopyGlob( nCrvId, nGrpTmp) + EgtModifyCurveExtrusion( nCrvCopy, LayerParams.vtSlicing, GDB_RT.GLOB) EgtProjectCurveOnPlane( nCrvCopy, ptS, LayerParams.vtSlicing, GDB_RT.GLOB) EgtMergeCurvesInCurveCompo( nCrvCopy) EgtChangeClosedCurveStartPoint( nCrvCopy, ptS, GDB_RT.GLOB) @@ -141,12 +142,19 @@ local function CreateSpiralVaseSolid( nCrvId, nSolidGrp, LayerParams, dStrand) local dMove = ( ptRef - ptS) * LayerParams.vtSlicing EgtMove( vCrvs[i+1], LayerParams.vtSlicing * dMove, GDB_RT.GLOB) EgtSpiralizeCurveAlongExtrusion( vCrvs[i+1], dDelta) - + -- modifico la curva per congiungerla ai caps - EgtAddCurveCompoLine( vCrvs[i+1], ptRef, false, GDB_RT.GLOB) + EgtApproxCurve( vCrvs[i+1], GDB_CA.LINES, s_dTol) + EgtModifyCurveStartPoint( vCrvs[i+1], ptRef, GDB_RT.GLOB) local ptRefEnd = EgtUP( nSectE, i, GDB_ID.ROOT) - EgtAddCurveCompoLine( vCrvs[i+1], ptRefEnd, true, GDB_RT.GLOB) + local _, _, dParMinDist = EgtPointCurveDist( ptRefEnd, vCrvs[i+1], GDB_ID.ROOT) + local _, dParE = EgtCurveDomain( vCrvs[i+1]) + if abs( dParE - dParMinDist) > GEO.EPS_SMALL then + EgtTrimCurveEndAtParam( vCrvs[i+1], dParMinDist) + end + EgtModifyCurveEndPoint( vCrvs[i+1], ptRefEnd, GDB_RT.GLOB) end + local vSurfs = {} for i = 1, #vCrvs - 1 do vSurfs[i] = EgtSurfTmRuled( nGrpTmp, vCrvs[i], vCrvs[i+1], GDB_RUL.MINDIST, s_dTol) @@ -344,7 +352,7 @@ local function CreateSolidFromCurve( nCrvId, nSolidGrp, LayerParams, nLayer) EgtSetColor( nSrfId, Color) EgtSetInfo( nSrfId, KEY_TYPE, nType) EgtSetInfo( nSrfId, KEY_SLICE_NBR, nLayer) - else + else bOk = false EgtOutLog( 'Warning : CreateSolid_Sewing failed') end