3dPrinting :
- modifiche e correzioni per Costolature (Setti -> Ribs).
This commit is contained in:
+50
-49
@@ -23,10 +23,10 @@ local function GetLayerParamsForPathCalc()
|
||||
LayerParams.dOffs = EgtGetInfo( s_nPartId, KEY_OFFSET_SLICE, 'd')
|
||||
LayerParams.nFloorNbr = EgtGetInfo( s_nPartId, KEY_FLOOR_NBR, 'i')
|
||||
LayerParams.vtSlicing = EgtGetInfo( s_nPartId, KEY_SLICING_DIR, 'v')
|
||||
-- parametri setti
|
||||
LayerParams.dSettiOverlap = EgtGetInfo( s_nPartId, KEY_SETTI_OVERLAP, 'd')
|
||||
LayerParams.nSettiShellsNbr = EgtGetInfo( s_nPartId, KEY_SETTI_SHELLS_NBR, 'i')
|
||||
LayerParams.bSettiInvertOrder = EgtGetInfo( s_nPartId, KEY_SETTI_INVERT_ORDER, 'b')
|
||||
-- parametri costolature
|
||||
LayerParams.dRibsOverlap = EgtGetInfo( s_nPartId, KEY_RIBS_OVERLAP, 'd')
|
||||
LayerParams.nRibsShellsNbr = EgtGetInfo( s_nPartId, KEY_RIBS_SHELLS_NBR, 'i')
|
||||
LayerParams.bRibsInvertOrder = EgtGetInfo( s_nPartId, KEY_RIBS_INVERT_ORDER, 'b')
|
||||
return LayerParams
|
||||
end
|
||||
|
||||
@@ -102,10 +102,10 @@ local function AddFloor( nSrfId, nGrpId, LayerParams, nFloorNbr)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------
|
||||
local function ReorderSetti( nGrp, bInvertOrder)
|
||||
local function ReorderRibs( nGrp, bInvertOrder)
|
||||
|
||||
EgtSpInit()
|
||||
local vIds = EgtGetNameInGroup( nGrp, SETTI_CRV .. '*')
|
||||
local vIds = EgtGetNameInGroup( nGrp, RIBS_CRV .. '*')
|
||||
for i = 1, #vIds do
|
||||
local pt = EgtMP( vIds[i], GDB_RT.GLOB)
|
||||
EgtSpAddPoint( pt:getX(), pt:getY(), pt:getZ(), 0, 0, pt:getX(), pt:getY(), pt:getZ(), 0, 0)
|
||||
@@ -113,47 +113,47 @@ local function ReorderSetti( nGrp, bInvertOrder)
|
||||
local vOrd, dLen = EgtSpCalculate( SHP_TY.OPEN)
|
||||
EgtSpTerminate()
|
||||
|
||||
local vOrderedSetti = {}
|
||||
local vOrderedRibs = {}
|
||||
if bInvertOrder then
|
||||
for i = #vOrd, 1, -1 do
|
||||
table.insert( vOrderedSetti, vIds[vOrd[i]])
|
||||
table.insert( vOrderedRibs, vIds[vOrd[i]])
|
||||
end
|
||||
else
|
||||
for i = 1, #vOrd do
|
||||
table.insert( vOrderedSetti, vIds[vOrd[i]])
|
||||
table.insert( vOrderedRibs, vIds[vOrd[i]])
|
||||
end
|
||||
end
|
||||
|
||||
return vOrderedSetti
|
||||
return vOrderedRibs
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------
|
||||
local function CalcSettiPaths( nSliceGrp, nSettiGrp, LayerParams, nStmId)
|
||||
local function CalcRibsPaths( nSliceGrp, nRibsGrp, LayerParams, nStmId)
|
||||
|
||||
-- calcolo gli offset
|
||||
local dOffs = ( LayerParams.nSettiShellsNbr - 1) * LayerParams.dStrand / 2
|
||||
local nOffsGrp = EgtGroup( nSettiGrp)
|
||||
local vSetti = EgtGetNameInGroup( nSettiGrp, SETTI_CRV .. '*')
|
||||
for i = 1, #vSetti do
|
||||
for k = 0, LayerParams.nSettiShellsNbr - 1 do
|
||||
local nNewId = EgtOffsetCurveAdv( vSetti[i], - dOffs + k * LayerParams.dStrand)
|
||||
EgtSetName( nNewId, EgtGetName( vSetti[i]))
|
||||
EgtSetInfo( nNewId, KEY_TYPE, TYPE.SETTO)
|
||||
local dOffs = ( LayerParams.nRibsShellsNbr - 1) * LayerParams.dStrand / 2
|
||||
local nOffsGrp = EgtGroup( nRibsGrp)
|
||||
local vRibs = EgtGetNameInGroup( nRibsGrp, RIBS_CRV .. '*')
|
||||
for i = 1, #vRibs do
|
||||
for k = 0, LayerParams.nRibsShellsNbr - 1 do
|
||||
local nNewId = EgtOffsetCurveAdv( vRibs[i], - dOffs + k * LayerParams.dStrand)
|
||||
EgtSetName( nNewId, EgtGetName( vRibs[i]))
|
||||
EgtSetInfo( nNewId, KEY_TYPE, TYPE.RIB)
|
||||
EgtRelocateGlob( nNewId, nOffsGrp)
|
||||
end
|
||||
end
|
||||
|
||||
-- riordino setti
|
||||
local vOrderedSetti = ReorderSetti( nOffsGrp, LayerParams.bSettiInvertOrder)
|
||||
-- riordino costolature
|
||||
local vOrderedRibs = ReorderRibs( nOffsGrp, LayerParams.bRibsInvertOrder)
|
||||
-- scorro i gruppi di curve
|
||||
local nCrvGrp = EgtGetFirstNameInGroup( nSliceGrp, CONTOUR_GRP .. '*')
|
||||
while nCrvGrp do
|
||||
local nSettiPathGrp = EgtGetFirstNameInGroup( nCrvGrp, SETTI_GRP)
|
||||
local nSrf = EgtGetFirstNameInGroup( nSettiPathGrp, LAYER_SRF)
|
||||
local nRibsPathGrp = EgtGetFirstNameInGroup( nCrvGrp, RIBS_GRP)
|
||||
local nSrf = EgtGetFirstNameInGroup( nRibsPathGrp, LAYER_SRF)
|
||||
if nSrf then
|
||||
for i = 1, #vOrderedSetti do
|
||||
local nNewId = EgtCopyGlob( vOrderedSetti[i], nSettiPathGrp)
|
||||
-- trim dei setti con la regione offsettata
|
||||
for i = 1, #vOrderedRibs do
|
||||
local nNewId = EgtCopyGlob( vOrderedRibs[i], nRibsPathGrp)
|
||||
-- trim delle costole con la regione offsettata
|
||||
local nCrv, nCnt = EgtTrimCurveWithRegion( nNewId, nSrf, true, false)
|
||||
-- elimino tratti troppo corti
|
||||
for nId = nCrv, nCrv + nCnt - 1 do
|
||||
@@ -165,8 +165,8 @@ local function CalcSettiPaths( nSliceGrp, nSettiGrp, LayerParams, nStmId)
|
||||
end
|
||||
end
|
||||
|
||||
if not EgtGetFirstNameInGroup( nSettiPathGrp, SETTI_CRV .. '*') then
|
||||
EgtErase( nSettiPathGrp)
|
||||
if not EgtGetFirstNameInGroup( nRibsPathGrp, RIBS_CRV .. '*') then
|
||||
EgtErase( nRibsPathGrp)
|
||||
end
|
||||
nCrvGrp = EgtGetNextName( nCrvGrp, CONTOUR_GRP .. '*')
|
||||
end
|
||||
@@ -188,7 +188,7 @@ function CalcPaths.Exec( nPartId, nStmId)
|
||||
-- scorro tutti i suoi layer
|
||||
for nIdx = 1, #vLayIds do
|
||||
|
||||
local nSettiGrp = EgtGetFirstNameInGroup( vLayIds[nIdx], SETTI_GRP)
|
||||
local nRibsGrp = EgtGetFirstNameInGroup( vLayIds[nIdx], RIBS_GRP)
|
||||
|
||||
-- scorro tutti i gruppi di contorni
|
||||
local nCrvGrpId = EgtGetFirstNameInGroup( vLayIds[nIdx], CONTOUR_GRP.."*") or GDB_ID.NULL
|
||||
@@ -218,7 +218,8 @@ function CalcPaths.Exec( nPartId, nStmId)
|
||||
if not bOk then
|
||||
EgtErase( nSrfId)
|
||||
nSrfId = EgtCopyGlob( nSrf, nCrvGrpId)
|
||||
bOk = ( EgtSurfFrOffset( nSrfId, -dOffs + 0.05) and EgtSurfFrChunkCount( nSrfId) > 0)
|
||||
local dNewOffs = dOffs - 0.05
|
||||
bOk = ( EgtSurfFrOffset( nSrfId, -dNewOffs) and EgtSurfFrChunkCount( nSrfId) > 0)
|
||||
end
|
||||
-- se offset riuscito, estraggo i contorni (pareti esterne)
|
||||
if bOk then
|
||||
@@ -247,32 +248,32 @@ function CalcPaths.Exec( nPartId, nStmId)
|
||||
EgtErase( nSrfId)
|
||||
end
|
||||
|
||||
-- setti
|
||||
if nSettiGrp then
|
||||
-- costolature
|
||||
if nRibsGrp then
|
||||
|
||||
-- creo o svuoto il gruppo per i setti
|
||||
local nSettiPathGrp = EgtGetFirstNameInGroup( nCrvGrpId, SETTI_GRP)
|
||||
if not nSettiPathGrp then
|
||||
nSettiPathGrp = EgtGroup( nCrvGrpId)
|
||||
EgtSetName( nSettiPathGrp, SETTI_GRP)
|
||||
EgtSetStatus( nSettiPathGrp, GDB_ST.OFF)
|
||||
-- creo o svuoto il gruppo per le costolature
|
||||
local nRibsPathGrp = EgtGetFirstNameInGroup( nCrvGrpId, RIBS_GRP)
|
||||
if not nRibsPathGrp then
|
||||
nRibsPathGrp = EgtGroup( nCrvGrpId)
|
||||
EgtSetName( nRibsPathGrp, RIBS_GRP)
|
||||
EgtSetStatus( nRibsPathGrp, GDB_ST.OFF)
|
||||
else
|
||||
EgtEmptyGroup( nSettiPathGrp)
|
||||
EgtEmptyGroup( nRibsPathGrp)
|
||||
end
|
||||
|
||||
-- calcolo superficie di offset da usare per i setti
|
||||
local nSrfId = EgtCopy( nSrf, nSettiPathGrp)
|
||||
local dOffs = 0.5 * LayerParams.dStrand - LayerParams.dOffs + ( LayerParams.nShellsNbr - 1) * LayerParams.dStrand + ( 1 - LayerParams.dSettiOverlap / 100) * LayerParams.dStrand
|
||||
-- calcolo superficie di offset da usare per le costolature
|
||||
local nSrfId = EgtCopy( nSrf, nRibsPathGrp)
|
||||
local dOffs = 0.5 * LayerParams.dStrand - LayerParams.dOffs + ( LayerParams.nShellsNbr - 1) * LayerParams.dStrand + ( 1 - LayerParams.dRibsOverlap / 100) * LayerParams.dStrand
|
||||
local bOk = ( EgtSurfFrOffset( nSrfId, - dOffs) and EgtSurfFrChunkCount( nSrfId) > 0)
|
||||
if not bOk then
|
||||
EgtErase( nSrfId)
|
||||
nSrfId = EgtCopyGlob( nSrf, nSettiPathGrp)
|
||||
nSrfId = EgtCopyGlob( nSrf, nRibsPathGrp)
|
||||
bOk = ( EgtSurfFrOffset( nSrfId, - dOffs + 0.05) and EgtSurfFrChunkCount( nSrfId) > 0)
|
||||
end
|
||||
-- se non ho una superficie errore ed elimino il gruppo dei setti
|
||||
-- se non ho una superficie errore ed elimino il gruppo delle costolature
|
||||
if not bOk then
|
||||
EgtErase( nSettiPathGrp)
|
||||
EgtOutLog( 'Error on Offset (Setti) (layer '..tostring( nIdx)..') - CalcPaths')
|
||||
EgtErase( nRibsPathGrp)
|
||||
EgtOutLog( 'Error on Offset (Ribs) (layer '..tostring( nIdx)..') - CalcPaths')
|
||||
end
|
||||
|
||||
end
|
||||
@@ -287,9 +288,9 @@ function CalcPaths.Exec( nPartId, nStmId)
|
||||
nCrvGrpId = EgtGetNextName( nCrvGrpId, CONTOUR_GRP.."*") or GDB_ID.NULL
|
||||
end
|
||||
|
||||
-- sistemo eventuali setti
|
||||
if nSettiGrp then
|
||||
CalcSettiPaths( vLayIds[nIdx], nSettiGrp, LayerParams, nStmId)
|
||||
-- sistemo eventuali costolature
|
||||
if nRibsGrp then
|
||||
CalcRibsPaths( vLayIds[nIdx], nRibsGrp, LayerParams, nStmId)
|
||||
end
|
||||
|
||||
if EgtProcessEvents( nIdx / #vLayIds * 100, 0) == 1 then
|
||||
|
||||
Reference in New Issue
Block a user