Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 72d1b61c6a | |||
| 02fe05d5e1 |
+24
-10
@@ -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
@@ -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
@@ -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'
|
||||
Reference in New Issue
Block a user