From f9caff1cc0d4e83e93a9f96513b15a2bba2572cf Mon Sep 17 00:00:00 2001 From: SaraP Date: Thu, 4 Sep 2025 12:27:52 +0200 Subject: [PATCH] =?UTF-8?q?3dPrinting=202.7i1=20:=20-=20corretto=20errore?= =?UTF-8?q?=20nella=20gestione=20dei=20setti=20unbounded=20con=20pi=C3=B9?= =?UTF-8?q?=20percorsi.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/CalcPaths.lua | 34 +++++++++++++++------------------- LuaLibs/CalcToolPath.lua | 4 ++-- Version.lua | 2 +- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/LuaLibs/CalcPaths.lua b/LuaLibs/CalcPaths.lua index 6a70a3d..1761a85 100644 --- a/LuaLibs/CalcPaths.lua +++ b/LuaLibs/CalcPaths.lua @@ -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 diff --git a/LuaLibs/CalcToolPath.lua b/LuaLibs/CalcToolPath.lua index 59fbb6f..e751b18 100644 --- a/LuaLibs/CalcToolPath.lua +++ b/LuaLibs/CalcToolPath.lua @@ -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) diff --git a/Version.lua b/Version.lua index fd6ede3..7db19fb 100644 --- a/Version.lua +++ b/Version.lua @@ -1,4 +1,4 @@ -- Version.lua by Egaltech s.r.l. 2024/05/06 -- Gestione della versione di 3dPrinting -VERSION = '2.7h1' \ No newline at end of file +VERSION = '2.7i1' \ No newline at end of file