diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index a35dbc2..f4ba2c6 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -46,7 +46,6 @@ -- 2022/06/15 Correzione calcolo normale alla faccia per sega catena di fianco. -- 2022/06/16 Implemento lavorazioni con fresatura di lato per L30 (al momento solo passanti) se parametro Q03=2. Modificate funzioni Make, MakeMoreFaces, Classify. -- 2022/06/21 Implemento di lavorazioni non passanti con fresatura di lato per L30 se parametro Q03=2. Modificate funzioni MakeMoreFaces, Classify. --- 2022/06/29 Migliorate lavorazioni con fresatura di lato per L30 se parametro Q03=2. Ora con 4 facce / 3 facce a L può entrare una fresa grande fino al doppio dell'altezza della tasca / doppio della dimensione minima. -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -4346,9 +4345,6 @@ end --------------------------------------------------------------------- local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePart, bPrevBhSideMill, bAllWithEndCap) - if not BD.MAXDIAM_POCK_CORNER then - BD.MAXDIAM_POCK_CORNER = 30 - end local sWarn -- recupero l'ingombro del grezzo di appartenenza local b3Raw = EgtGetRawPartBBox( nRawId) @@ -4839,11 +4835,11 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa elseif Proc.Fct == 4 then -- se non angoli fittizi, per rifinire gli angoli premio utensile diam 25 o da BD if not bAllWithEndCap then - dDiam = min( dDiam, BD.MAXDIAM_POCK_CORNER) + dDiam = min( dDiam, BD.MAXDIAM_POCK_CORNER or 30) end elseif Proc.Fct == 3 and bIsL then -- per rifinire gli angoli premio utensile diam 25 o da BD - dDiam = min( ( 2 * dDiam) - 1, BD.MAXDIAM_POCK_CORNER) + dDiam = min( 2 * dDiam, BD.MAXDIAM_POCK_CORNER or 30) else dDiam = 2 * dDiam end @@ -5142,45 +5138,9 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa dFacElev = BL.GetFaceElevation( Proc.Id, nFacInd) dCollSic = CalcCollisionSafety( tvtNx[2]) local dMachDepth = dFacElev + dCollSic - local frFacRec, dFacDim1, dFacDim2 = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFacInd, GDB_ID.ROOT) - -- limito il diametro utensile massimo a 100 per queste lavorazioni - dToolTargetDiam = min( BD.MAXDIAM_POCK_CORNER, 100) - -- se è 4 facce devo capire quale è il lato libero e settare dH e dV di conseguenza - if Proc.Fct == 4 then - local vAdj = {} - local vtN2 - for i = 1, Proc.Fct do - -- recupero le adiacenze del loop esterno - local vFacAdj = EgtSurfTmFacetAdjacencies( Proc.Id, i - 1)[1] - -- le conto - local nCount = 0 - for j = 1, #vFacAdj do - if vFacAdj[j] >= 0 then - nCount = nCount + 1 - end - end - vAdj[i] = nCount - if vAdj[i] == Proc.Fct - 1 and i ~= nFacInd + 1 then - dV = BL.GetFaceElevation( Proc.Id, i - 1) - vtN2 = EgtSurfTmFacetNormVersor( Proc.Id, i - 1, GDB_ID.ROOT) - end - end - local vtRes = vtN2 ^ vtN - if AreSameOrOppositeVectorApprox( frFacRec:getVersX(), vtRes) then - dH = dFacDim1 - else - dH = dFacDim2 - end - -- se la tasca ha dimensioni adeguate cerco di usare una fresa con raggio fino a metà altezza - dToolMaxDiam = EgtIf( dH >= dToolTargetDiam and dV > 0.5 * dToolTargetDiam, dToolTargetDiam, min( dH, dV, dToolTargetDiam)) - -- per le L a 3 facce, avendo due lati aperti per l'attacco, si considera un diametro utensile pari al doppio della dimensione minima; il "- 1" è un accorgimento per impedire bug derivanti da dimensione della tasca uguale a D\2 utensile - elseif Proc.Fct == 3 and bIsL then - dToolMaxDiam = min ( ( min( dFacDim1, dFacDim2) * 2) - 1, dToolTargetDiam) - -- in tutti gli altri casi l'utensile dovrà essere grande al massimo come il lato più piccolo - else - dToolMaxDiam = min ( dFacDim1, dFacDim2, dToolTargetDiam) - end - local _, sPocketing = VerifyPocket( Proc, dToolMaxDiam, dFacElev, nil, sMyMchFind) + _, dH, dV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFacInd, GDB_ID.ROOT) + local dDimMin = min( dH, dV) + local _, sPocketing = VerifyPocket( Proc, dDimMin, dFacElev, nil, sMyMchFind) bOk, sWarn2, sTuuidPk, dDiamTool = MakePocket( Proc, nPartId, ptPs, tvtNx, nFacInd, sMyMchFind, nUseRoughTool, sPocketing, dMachDepth, nil, nil, bAllWithEndCap) if not bOk then return false, sWarn2 end if sWarn2 then