3dPrinting :
- correzione solidi spiral vase.
This commit is contained in:
@@ -353,6 +353,7 @@ local function AddLeadIn( nCrvId, LayerParams, nGrpId)
|
||||
EgtModifyCurveExtrusion( nLeadInCrv, LayerParams.vtSlicing, GDB_RT.GLOB)
|
||||
EgtSetInfo( nLeadInCrv, KEY_TYPE, TYPE.LINK)
|
||||
EgtSetName( nLeadInCrv, LEAD_IN_CRV)
|
||||
EgtSetColor( nLeadInCrv, EgtStdColor('GRAY'))
|
||||
local dStrand = EgtGetInfo( nCrvId, KEY_CRV_STRAND, 'd')
|
||||
EgtSetInfo( nLeadInCrv, KEY_CRV_STRAND, dStrand)
|
||||
end
|
||||
@@ -387,6 +388,7 @@ local function AddLeadOut( nCrvId, LayerParams, nGrpId)
|
||||
EgtModifyCurveExtrusion( nLeadOutCrv, LayerParams.vtSlicing, GDB_RT.GLOB)
|
||||
EgtSetInfo( nLeadOutCrv, KEY_TYPE, TYPE.LINK)
|
||||
EgtSetName( nLeadOutCrv, LEAD_OUT_CRV)
|
||||
EgtSetColor( nLeadOutCrv, EgtStdColor('GRAY'))
|
||||
local dStrand = EgtGetInfo( nCrvId, KEY_CRV_STRAND, 'd')
|
||||
EgtSetInfo( nLeadOutCrv, KEY_CRV_STRAND, dStrand)
|
||||
end
|
||||
|
||||
+37
-26
@@ -436,41 +436,52 @@ function RunCalcSolids.Exec()
|
||||
nSolidGrpId = EgtGroup( nCrvGrpId)
|
||||
EgtSetName( nSolidGrpId, SOLID_GRP)
|
||||
EgtSetLevel( nSolidGrpId, GDB_LV.TEMP)
|
||||
-- scorro le curve del percorso utensile per creare i solidi
|
||||
local vIds = EgtGetAllInGroup( nTPathGrpId)
|
||||
|
||||
if LayerParams.bSpiralVase and #vIds > 2 and EgtGetName( vIds[#vIds]) ~= WIPE_CRV then
|
||||
-- nel caso a spirale gestione speciale per unire i tratti dei primi layers che sono stati spezzati per feed variabile
|
||||
local bHasDelta = EgtExistsInfo( vIds[#vIds], KEY_FEED_COEFF)
|
||||
if bHasDelta then
|
||||
-- prima curva è a quota costante
|
||||
CreateSolidFromCurve( vIds[1], nSolidGrpId, LayerParams, nLayer)
|
||||
-- le rimanenti curve possono essere unite
|
||||
local vNewIds = EgtTableFill( vIds[2], #vIds-1)
|
||||
local nNewCrv = EgtCurveCompo( nSolidGrpId, vNewIds, false)
|
||||
local dStrand = EgtGetInfo( vIds[2], KEY_CRV_STRAND, 'd') or LayerParams.dStrand
|
||||
EgtSetInfo( nNewCrv, KEY_CRV_STRAND, dStrand)
|
||||
EgtSetInfo( nNewCrv, KEY_TYPE, TYPE.OUTER_SHELL)
|
||||
CreateSolidFromCurve( nNewCrv, nSolidGrpId, LayerParams, nLayer)
|
||||
EgtErase( nNewCrv)
|
||||
else
|
||||
local vNewIds = EgtTableFill( vIds[1], #vIds-1)
|
||||
local nNewCrv = EgtCurveCompo( nSolidGrpId, vNewIds, false)
|
||||
local dStrand = EgtGetInfo( vIds[2], KEY_CRV_STRAND, 'd') or LayerParams.dStrand
|
||||
EgtSetInfo( nNewCrv, KEY_CRV_STRAND, dStrand)
|
||||
EgtSetInfo( nNewCrv, KEY_TYPE, TYPE.OUTER_SHELL)
|
||||
CreateSolidFromCurve( nNewCrv, nSolidGrpId, LayerParams, nLayer)
|
||||
EgtErase( nNewCrv)
|
||||
CreateSolidFromCurve( vIds[#vIds], nSolidGrpId, LayerParams, nLayer)
|
||||
-- spiral vase
|
||||
if LayerParams.bSpiralVase then
|
||||
-- i tratti di ingresso, uscita e quelli a quota costante vanno gestiti singolarmente, quelli a quota variabile vanno concatenati
|
||||
local vChainedIds = {}
|
||||
local vTmpIds = {}
|
||||
for i = 1, #vIds do
|
||||
local sName = EgtGetName( vIds[i])
|
||||
local dDelta = ( EgtEP( vIds[i], GDB_ID.ROOT) - EgtSP( vIds[i], GDB_ID.ROOT)) * LayerParams.vtSlicing
|
||||
if abs( dDelta) < GEO.EPS_SMALL or sName == LEAD_IN_CRV or sName == LEAD_OUT_CRV or sName == COASTING_CRV or sName == WIPE_CRV then
|
||||
-- inserisco il gruppo di tratti da concatenare e lo resetto
|
||||
if #vTmpIds > 0 then
|
||||
table.insert( vChainedIds, vTmpIds)
|
||||
vTmpIds = {}
|
||||
end
|
||||
-- inserisco la curva singola corrente
|
||||
table.insert( vChainedIds, { vIds[i]})
|
||||
else
|
||||
table.insert( vTmpIds, vIds[i])
|
||||
end
|
||||
end
|
||||
-- inserisco ultimo gruppo
|
||||
if #vTmpIds > 0 then
|
||||
table.insert( vChainedIds, vTmpIds)
|
||||
end
|
||||
|
||||
for i = 1, #vChainedIds do
|
||||
if #vChainedIds[i] == 1 then
|
||||
CreateSolidFromCurve( vChainedIds[i][1], nSolidGrpId, LayerParams, nLayer)
|
||||
else
|
||||
local nNewCrv = EgtCurveCompo( nSolidGrpId, vChainedIds[i], false)
|
||||
local dStrand = EgtGetInfo( vChainedIds[i][1], KEY_CRV_STRAND, 'd') or LayerParams.dStrand
|
||||
EgtSetInfo( nNewCrv, KEY_CRV_STRAND, dStrand)
|
||||
EgtSetInfo( nNewCrv, KEY_TYPE, TYPE.OUTER_SHELL)
|
||||
CreateSolidFromCurve( nNewCrv, nSolidGrpId, LayerParams, nLayer)
|
||||
EgtErase( nNewCrv)
|
||||
end
|
||||
end
|
||||
|
||||
-- caso standard
|
||||
else
|
||||
-- caso standard
|
||||
for i = 1, #vIds do
|
||||
CreateSolidFromCurve( vIds[i], nSolidGrpId, LayerParams, nLayer)
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
bSolidsOk = true
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user