From 5e65055e86e1d942d8f27fabc90262fce3b186c4 Mon Sep 17 00:00:00 2001 From: SaraP Date: Mon, 3 Oct 2022 12:07:43 +0200 Subject: [PATCH] 3dPrinting : - correzioni varie. --- LuaLibs/CalcPaths.lua | 2 +- LuaLibs/CalcToolPath.lua | 27 +++++++++++++++++------ LuaLibs/RunCalcSolids.lua | 45 ++++++++++++++++++--------------------- 3 files changed, 43 insertions(+), 31 deletions(-) diff --git a/LuaLibs/CalcPaths.lua b/LuaLibs/CalcPaths.lua index 53d63ed..b6f475d 100644 --- a/LuaLibs/CalcPaths.lua +++ b/LuaLibs/CalcPaths.lua @@ -1111,7 +1111,7 @@ local function CalcExtraShellsPath( nMaxShellNbrDiff, nShellNbrGrp, nCrvGrpId, d end for nInd = nMaxShellNbrDiff, 1, -1 do - dOffs = dOffs + LayerParams.dStrand * ( 1 - LayerParams.nStrandOverlap / 100) + dOffs = dOffs + LayerParams.dStrand * ( 1 - EgtIf( nInd == LayerParams.nShellsNbr, 0, LayerParams.nStrandOverlap / 100)) local nSrfDiff = EgtGetFirstNameInGroup( nShellNbrGrp, SHELL_NBR_SURF .. tostring( nInd)) local nOuterCrv = EgtGetFirstNameInGroup( nCrvGrpId, OUTER_CRV) diff --git a/LuaLibs/CalcToolPath.lua b/LuaLibs/CalcToolPath.lua index 0d202e3..df8373c 100644 --- a/LuaLibs/CalcToolPath.lua +++ b/LuaLibs/CalcToolPath.lua @@ -213,6 +213,7 @@ local function AddRetraction( nCrvId, LayerParams, dCoastingLen, dWipeLen, dWipe else EgtErase( nCrvId) end + EgtModifyCurveExtrusion( nCoastingId, LayerParams.vtSlicing) EgtSetName( nCoastingId, COASTING_CRV) EgtSetInfo( nCoastingId, KEY_TYPE, TYPE.COASTING) EgtSetColor( nCoastingId, EgtStdColor('ORANGE')) @@ -242,6 +243,15 @@ local function AddRetraction( nCrvId, LayerParams, dCoastingLen, dWipeLen, dWipe vtDir:rotate( LayerParams.vtSlicing, EgtIf( bChangeSign, - dAng, dAng)) local ptS = EgtEP( nCoastingId or nCrvId) local ptE = ptS + vtDir * dWipeLen + -- verifico soddisfi altezza minima per dimensioni utensile + local dHMin = 0.5 * LayerParams.dTDiam * sqrt( LayerParams.vtSlicing:getX() * LayerParams.vtSlicing:getX() + LayerParams.vtSlicing:getY() * LayerParams.vtSlicing:getY()) + local k = 1 + while ptE:getZ() < dHMin + GEO.EPS_SMALL and k < 36 do + vtDir:rotate( LayerParams.vtSlicing, EgtIf( bChangeSign, 10, -10)) + ptE = ptS + vtDir * dWipeLen + k = k + 1 + end + nWipeId = EgtCurveCompoFromPoints( EgtGetParent( nCrvId), {ptS, ptE}) EgtModifyCurveExtrusion( nWipeId, LayerParams.vtSlicing, GDB_RT.GLOB) EgtRelocateGlob( nWipeId, nCoastingId or nCrvId, GDB_IN.AFTER) @@ -561,7 +571,7 @@ local function FindCorrectRibsLead( dPar, nCrv, nCrvOffs, bLeadInvert, dLeadLen, end -------------------------------------------------------------------- -local function AddRibsLeadIn( nCrv, nLoopsGrp, dStrand) +local function AddRibsLeadIn( nCrv, nLoopsGrp, dStrand, vtSlicing) local dLILen = EgtGetInfo( nCrv, KEY_RIBS_LEAD_IN_LEN, 'd') local bLIInvert = EgtGetInfo( nCrv, KEY_RIBS_LEAD_IN_INVERT, 'b') @@ -578,6 +588,7 @@ local function AddRibsLeadIn( nCrv, nLoopsGrp, dStrand) local nLeadIn = FindCorrectRibsLead( dParS, nCrv, nCrvOffs, bLIInvert, dLILen, dStrand, true) -- se lead in possibile if nLeadIn then + EgtModifyCurveExtrusion( nLeadIn, vtSlicing) EgtSetInfo( nLeadIn, KEY_TYPE, TYPE.RIB) EgtSetName( nLeadIn, LEAD_IN_CRV) end @@ -626,6 +637,7 @@ local function AddRibsLeadOut( nCrv, nTPathGrp, nLoopsGrp, vtSlicing, dStrand) if dRibsLOLen > GEO.EPS_SMALL and not bSkip then nCrvLO = EgtCopyGlob( nCrvRef, nCrv, GDB_IN.AFTER) EgtTrimCurveEndAtLen( nCrvLO, dRibsLOLen) + EgtModifyCurveExtrusion( nCrvLO, vtSlicing) EgtSetInfo( nCrvLO, KEY_TYPE, TYPE.RIB) EgtSetName( nCrvLO, LEAD_OUT_CRV) -- aggiorno ptE e vtE @@ -638,6 +650,7 @@ local function AddRibsLeadOut( nCrv, nTPathGrp, nLoopsGrp, vtSlicing, dStrand) nCoasting = EgtCopyGlob( nCrvRef, nCrvLO or nCrv, GDB_IN.AFTER) EgtTrimCurveStartAtLen( nCoasting, dRibsLOLen) EgtTrimCurveEndAtLen( nCoasting, dRibsLOCoasting) + EgtModifyCurveExtrusion( nCoasting, vtSlicing) EgtSetName( nCoasting, COASTING_CRV) EgtSetInfo( nCoasting, KEY_TYPE, TYPE.COASTING) @@ -789,7 +802,7 @@ local function CalcRibsToolPath( nCrvGrp, nTpathGrpId, LayerParams, dCorrZ) -- verifico se necessario lead in local nPrev = EgtGetPrev( nCrvRib) if not nPrev or EgtGetName( nPrev) then - AddRibsLeadIn( nCrvRib, nLoopGrp, LayerParams.dStrand) + AddRibsLeadIn( nCrvRib, nLoopGrp, LayerParams.dStrand, LayerParams.vtSlicing) end -- verifico se necessario lead out local nNext = EgtGetNext( nCrvRib) @@ -968,10 +981,12 @@ function CalcToolPath.Exec( nPartId) local ptS = EgtEP( nPrev) local ptE = EgtSP( nCurr) local nLinkId = EgtCurveCompoFromPoints( nTpathGrpId, {ptS, ptE}) - EgtRelocateGlob( nLinkId, nCurr, GDB_IN.BEFORE) - EgtModifyCurveExtrusion( nLinkId, LayerParams.vtSlicing, GDB_RT.GLOB) - EgtSetInfo( nLinkId, KEY_TYPE, TYPE.LINK) - EgtSetName( nLinkId, LINK_CRV) + if nLinkId then + EgtRelocateGlob( nLinkId, nCurr, GDB_IN.BEFORE) + EgtModifyCurveExtrusion( nLinkId, LayerParams.vtSlicing, GDB_RT.GLOB) + EgtSetInfo( nLinkId, KEY_TYPE, TYPE.LINK) + EgtSetName( nLinkId, LINK_CRV) + end end sPrevName = sCurrName nPrev = nCurr diff --git a/LuaLibs/RunCalcSolids.lua b/LuaLibs/RunCalcSolids.lua index ae95d20..e668170 100644 --- a/LuaLibs/RunCalcSolids.lua +++ b/LuaLibs/RunCalcSolids.lua @@ -209,9 +209,8 @@ function RunCalcSolids.Exec() if EgtGetInfo( nPartId, KEY_PART_ON_TABLE, 'b') then -- verifico se necessario calcolare il solido local bCalcSolid = EgtGetInfo( nPartId, KEY_CALC_SOLIDS, 'b') or false - local bHasSolids = EgtGetInfo( nPartId, KEY_HAS_SOLIDS, 'b') or false - - if bCalcSolid and not bHasSolids then + + if bCalcSolid then -- recupero i suoi slice local vLayIds = EgtGetNameInGroup( nPartId, SLICE_LAYER .. '*') @@ -221,7 +220,7 @@ function RunCalcSolids.Exec() end EgtSetInfo( nPartId, KEY_HAS_SOLIDS, 1) - + local vErr = {} -- recupero i parametri necessari al calcolo dei solidi local LayerParams = GetLayerParamsForSolidCalc( nPartId) @@ -238,39 +237,37 @@ function RunCalcSolids.Exec() EgtOutBox( 'Error no tool paths', 'SolidCalc') return end - + -- recupero il gruppo dei solidi local nSolidGrpId = EgtGetFirstNameInGroup( nCrvGrpId, SOLID_GRP) or GDB_ID.NULL if nSolidGrpId == GDB_ID.NULL then nSolidGrpId = EgtGroup( nCrvGrpId) EgtSetName( nSolidGrpId, SOLID_GRP) EgtSetLevel( nSolidGrpId, GDB_LV.TEMP) - else - EgtEmptyGroup( nSolidGrpId) - end - - -- scorro le curve del percorso utensile - local nId = EgtGetFirstInGroup( nTPathGrpId) - while nId do - local bOk = CreateSolidFromCurve( nId, nSolidGrpId, LayerParams) - if not bOk then - table.insert( vErr, nIdx) + + -- scorro le curve del percorso utensile + local nId = EgtGetFirstInGroup( nTPathGrpId) + while nId do + local bOk = CreateSolidFromCurve( nId, nSolidGrpId, LayerParams) + if not bOk then + table.insert( vErr, nIdx) + end + nId = EgtGetNext( nId) end - nId = EgtGetNext( nId) - end - - -- processo gli eventi - if ( nIdx % 20) == 0 then - EgtDraw() - if EgtProcessEvents( nIdx / #vLayIds * 100, 0) == 1 then - return + + -- processo gli eventi + if ( nIdx % 20) == 0 then + EgtDraw() + if EgtProcessEvents( nIdx / #vLayIds * 100, 0) == 1 then + return + end end end --passo al gruppo di contorni successivo nCrvGrpId = EgtGetNextName( nCrvGrpId, CONTOUR_GRP.."*") or GDB_ID.NULL end - EgtDraw() + EgtDraw() if EgtProcessEvents( EgtIf( PRINT, 300, 0) + nIdx / #vLayIds * 100, 0) == 1 then return end