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
+2 -2
View File
@@ -1846,7 +1846,7 @@ local function CalcRibsToolPath( vEntIds, nRibsGrp, nTpathGrpId, LayerParams)
local nGrpTmp = EgtGroup( nRibsGrp, frLoc, GDB_RT.GLOB)
-- aggiungo le costolature nel toolpath
local nLastEnt = EgtGetLastInGroup( nTpathGrpId)
local nLastEnt = EgtGetLastInGroup( nTpathGrpId) or GDB_ID.NULL
for i = 1, #vEntIds do
-- copio entità nel gruppo toolpath
local nNewEntId = EgtCopyGlob( vEntIds[i], nTpathGrpId, GDB_IN.LAST_SON)
@@ -1872,7 +1872,7 @@ local function CalcRibsToolPath( vEntIds, nRibsGrp, nTpathGrpId, LayerParams)
-- recupero i gruppi delle costolature
local tabRibs = {}
local nFirst = EgtGetNext( nLastEnt)
local nFirst = EgtGetNext( nLastEnt) or EgtGetFirstInGroup( nTpathGrpId)
while nFirst do
local sName = EgtGetName( nFirst)
local vIds = EgtGetNameInGroup( nTpathGrpId, sName)
+1 -1
View File
@@ -1,4 +1,4 @@
-- Version.lua by Egaltech s.r.l. 2024/05/06
-- Gestione della versione di 3dPrinting
VERSION = '2.7h1'
VERSION = '2.7i1'