3dPrinting 2.7i1 :
- corretto errore nella gestione dei setti unbounded con più percorsi.
This commit is contained in:
+15
-19
@@ -722,33 +722,26 @@ local function VerifyRibsHoles( vIds)
|
||||
local ptS2 = EgtSP( vIds[i])
|
||||
local ptE2 = EgtEP( vIds[i])
|
||||
|
||||
local bAdd1 = dist( ptS1, ptE2) < dStrand + 10 * GEO.EPS_SMALL or dist( ptS1, ptS2) < dStrand + 10 * GEO.EPS_SMALL
|
||||
local bAdd2 = dist( ptE1, ptS2) < dStrand + 10 * GEO.EPS_SMALL or dist( ptE1, ptE2) < dStrand + 10 * GEO.EPS_SMALL
|
||||
local bInvert = dist( ptE1, ptE2) < dStrand + 10 * GEO.EPS_SMALL or dist( ptS1, ptS2) < dStrand + 10 * GEO.EPS_SMALL
|
||||
|
||||
if bInvert then
|
||||
EgtInvertCurve( vIds[i])
|
||||
end
|
||||
local bAdd1 = dist( ptS1, ptE2) < dStrand + 10 * GEO.EPS_SMALL
|
||||
local bAdd2 = dist( ptE1, ptS2) < dStrand + 10 * GEO.EPS_SMALL
|
||||
bAdd = bAdd1 or bAdd2
|
||||
|
||||
if bAdd1 and bAdd2 then
|
||||
-- se da unire in setto chiuso
|
||||
bAdd = true
|
||||
EgtAddCurveCompoLine( vIds[i-1], EgtEP( vIds[i]), false)
|
||||
EgtAddCurveCompoLine( vIds[i-1], EgtSP( vIds[i]))
|
||||
-- da unire in setto chiuso
|
||||
EgtAddCurveCompoLine( vIds[i-1], ptE2, false)
|
||||
EgtAddCurveCompoLine( vIds[i-1], ptS2)
|
||||
EgtAddCurveCompoCurve( vIds[i-1], vIds[i])
|
||||
table.remove( vIds, i) -- rimuovo il setto dalla tabella
|
||||
|
||||
elseif bAdd2 then
|
||||
bAdd = true
|
||||
-- unisco il secondo tratto al primo
|
||||
EgtAddCurveCompoLine( vIds[i-1], EgtSP( vIds[i]))
|
||||
EgtAddCurveCompoLine( vIds[i-1], ptS2)
|
||||
EgtAddCurveCompoCurve( vIds[i-1], vIds[i])
|
||||
table.remove( vIds, i) -- rimuovo il setto dalla tabella
|
||||
|
||||
elseif bAdd1 then
|
||||
bAdd = true
|
||||
-- unisco il primo tratto al secondo
|
||||
EgtAddCurveCompoLine( vIds[i], EgtSP( vIds[i-1]))
|
||||
EgtAddCurveCompoLine( vIds[i], ptS1)
|
||||
EgtAddCurveCompoCurve( vIds[i], vIds[i-1])
|
||||
table.remove( vIds, i-1) -- rimuovo il setto dalla tabella
|
||||
end
|
||||
@@ -1425,7 +1418,7 @@ local function ComputeTrimSurfWithOverlapsForRibs( vIds, nGrp, nSrfInt, nSrfExt,
|
||||
|
||||
elseif nType == RIB_TYPE.EXTERNAL then
|
||||
if not nSrfExt then
|
||||
-- il setto va cancellato
|
||||
-- sono in un CrvGrp intermedio, il setto va cancellato
|
||||
elseif nSrfExt == GDB_ID.NULL then
|
||||
-- se la superficie non esiste il setto va conservato
|
||||
tSurfOffs[vIds[i]] = GDB_ID.NULL
|
||||
@@ -1444,8 +1437,11 @@ local function ComputeTrimSurfWithOverlapsForRibs( vIds, nGrp, nSrfInt, nSrfExt,
|
||||
end
|
||||
|
||||
else
|
||||
-- se unbounded non va mai trimmato
|
||||
tSurfOffs[vIds[i]] = GDB_ID.NULL
|
||||
-- il setto unbounded deve comparire solo nell'ultimo CrvGrp senza alcun trim. Se nSrfExt non è definita sono in un CrvGrp intermedio e il setto va cancellato
|
||||
-- se nSrfExt è definita allora il setto non va trimmato
|
||||
if nSrfExt then
|
||||
tSurfOffs[vIds[i]] = GDB_ID.NULL
|
||||
end
|
||||
end
|
||||
|
||||
tOffs[vIds[i]] = dOffs
|
||||
@@ -2508,7 +2504,7 @@ local function CalcRibsPaths( nSliceGrp, nRibsGrp, LayerParams, vPtStart, bIgnor
|
||||
bAllTwoStrands, vTypeSequence, nLoopGrp, tSurfOffs)
|
||||
EgtSetInfo( nRibsPathGrp or GDB_ID.NULL, KEY_RIBS_INTERS, bInters)
|
||||
EgtSetInfo( nRibsPathGrp or GDB_ID.NULL, KEY_RIBS_SPECIAL_CASE, bSpecialCase)
|
||||
|
||||
|
||||
-- riordino le costolature
|
||||
if bSpecialCase then
|
||||
-- gestione caso speciale di intersezione e 2 passate
|
||||
|
||||
Reference in New Issue
Block a user