3dPrinting 2.7i1 :

- corretto errore nella gestione dei setti unbounded con più percorsi.
This commit is contained in:
SaraP
2025-09-04 12:27:52 +02:00
parent e1c375aa5a
commit f9caff1cc0
3 changed files with 18 additions and 22 deletions
+15 -19
View File
@@ -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