Compare commits

...

2 Commits

Author SHA1 Message Date
SaraP 72d1b61c6a 3dPrinting 2.5d5 :
- corretto errore nel trim dei setti.
2023-04-28 14:38:45 +02:00
SaraP 02fe05d5e1 3dPrinting 2.5d4 :
- corretto errore nel calcolo del lead out per setti.
2023-04-20 12:03:45 +02:00
3 changed files with 42 additions and 23 deletions
+24 -10
View File
@@ -86,6 +86,10 @@ local function ComputeSurfOffset( nSrf, nGrpId, dOffs, vtSlicing)
end
EgtRelocateGlob( nCopySrf, nGrpId)
EgtErase( nGrpTmp)
if not bExists then
nCopySrf = GDB_ID.NULL
end
return bOk, bExists, nCopySrf
end
@@ -642,11 +646,9 @@ local function AssignUserLinkInfo( tabUserLink, bCCW, bLoopRib, bSameSide, sName
end
------------------------------------------------------------------------
local function AdjustUserLinkRibs( tUserLink, vRibs, vtSlicing, nSrfInt, nSrfExt)
local function AdjustUserLinkRibs( tUserLink, vRibs, vtSlicing, nSrfInt, nSrfExt, nGrp)
if nSrfInt == GDB_ID.NULL and nSrfExt == GDB_ID.NULL then return end
local nGrpTmp = EgtGroup( EgtGetParent( nSrfInt)) -- gruppo temporaneo per conti
local nGrpTmp = EgtGroup( nGrp) -- gruppo temporaneo per conti
local vUsed = {} -- setti di vRibs utilizzati per UserLink
-- verifico se posso aggiungere tratti extra agli UserLink già individuati
@@ -924,10 +926,22 @@ end
local function TrimRibs( vRibs, nRibsGrp, nSrf, dSrfOffs, vtSlicing)
-- costruisco le superfici con cui fare il trim grossolano dei setti
local nSrfInt = EgtCopyGlob( nSrf, nRibsGrp) or GDB_ID.NULL
local nSrfExt = EgtCopyGlob( nSrf, nRibsGrp) or GDB_ID.NULL
EgtSurfFrOffset( nSrfInt, dSrfOffs)
EgtSurfFrOffset( nSrfExt, - dSrfOffs)
local nSrfInt = GDB_ID.NULL
local nSrfExt = GDB_ID.NULL
if nSrf ~= GDB_ID.NULL then
local bOk
bOk, _, nSrfInt = ComputeSurfOffset( nSrf, nRibsGrp, dSrfOffs, vtSlicing)
if not bOk then
EgtOutLog( 'Warning: coarse trim for internal ribs may be innacurate (layer '.. EgtNumToString( s_nCurrIdx) ..') - CalcPaths')
nSrfInt = EgtCopyGlob( nSrf, nRibsGrp)
end
bOk, _, nSrfExt = ComputeSurfOffset( nSrf, nRibsGrp, - dSrfOffs, vtSlicing)
if not bOk then
EgtOutLog( 'Warning: coarse trim for external ribs may be innacurate (layer '.. EgtNumToString( s_nCurrIdx) ..') - CalcPaths')
nSrfExt = EgtCopyGlob( nSrf, nRibsGrp)
end
end
-- trim dei setti
local nTrimmedRibsGrp = EgtGroup( nRibsGrp)
@@ -962,7 +976,7 @@ local function TrimRibs( vRibs, nRibsGrp, nSrf, dSrfOffs, vtSlicing)
end
-- se errore nel calcolare trim ( nCrv = nil) riprendo il setto originario
if not nCrv then
if not nCrv then
nCrv = nCopyRib
nCnt = 1
end
@@ -997,7 +1011,7 @@ local function TrimRibs( vRibs, nRibsGrp, nSrf, dSrfOffs, vtSlicing)
end
-- verifico e sistemo UserLink
AdjustUserLinkRibs( tUserLink, vSingleRibs, vtSlicing, nSrfInt, nSrfExt)
AdjustUserLinkRibs( tUserLink, vSingleRibs, vtSlicing, nSrfInt, nSrfExt, nRibsGrp)
-- verifico se necessari aggiustamenti per holes
AdjustHoledRibs( nTrimmedRibsGrp)
+17 -12
View File
@@ -770,26 +770,31 @@ local function VerifyRibsLead( nId, nRibId, dStrand, bInVsOut, nGrpTmp)
-- recupero il lead in
local nPrev = EgtGetPrev( nRibId)
if nPrev and EgtGetName( nPrev) == LEAD_IN_CRV then
local nSrfTot = EgtSurfFrFatCurve( EgtGetParent( nLeadId), nPrev, 0.5 * dStrand, false)
if nSrfTot then
local nRes = EgtCurveWithRegionClassify( nLeadId, nSrfTot)
if nRes == GDB_CRC.IN or nRes == GDB_CRC.INTERS then
EgtErase( nSrfTot)
EgtErase( nLeadId)
return false
end
else
nSrfTot = EgtSurfFrFatCurve( EgtGetParent( nLeadId), nLeadId, 0.5 * dStrand, false)
-- il caso critico è quando hanno direzioni opposte
local vtSPrev = EgtSV( nPrev, GDB_ID.ROOT)
local vtSCurr = EgtSV( nLeadId, GDB_ID.ROOT)
if AreOppositeVectorApprox( vtSPrev, vtSCurr) then
local nSrfTot = EgtSurfFrFatCurve( EgtGetParent( nLeadId), nPrev, 0.5 * dStrand, false)
if nSrfTot then
local nRes = EgtCurveWithRegionClassify( nPrev, nSrfTot)
local nRes = EgtCurveWithRegionClassify( nLeadId, nSrfTot)
if nRes == GDB_CRC.IN or nRes == GDB_CRC.INTERS then
EgtErase( nSrfTot)
EgtErase( nLeadId)
return false
end
else
nSrfTot = EgtSurfFrFatCurve( EgtGetParent( nLeadId), nLeadId, 0.5 * dStrand, false)
if nSrfTot then
local nRes = EgtCurveWithRegionClassify( nPrev, nSrfTot)
if nRes == GDB_CRC.IN or nRes == GDB_CRC.INTERS then
EgtErase( nSrfTot)
EgtErase( nLeadId)
return false
end
end
end
EgtErase( nSrfTot)
end
EgtErase( nSrfTot)
end
end
+1 -1
View File
@@ -1,4 +1,4 @@
-- Version.lua by Egaltech s.r.l. 2023/02/28
-- Gestione della versione di 3dPrinting
VERSION = '2.5d3'
VERSION = '2.5d5'