3dPrinting :

- corretta la gestione dei setti esterni in caso di solidi con più gruppi di curve
- migliorie varie.
This commit is contained in:
SaraP
2023-10-06 12:33:41 +02:00
parent 9f6dda3079
commit 85bbeb8523
2 changed files with 56 additions and 25 deletions
+16 -4
View File
@@ -358,7 +358,8 @@ local function AddRetraction( nCrvId, vtSlicing, dCoastingLen, dWipeLen, dWipeDi
local nType = EgtGetInfo( nCrvId, KEY_TYPE, 'i')
local bClosed = EgtGetInfo( nCrvId, KEY_CLOSED_CRV, 'b') or false
local bInverted = EgtGetInfo( nCrvId, KEY_INVERTED_CRV, 'b') or false
local dStrand = EgtGetInfo( nCrvId, KEY_CRV_STRAND, 'd')
-- curva ausiliaria per generare correttamente wipe
local nCopyId = EgtCopyGlob( nCrvId, nCrvId, GDB_IN.AFTER)
if not EgtCurveIsClosed( nCopyId) then
@@ -458,7 +459,6 @@ local function AddRetraction( nCrvId, vtSlicing, dCoastingLen, dWipeLen, dWipeDi
end
if nWipeId then
local dStrand = EgtGetInfo( nCrvId, KEY_CRV_STRAND, 'd')
EgtSetName( nWipeId, WIPE_CRV)
EgtSetInfo( nWipeId, KEY_TYPE, TYPE.WIPE)
EgtSetInfo( nWipeId, KEY_CRV_STRAND, dStrand)
@@ -1332,7 +1332,19 @@ local function VerifyRibsLead( nId, nRibId, bInVsOut, nGrpTmp)
-- individuo eventuale lead in o link relativo al setto corrente ( solo se collega due passate dello stesso setto)
local nCurrLI
local nCurrLink
if not bInVsOut then
if bInVsOut then
-- se è lead in devo solo verificare se seguito da un link
local nNext = EgtGetNext( nRibId)
if nNext and EgtGetName( nNext) == LINK_CRV then
local nNextRib = EgtGetNext( nNext)
local nOrigRib = EgtGetInfo( nRibId, KEY_ORIGINAL_RIB, 'i') or -1
local nOrigRibPrev = EgtGetInfo( nNextRib, KEY_ORIGINAL_RIB, 'i') or -1
if nOrigRib == nOrigRibPrev then
nCurrLink = nNext
end
end
else
-- se è lead out devo verificare se preceduto da lead in o da link
local nPrev = EgtGetPrev( nRibId)
if nPrev and EgtGetName( nPrev) == LEAD_IN_CRV then
nCurrLI = nPrev
@@ -1556,7 +1568,7 @@ local function AddRibsLeadIn( nCrv, nLoopsGrp, vtSlicing, nGrpTmp, bForceNoSolid
end
for i = 1, #vCrvOffs do
local dParS = EgtCurveParamAtPoint( vCrvOffs[i], ptS)
local dParS = EgtCurveParamAtPoint( vCrvOffs[i], ptS, 100 * GEO.EPS_SMALL)
if dParS then
local nLeadIn = FindCorrectRibLead( dParS, nCrv, vCrvOffs[i], bLIInvert, dLILen, true, nGrpTmp, bSpecialCase)
-- se lead in possibile