3dPrinting :

- corretto il calcolo della correzione in z per appoggiare sulla tavola/bancaletto.
This commit is contained in:
SaraP
2023-03-13 10:56:56 +01:00
parent 862216b84f
commit 1da71888e7
3 changed files with 25 additions and 21 deletions
+23 -21
View File
@@ -71,9 +71,10 @@ local function AddZCorrection( b3Box, LayerParams)
-- altezza necessaria per lo strand
local dHStrand = 0.5 * LayerParams.dStrand * dNxy + LayerParams.dLayHeight * dNz
-- altezza necessaria per il tool
local dHTool = s_dHMin
local dHTool = LayerParams.dTDiam / 2 * dNxy
-- altezza disponibile
local dHDisp = b3Box:getMin():getZ()
local dHBox = EgtGetInfo( s_nPartId, KEY_BOX_MIN_Z, 'i') or 0
local dHDisp = b3Box:getMin():getZ() - dHBox
local dCorrZ = max( 0, max( dHStrand, dHTool) - dHDisp)
@@ -87,6 +88,21 @@ local function AddZCorrection( b3Box, LayerParams)
end
------------------------------------------------------------------
local function FindWipeEndPoint( ptS, vtDir, dLen, vtSlicing)
local ptE = ptS + vtDir * dLen
-- verifico soddisfi altezza minima per non entrare nella tavola
local k = 1
while ptE:getZ() < s_dHMin + GEO.EPS_SMALL and k < 36 do
vtDir:rotate( vtSlicing, 10)
ptE = ptS + vtDir * dLen
k = k + 1
end
return ptE
end
-------------------------------------------------------------------
local function AddCurvesToToolPath( vEntIds, nTpathGrpId, nOrder, bInvert, vtSlicing, dLayHeight)
@@ -347,14 +363,7 @@ local function AddRetraction( nCrvId, vtSlicing, dCoastingLen, dWipeLen, dWipeDi
end
vtDir:rotate( vtSlicing, EgtIf( bChangeSign, - dAng, dAng))
local ptS = EgtEP( nCoastingId or nCrvId, GDB_ID.ROOT)
local ptE = ptS + vtDir * dWipeLen
-- verifico soddisfi altezza minima per dimensioni utensile
local k = 1
while ptE:getZ() < s_dHMin + GEO.EPS_SMALL and k < 36 do
vtDir:rotate( vtSlicing, EgtIf( bChangeSign, 10, -10))
ptE = ptS + vtDir * dWipeLen
k = k + 1
end
local ptE = FindWipeEndPoint( ptS, vtDir, dWipeLen, vtSlicing)
nWipeId = EgtCurveCompoFromPoints( EgtGetParent( nCoastingId or nCrvId), {ptS, ptE}, GDB_RT.GLOB)
EgtModifyCurveExtrusion( nWipeId, vtSlicing, GDB_RT.GLOB)
EgtRelocateGlob( nWipeId, nCoastingId or nCrvId, GDB_IN.AFTER)
@@ -958,15 +967,7 @@ local function AddRibsLeadOut( nCrv, nTPathGrp, nLoopsGrp, vtSlicing, dStrand, n
local nType = EgtGetInfo( nCrv, KEY_RIBS_TYPE, 'i')
if nType == RIB_TYPE.EXTERNAL then dAng = - dAng end
vtE:rotate( vtSlicing, EgtIf( bInvert, - dAng, dAng))
local ptFinal = ptE + vtE * dRibsLOWipe
-- verifico soddisfi altezza minima per dimensioni utensile
local k = 1
while ptFinal:getZ() < s_dHMin + GEO.EPS_SMALL and k < 36 do
vtE:rotate( vtSlicing, EgtIf( bInvert, - 10, 10))
ptFinal = ptE + vtE * dRibsLOWipe
k = k + 1
end
local ptFinal = FindWipeEndPoint( ptE, vtE, dRibsLOWipe, vtSlicing)
nWipe = EgtCurveCompoFromPoints( nTPathGrp, { ptE, ptFinal}, GDB_RT.GLOB)
EgtModifyCurveExtrusion( nWipe, vtSlicing, GDB_RT.GLOB)
EgtRelocateGlob( nWipe, nCoasting or nCrvLO or nCrv, GDB_IN.AFTER)
@@ -1260,9 +1261,10 @@ function CalcToolPath.Exec( nPartId)
-- recupero i parametri per calcolo dei toolpath
local LayerParams = GetLayerParamsForToolPathCalc()
-- altezza necessaria per ugello ( per correzione wipe)
-- altezza necessaria per correzione wipe
local dNxy = sqrt( LayerParams.vtSlicing:getX() * LayerParams.vtSlicing:getX() + LayerParams.vtSlicing:getY() * LayerParams.vtSlicing:getY())
s_dHMin = LayerParams.dTDiam / 2 * dNxy
local dHBox = EgtGetInfo( s_nPartId, KEY_BOX_MIN_Z, 'i') or 0
s_dHMin = LayerParams.dTDiam / 2 * dNxy + dHBox
-- caso spiral vase
if LayerParams.bSpiralVase then