3dPrinting :
- utilizzo delle regioni con numero diverso di passate per forare pareti - correzioni varie.
This commit is contained in:
@@ -26,7 +26,6 @@ LEAD_IN_CRV = "LeadIn"
|
||||
LEAD_OUT_CRV = "LeadOut"
|
||||
FRAME_PART = "FramePart"
|
||||
START_GEOM = "Start"
|
||||
SHELL_NBR_SURF = "ShellNbrSurf"
|
||||
TOT_SHELL_TRIM_SURF = "TotalShellSurfForTrim"
|
||||
|
||||
MIN_LEN = 0.1
|
||||
@@ -133,11 +132,12 @@ TYPE = {
|
||||
INNER_SHELL = 2,
|
||||
INFILL = 3,
|
||||
EXTRA_SHELL = 4,
|
||||
LINK = 5,
|
||||
COASTING = 6,
|
||||
WIPE = 7,
|
||||
RIB = 8,
|
||||
AUX_SOLID = 9,
|
||||
EXTRA_OUTER_SHELL = 5,
|
||||
LINK = 6,
|
||||
COASTING = 7,
|
||||
WIPE = 8,
|
||||
RIB = 9,
|
||||
AUX_SOLID = 10,
|
||||
}
|
||||
|
||||
PRINT_ORDER = {
|
||||
@@ -232,6 +232,7 @@ RIBS_CRV = "Rib"
|
||||
|
||||
SHELL_NBR_GRP = "ShellNbrRegions"
|
||||
SHELL_NBR_CRV = "ShellNbrRegion"
|
||||
SHELL_NBR_SURF = "ShellNbrSurf"
|
||||
|
||||
AUX_SOLIDS_GRP = "AuxSolids"
|
||||
AUX_SOLIDS_CRV = "AuxSolid"
|
||||
|
||||
+99
-45
@@ -183,7 +183,7 @@ local function VerifyPath( nCrvId, dStrand, vtSlicing, nGrp)
|
||||
end
|
||||
-- se non è fattibile con unica passata lo cancello
|
||||
if not bSingleStrand then
|
||||
EgtErase( nCrvId)
|
||||
EgtErase( nCrvId)
|
||||
return false
|
||||
end
|
||||
end
|
||||
@@ -211,6 +211,26 @@ end
|
||||
|
||||
--------------------------------------------------------------------
|
||||
--------------------- RIEMPIMENTI PIENI ----------------------------
|
||||
--------------------------------------------------------------------
|
||||
local function AdjustSurfForFloorCeil( nStrandDiff, nSrfTrim, nShellNbrSurfGrp)
|
||||
|
||||
if EgtSurfFrChunkCount( nSrfTrim) == 0 then return end
|
||||
|
||||
local nSurf = EgtCopyGlob( nSrfTrim, EgtGetParent( nSrfTrim))
|
||||
|
||||
if nShellNbrSurfGrp then
|
||||
local nIdx = nStrandDiff
|
||||
local nShellSurf = EgtGetFirstNameInGroup( nShellNbrSurfGrp, SHELL_NBR_SURF .. tostring( nIdx))
|
||||
while nShellSurf do
|
||||
EgtSurfFrSubtract( nSurf, nShellSurf)
|
||||
nIdx = nIdx + 1
|
||||
nShellSurf = EgtGetFirstNameInGroup( nShellNbrSurfGrp, SHELL_NBR_SURF .. tostring( nIdx))
|
||||
end
|
||||
end
|
||||
|
||||
return nSurf
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------
|
||||
local function ReorderPath( vOldIds, vNewIds)
|
||||
|
||||
@@ -262,7 +282,7 @@ local function ReorderPath( vOldIds, vNewIds)
|
||||
EgtSpInit()
|
||||
-- se racchiude più curve uso shortest path per ordinarle
|
||||
for j = 1, #vChildren do
|
||||
local pt = EgtCP( vChildren[j])
|
||||
local pt = EgtGP( vChildren[j])
|
||||
EgtSpAddPoint( pt:getX(), pt:getY(), pt:getZ(), 0, 0, pt:getX(), pt:getY(), pt:getZ(), 0, 0)
|
||||
end
|
||||
local ptS = EgtSP( nParentIdx)
|
||||
@@ -538,10 +558,6 @@ local function ReorderRibs( nGrp, bInvertOrder, dStrand, nMaxNbr)
|
||||
table.insert( vSPRibs, vIds[i])
|
||||
end
|
||||
end
|
||||
|
||||
local ptS = ORIG()
|
||||
EgtSpSetOpenBound( true, SHP_OB.NEAR_PNT, ptS:getX(), ptS:getY(), ptS:getZ(), 0, 0)
|
||||
|
||||
local vOrd, dLen = EgtSpCalculate( SHP_TY.OPEN)
|
||||
EgtSpTerminate()
|
||||
|
||||
@@ -892,22 +908,24 @@ local function CreateShellNbrSurfaces( nGrp, nShellsNbr)
|
||||
local nMaxShellNbrDiff = 0
|
||||
local nCrvId = EgtGetFirstNameInGroup( nGrp, SHELL_NBR_CRV .. '*')
|
||||
while nCrvId do
|
||||
-- recupero info sul gap
|
||||
local nShellNbrDiff = EgtGetInfo( nCrvId, KEY_SHELL_NBR_DIFF, 'i')
|
||||
-- aggiorno eventuale massimo
|
||||
if nMaxShellNbrDiff < nShellNbrDiff then nMaxShellNbrDiff = nShellNbrDiff end
|
||||
-- salvo gli id delle curve
|
||||
if not tDiffCrvs[nShellNbrDiff] then
|
||||
tDiffCrvs[nShellNbrDiff] = { nCrvId}
|
||||
else
|
||||
table.insert( tDiffCrvs[nShellNbrDiff], nCrvId)
|
||||
if EgtCurveIsClosed( nCrvId) then
|
||||
-- recupero info sul gap
|
||||
local nShellNbrDiff = EgtGetInfo( nCrvId, KEY_SHELL_NBR_DIFF, 'i')
|
||||
-- aggiorno eventuale massimo
|
||||
if nMaxShellNbrDiff < nShellNbrDiff then nMaxShellNbrDiff = nShellNbrDiff end
|
||||
-- salvo gli id delle curve
|
||||
if not tDiffCrvs[nShellNbrDiff] then
|
||||
tDiffCrvs[nShellNbrDiff] = { nCrvId}
|
||||
else
|
||||
table.insert( tDiffCrvs[nShellNbrDiff], nCrvId)
|
||||
end
|
||||
end
|
||||
|
||||
nCrvId = EgtGetNextName( nCrvId, SHELL_NBR_CRV .. '*')
|
||||
end
|
||||
|
||||
-- eventuale correzione del numero massimo in base al numero di pareti interne
|
||||
nMaxShellNbrDiff = min( nMaxShellNbrDiff, nShellsNbr - 1)
|
||||
-- eventuale correzione del numero massimo in base al numero di passate
|
||||
nMaxShellNbrDiff = min( nMaxShellNbrDiff, nShellsNbr)
|
||||
|
||||
-- costruisco per ogni valore la superficie complessiva
|
||||
local nSrfGrp = EgtGroup( nGrp)
|
||||
@@ -925,6 +943,7 @@ local function CreateShellNbrSurfaces( nGrp, nShellsNbr)
|
||||
local nSrfId, nCnt = EgtSurfFlatRegion( nSrfGrp, vCrvIds)
|
||||
for nIdSrf = nSrfId + 1, nSrfId + nCnt - 1 do
|
||||
EgtSurfFrAdd( nSrfId, nIdSrf)
|
||||
EgtErase( nIdSrf)
|
||||
end
|
||||
EgtSetName( nSrfId, SHELL_NBR_SURF .. tostring( nDiff))
|
||||
end
|
||||
@@ -955,7 +974,7 @@ end
|
||||
--------------------------------------------------------------------
|
||||
local function UpdateTotalShellSurf( nSrf, nCrv, dStrand, nGrpId)
|
||||
|
||||
local nSrfExtraShell = EgtSurfFrFatCurve( nGrpId, nCrv, dStrand - s_dOffsCorr, false)
|
||||
local nSrfExtraShell = EgtSurfFrFatCurve( nGrpId, nCrv, dStrand - s_dOffsCorr, false)
|
||||
if nSrfExtraShell then
|
||||
local vtSrfN = EgtSurfFrNormVersor( nSrf, GDB_ID.ROOT)
|
||||
local vtSrfExShN = EgtSurfFrNormVersor( nSrfExtraShell, GDB_ID.ROOT)
|
||||
@@ -971,6 +990,31 @@ end
|
||||
---------------------------------------------------------------------
|
||||
local function ReorderExtraShells( nPathGrp, dStrand, vPtStart, bPrintInvert)
|
||||
|
||||
-- verifico se posso unire due tratti consecutivi della stessa shell
|
||||
local nFirst = EgtGetFirstNameInGroup( nPathGrp, EXTRA_SHELL_CRV .. '*')
|
||||
while nFirst do
|
||||
-- recupero tratti appartenenti alla stessa shell
|
||||
local vShells = EgtGetNameInGroup( nPathGrp, EgtGetName( nFirst))
|
||||
local nCurr = vShells[1]
|
||||
for i = 2, #vShells do
|
||||
if dist( EgtEP( nCurr), EgtSP( vShells[i])) < dStrand + GEO.EPS_SMALL then
|
||||
-- unisco le curve
|
||||
EgtAddCurveCompoLine( nCurr, EgtSP( vShells[i]))
|
||||
EgtAddCurveCompoCurve( nCurr, vShells[i])
|
||||
else
|
||||
nCurr = vShells[i]
|
||||
end
|
||||
end
|
||||
-- check su prima e ultima curva
|
||||
if nCurr ~= nFirst and dist( EgtEP( nCurr), EgtSP( nFirst)) < dStrand + GEO.EPS_SMALL then
|
||||
-- unisco le curve
|
||||
EgtAddCurveCompoLine( nCurr, EgtSP( nFirst))
|
||||
EgtAddCurveCompoCurve( nCurr, nFirst)
|
||||
end
|
||||
|
||||
nFirst = EgtGetNextName( nCurr, EXTRA_SHELL_CRV .. '*')
|
||||
end
|
||||
|
||||
local vIds = EgtGetNameInGroup( nPathGrp, EXTRA_SHELL_CRV .. '*')
|
||||
if not vIds then return end
|
||||
|
||||
@@ -1009,15 +1053,6 @@ local function ReorderExtraShells( nPathGrp, dStrand, vPtStart, bPrintInvert)
|
||||
if not EgtCurveIsClosed( vIds[j]) then
|
||||
local ptS = EgtSP( vIds[j])
|
||||
local ptE = EgtEP( vIds[j])
|
||||
|
||||
if nCnt == 0 and dist( ptE, ptSCurr) < 1.5 * dStrand and EgtGetName( nCurrCrv) == EgtGetName( vIds[j]) then
|
||||
nCnt = nCnt + 1
|
||||
EgtRelocateGlob( vIds[j], nCurrCrv, GDB_IN.BEFORE)
|
||||
EgtSetName( vIds[j], EXTRA_SHELL_CRV .. tostring( k))
|
||||
table.remove( vIds, j)
|
||||
bFound = true
|
||||
break
|
||||
end
|
||||
|
||||
local bLink = dist( ptS, ptECurr) < 1.5 * dStrand
|
||||
|
||||
@@ -1070,10 +1105,12 @@ local function CalcExtraShellsPath( nMaxShellNbrDiff, nShellNbrGrp, nCrvGrpId, d
|
||||
|
||||
for nInd = nMaxShellNbrDiff, 1, -1 do
|
||||
dOffs = dOffs + LayerParams.dStrand
|
||||
|
||||
local nSrfDiff = EgtGetFirstNameInGroup( nShellNbrGrp, SHELL_NBR_SURF .. tostring( nInd))
|
||||
local nOuterCrv = EgtGetFirstNameInGroup( nCrvGrpId, OUTER_CRV)
|
||||
while nOuterCrv do
|
||||
local nCopy = EgtCopyGlob( nOuterCrv, nGrpId)
|
||||
ModifyStartPoint( nCopy, vPtStart)
|
||||
|
||||
-- trim della curva con la regione con diverso numero di passate
|
||||
local nTrimCrv, nTrimCnt = EgtTrimCurveWithRegion( nCopy, nSrfDiff, false, false)
|
||||
@@ -1081,7 +1118,7 @@ local function CalcExtraShellsPath( nMaxShellNbrDiff, nShellNbrGrp, nCrvGrpId, d
|
||||
-- verifico se prima e ultima curva possono essere unite
|
||||
if nTrimCnt > 1 and AreSamePointApprox( EgtEP( nTrimCrv + nTrimCnt - 1), EgtSP( nTrimCrv)) then
|
||||
local nNewId = EgtCurveCompo( nGrpId, { nTrimCrv + nTrimCnt - 1, nTrimCrv})
|
||||
EgtChangeId( nNewId, nTrimCrv)
|
||||
EgtChangeId( nNewId, nTrimCrv)
|
||||
nTrimCnt = nTrimCnt - 1
|
||||
end
|
||||
|
||||
@@ -1104,7 +1141,12 @@ local function CalcExtraShellsPath( nMaxShellNbrDiff, nShellNbrGrp, nCrvGrpId, d
|
||||
if dLen > MIN_LEN and bValid then
|
||||
EgtModifyCurveExtrusion( nId, LayerParams.vtSlicing)
|
||||
EgtSetName( nId, EXTRA_SHELL_CRV .. tostring( nMaxShellNbrDiff - nInd + 1))
|
||||
EgtSetInfo( nId, KEY_TYPE, TYPE.EXTRA_SHELL)
|
||||
if nInd == LayerParams.nShellsNbr then
|
||||
EgtSetInfo( nId, KEY_TYPE, TYPE.EXTRA_OUTER_SHELL)
|
||||
else
|
||||
EgtSetInfo( nId, KEY_TYPE, TYPE.EXTRA_SHELL)
|
||||
end
|
||||
|
||||
-- aggiorno la superficie occupata dalle shell con quella appena calcolata
|
||||
UpdateTotalShellSurf( nSrfTrim, nId, LayerParams.dStrand, nGrpId)
|
||||
-- se la superficie si annulla non è possibile realizzare altro, quindi cancello tutte le curve rimaste
|
||||
@@ -1337,7 +1379,8 @@ function CalcPaths.Exec( nPartId)
|
||||
|
||||
-- regioni con diverso numero di passate
|
||||
local nShellNbrGrp = EgtGetFirstNameInGroup( vLayIds[nIdx], SHELL_NBR_GRP)
|
||||
CreateShellNbrSurfaces( nShellNbrGrp, LayerParams.nShellsNbr)
|
||||
local nMaxShell = max( LayerParams.nShellsNbr, LayerParams.nFloorNbr, LayerParams.nCeilNbr)
|
||||
CreateShellNbrSurfaces( nShellNbrGrp, nMaxShell)
|
||||
local nShellNbrSurfGrp = EgtGetFirstGroupInGroup( nShellNbrGrp or GDB_ID.NULL)
|
||||
|
||||
-- recupero gli start point per il layer
|
||||
@@ -1365,26 +1408,33 @@ function CalcPaths.Exec( nPartId)
|
||||
local nSrf = EgtGetFirstNameInGroup( nCrvGrpId, LAYER_SRF)
|
||||
if nSrf then
|
||||
|
||||
local nMaxShellNbrDiff = ComputeMaxShellNbrDiff( nSrf, nShellNbrSurfGrp)
|
||||
nMaxShellNbrDiff = min( nMaxShellNbrDiff, LayerParams.nShellsNbr)
|
||||
|
||||
-- parete esterna
|
||||
local dOffs = 0.5 * LayerParams.dStrand - LayerParams.dOffs
|
||||
local bOk, bExists, nSrfId = ComputeSurfOffset( nSrf, nCrvGrpId, - dOffs)
|
||||
if not bOk then
|
||||
EgtOutLog( 'Error on ExtOffset (layer '..tostring( nIdx)..') - CalcPaths')
|
||||
elseif not bExists then
|
||||
EgtOutLog( 'Warning : ExtOffset not possible (layer '..tostring( nIdx)..') - CalcPaths')
|
||||
else
|
||||
-- se offset riuscito, estraggo i contorni (pareti esterne)
|
||||
GetPathsFromSurf( nSrfId, SHELL_CRV ..'0', TYPE.OUTER_SHELL, nGrpId, vPtStart)
|
||||
local dOffs = - LayerParams.dOffs - 0.5 * LayerParams.dStrand
|
||||
if nMaxShellNbrDiff < LayerParams.nShellsNbr then
|
||||
dOffs = dOffs + LayerParams.dStrand
|
||||
local bOk, bExists, nSrfId = ComputeSurfOffset( nSrf, nCrvGrpId, - dOffs)
|
||||
if not bOk then
|
||||
EgtOutLog( 'Error on ExtOffset (layer '..tostring( nIdx)..') - CalcPaths')
|
||||
elseif not bExists then
|
||||
EgtOutLog( 'Warning : ExtOffset not possible (layer '..tostring( nIdx)..') - CalcPaths')
|
||||
else
|
||||
-- se offset riuscito, estraggo i contorni (pareti esterne)
|
||||
GetPathsFromSurf( nSrfId, SHELL_CRV ..'0', TYPE.OUTER_SHELL, nGrpId, vPtStart)
|
||||
end
|
||||
EgtErase( nSrfId)
|
||||
end
|
||||
EgtErase( nSrfId)
|
||||
|
||||
local vPtInnerStart = {}
|
||||
local vOuterShell = EgtGetNameInGroup( nGrpId, SHELL_CRV .. '0') or {}
|
||||
for i = 1, #vOuterShell do
|
||||
table.insert( vPtInnerStart, EgtSP( vOuterShell[i]))
|
||||
end
|
||||
if #vPtInnerStart == 0 then vPtInnerStart = vPtStart end
|
||||
|
||||
-- pareti interne complete
|
||||
local nMaxShellNbrDiff = ComputeMaxShellNbrDiff( nSrf, nShellNbrSurfGrp)
|
||||
for nInd = 1, LayerParams.nShellsNbr - 1 - nMaxShellNbrDiff do
|
||||
-- offset della superficie originale
|
||||
dOffs = dOffs + LayerParams.dStrand
|
||||
@@ -1416,17 +1466,21 @@ function CalcPaths.Exec( nPartId)
|
||||
|
||||
-- gestione eventuale floor/ceil
|
||||
if nIdx <= LayerParams.nFloorNbr then
|
||||
local nSurfInfill = AdjustSurfForFloorCeil( LayerParams.nFloorNbr - nIdx + 1, nSrfTrim, nShellNbrSurfGrp) or nSrfTrim
|
||||
if LayerParams.nFloorType == INFILL_TYPE.OFFSET then
|
||||
ComputeOffsetInfill( nSrfTrim, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
ComputeOffsetInfill( nSurfInfill, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
elseif LayerParams.nFloorType == INFILL_TYPE.ZIGZAG then
|
||||
ComputeZigZagInfill( nSrfTrim, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
ComputeZigZagInfill( nSurfInfill, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
end
|
||||
EgtErase( nSurfInfill)
|
||||
elseif nIdx > #vLayIds - LayerParams.nCeilNbr then
|
||||
local nSurfInfill = AdjustSurfForFloorCeil( LayerParams.nCeilNbr - ( #vLayIds - nIdx), nSrfTrim, nShellNbrSurfGrp) or nSrfTrim
|
||||
if LayerParams.nCeilType == INFILL_TYPE.OFFSET then
|
||||
ComputeOffsetInfill( nSrfTrim, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
ComputeOffsetInfill( nSurfInfill, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
elseif LayerParams.nCeilType == INFILL_TYPE.ZIGZAG then
|
||||
ComputeZigZagInfill( nSrfTrim, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
ComputeZigZagInfill( nSurfInfill, LayerParams.dStrand, LayerParams.vtSlicing, INFILL_CRV, TYPE.INFILL, vPtStart, nGrpId)
|
||||
end
|
||||
EgtErase( nSurfInfill)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+12
-2
@@ -230,9 +230,19 @@ local function SlicingExtraObjects( vtSlicing, nLay, nType, sNameGrp, sName)
|
||||
-- slicing oggetto
|
||||
local nNewId, nPntCnt, nCrvCnt, nSrfCnt = EgtPlaneSurfTmInters( ORIG() + ( dZ + dDeltaZ) * vtSlicing, vtSlicing, vIds[i], nGrp, GDB_RT.GLOB, TOLER)
|
||||
|
||||
-- verifico se necessario ricalcolo ( potrebbe servire per solidi ausiliari)
|
||||
-- verifico se necessario ricalcolo
|
||||
local dCorr = 0
|
||||
if nSrfCnt > 0 then
|
||||
local bOpen = false
|
||||
if nType ~= TYPE.RIB and nNewId then
|
||||
for nId = nNewId + nPntCnt, nNewId + nPntCnt + nCrvCnt - 1 do
|
||||
if not EgtCurveIsClosed( nId) then
|
||||
bOpen = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if nSrfCnt > 0 or bOpen then
|
||||
-- elimino vecchio risultato
|
||||
for j = nNewId, nNewId + nPntCnt + nCrvCnt + nSrfCnt - 1 do
|
||||
EgtErase( j)
|
||||
|
||||
@@ -122,7 +122,7 @@ local function CreateSolidFromCurve( nCrvId, nSolidGrp, LayerParams)
|
||||
if nType == TYPE.WIPE then return true end
|
||||
-- scelta del colore
|
||||
local Color = EgtStdColor( 'GRAY')
|
||||
if nType == TYPE.OUTER_SHELL then
|
||||
if nType == TYPE.OUTER_SHELL or nType == TYPE.EXTRA_OUTER_SHELL then
|
||||
Color = EgtStdColor( 'TEAL')
|
||||
elseif nType == TYPE.INNER_SHELL or nType == TYPE.EXTRA_SHELL then
|
||||
Color = EgtStdColor( 'ORANGE')
|
||||
|
||||
@@ -94,14 +94,13 @@ local function AddLink( vCrv, nTpathGrpId, nLinkType, dLinkParam, dSPOffs, dStra
|
||||
-- altrimenti verifico se ha senso creare raccordo
|
||||
-- local dDist = dist( EgtEP( vCrv[i-1]), EgtSP( vCrv[i]))
|
||||
local dDist = EgtPointCurveDist( EgtEP( vCrv[i-1]), vCrv[i])
|
||||
if dDist < dStrand + 2 then
|
||||
if dDist < dStrand + 10 * GEO.EPS_SMALL then
|
||||
local nLinkId
|
||||
if k > 1 then
|
||||
-- modifico lo start point
|
||||
local dLen = EgtCurveLength( vCrv[i-1]) - abs( dSPOffs)
|
||||
EgtTrimCurveEndAtLen( vCrv[i-1], dLen)
|
||||
EgtChangeClosedCurveStartPoint( vCrv[i], EgtEP( vCrv[i-1]))
|
||||
end
|
||||
-- modifico lo start point
|
||||
local dLen = EgtCurveLength( vCrv[i-1]) - EgtIf( k > 1, abs( dSPOffs), 0)
|
||||
EgtTrimCurveEndAtLen( vCrv[i-1], dLen)
|
||||
EgtChangeClosedCurveStartPoint( vCrv[i], EgtEP( vCrv[i-1]))
|
||||
|
||||
-- aggiungo il raccordo
|
||||
EgtTrimCurveEndAtLen( vCrv[i-1], EgtCurveLength( vCrv[i-1]) - dLinkParam / 2)
|
||||
EgtTrimCurveStartAtLen( vCrv[i], dLinkParam / 2)
|
||||
@@ -133,7 +132,7 @@ end
|
||||
local function AddLeadIn( nCrvId, LayerParams, nGrpId)
|
||||
|
||||
local ptE = EgtSP( nCrvId)
|
||||
local vtTang = EgtSV( nCrvId)
|
||||
local vtTang = EgtSV( nCrvId)
|
||||
local vtOrtho = Vector3d( vtTang)
|
||||
local dAng = 90
|
||||
if ( LayerParams.bInvert and LayerParams.nOrder == PRINT_ORDER.INF_INT_EXT) or
|
||||
@@ -327,7 +326,7 @@ local function CalcRibsLink( nCurr, nNext, nLoopGrp, dStrand, bForceLink)
|
||||
if dParS and dParE then
|
||||
local bInvert = false
|
||||
local bClosed = EgtCurveIsClosed( nCrvId)
|
||||
if bClosed then
|
||||
if bClosed then
|
||||
-- se la curva è chiusa verifico i due percorsi possibili dParS->dParE e dParE->dParS
|
||||
local nCopyId1 = EgtCopyGlob( nCrvId, nCurr, GDB_IN.AFTER)
|
||||
local nCopyId2 = EgtCopyGlob( nCrvId, nCurr, GDB_IN.AFTER)
|
||||
@@ -348,7 +347,7 @@ local function CalcRibsLink( nCurr, nNext, nLoopGrp, dStrand, bForceLink)
|
||||
local nCopyId = EgtCopyGlob( nCrvId, nLoopGrp)
|
||||
local nLinkId = EgtCopyGlob( nCrvId, nCurr, GDB_IN.AFTER)
|
||||
|
||||
if dParS > dParE and not bInvert then
|
||||
if dParS > dParE and not bClosed then
|
||||
bInvert = true
|
||||
dParS, dParE = dParE, dParS
|
||||
end
|
||||
|
||||
@@ -34,7 +34,7 @@ function RunSlicePalette.UpdateColors( nPaletteType)
|
||||
if not nType or nType < TYPE.OUTER_SHELL or nType > TYPE.AUX_SOLID then nType = nOldType end
|
||||
nOldType = nType
|
||||
-- scelta del colore
|
||||
if nType == TYPE.OUTER_SHELL then
|
||||
if nType == TYPE.OUTER_SHELL or nType == TYPE.EXTRA_OUTER_SHELL then
|
||||
Color = EgtStdColor( 'TEAL')
|
||||
elseif nType == TYPE.INNER_SHELL or nType == TYPE.EXTRA_SHELL then
|
||||
Color = EgtStdColor( 'ORANGE')
|
||||
|
||||
@@ -15,7 +15,7 @@ local AMD = require( 'AddManData')
|
||||
---------------------------------------------------------------------
|
||||
local function CalcShow( nShellView, nType)
|
||||
if nShellView == SHELL_VIEW_TYPE.OUTER then
|
||||
return ( nType == TYPE.OUTER_SHELL)
|
||||
return ( nType == TYPE.OUTER_SHELL or nType == TYPE.EXTRA_OUTER_SHELL)
|
||||
elseif nShellView == SHELL_VIEW_TYPE.INNER then
|
||||
return ( nType == TYPE.INNER_SHELL)
|
||||
elseif nShellView == SHELL_VIEW_TYPE.INFILL then
|
||||
|
||||
Reference in New Issue
Block a user