3dPrinting :
- corretto il calcolo della correzione in z per appoggiare sulla tavola/bancaletto.
This commit is contained in:
+23
-21
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user