diff --git a/BatchProcess.lua b/BatchProcess.lua index ac98499..8034ebd 100644 --- a/BatchProcess.lua +++ b/BatchProcess.lua @@ -482,7 +482,6 @@ end -- *** Eseguo stima tempi *** EgtOutLog( ' +++ Estimating T&L >>>') if not EgtEstimate( '', 'EgtCAM5 - ' .. sNgeFile) then - BEAM.ERR = 21 local _, sName, _ = EgtSplitPath( BEAM.FILE) BEAM.MSG = 'Error estimating production time : ' .. sName diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index 73144a1..1adc852 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -263,14 +263,14 @@ function BeamLib.GetNearestParalOpposite( vtRef, vtNorm) local dVertSq =vtMyRef:getZ() * vtMyRef:getZ() -- se prevalente la componente orizzontale if dHorSq >= dVertSq then - if abs( vtMyRef:getX()) > abs( vtMyRef:getY()) then - if vtMyRef:getX() > 0 then + if abs( vtMyRef:getX()) > abs( vtMyRef:getY()) - GEO.EPS_SMALL then + if vtMyRef:getX() > -GEO.EPS_SMALL then return MCH_MILL_FU.PARAL_LEFT else return MCH_MILL_FU.PARAL_RIGHT end else - if vtMyRef:getY() > 0 then + if vtMyRef:getY() > -GEO.EPS_SMALL then return MCH_MILL_FU.PARAL_FRONT else return MCH_MILL_FU.PARAL_BACK @@ -278,7 +278,7 @@ function BeamLib.GetNearestParalOpposite( vtRef, vtNorm) end -- altrimenti prevale la verticale else - if vtMyRef:getZ() > 0 then + if vtMyRef:getZ() > -GEO.EPS_SMALL then return MCH_MILL_FU.PARAL_DOWN else return MCH_MILL_FU.PARAL_TOP @@ -300,14 +300,14 @@ function BeamLib.GetNearestOrthoOpposite( vtRef, vtNorm) local dVertSq = vtMyRef:getZ() * vtMyRef:getZ() -- se prevalente la componente orizzontale if dHorSq >= dVertSq then - if abs( vtMyRef:getX()) >= abs( vtMyRef:getY()) then - if vtMyRef:getX() > 0 then + if abs( vtMyRef:getX()) > abs( vtMyRef:getY()) - GEO.EPS_SMALL then + if vtMyRef:getX() > -GEO.EPS_SMALL then return MCH_MILL_FU.ORTHO_LEFT else return MCH_MILL_FU.ORTHO_RIGHT end else - if vtMyRef:getY() > 0 then + if vtMyRef:getY() > -GEO.EPS_SMALL then return MCH_MILL_FU.ORTHO_FRONT else return MCH_MILL_FU.ORTHO_BACK @@ -315,7 +315,7 @@ function BeamLib.GetNearestOrthoOpposite( vtRef, vtNorm) end -- altrimenti prevale la verticale else - if vtMyRef:getZ() > 0 then + if vtMyRef:getZ() > -GEO.EPS_SMALL then return MCH_MILL_FU.ORTHO_DOWN else return MCH_MILL_FU.ORTHO_TOP @@ -885,10 +885,10 @@ function BeamLib.MakeOneFaceBySaw( nSurfId, nFacet, sCutting, dSawDiam, Par5, dV EgtOutLog( 'vtN=' .. tostring( vtN) .. ' vtRef=' .. tostring( vtRef) .. ' vtOut=' .. tostring( vtOut) .. ' vtAux=' .. tostring( vtAux), 3) local nSCC = MCH_SCC.NONE if not BD.C_SIMM or vtRef:getZ() < 0.866 then - if abs( vtAux:getX()) > abs( vtAux:getY()) then - nSCC = EgtIf( ( vtAux:getX() > 0), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM) + if abs( vtAux:getX()) > abs( vtAux:getY()) - GEO.EPS_SMALL then + nSCC = EgtIf( ( vtAux:getX() > -GEO.EPS_SMALL), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM) else - nSCC = EgtIf( ( vtAux:getY() > 0), MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM) + nSCC = EgtIf( ( vtAux:getY() > -GEO.EPS_SMALL), MCH_SCC.ADIR_YP, MCH_SCC.ADIR_YM) end end -- inserisco la lavorazione di taglio diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index a15c326..4c16b21 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -59,19 +59,21 @@ function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, sCutName) local vtTg = ptT2 - ptT1 ; vtRef[1] = vtN[1] ^ vtTg if vtRef[1] * vtN[2] < 0 then vtRef[1] = - vtRef[1] end + vtRef[1]:normalize() vtRef[2] = vtN[2] ^ vtTg if vtRef[2] * vtN[1] < 0 then vtRef[2] = - vtRef[2] end + vtRef[2]:normalize() -- determino quale faccia è più grande local ptPs = ( ptT1 + ptT2) / 2 local dSqDim1 = ( ptC[1] - ptPs):sqlen() local dSqDim2 = ( ptC[2] - ptPs):sqlen() - local nBigInd = EgtIf( dSqDim1 >= dSqDim2, 1, 2) + local nBigInd = EgtIf( dSqDim1 > dSqDim2 - 1., 1, 2) local nSmaInd = 3 - nBigInd - local nUpInd = EgtIf( vtN[1]:getZ() >= vtN[2]:getZ(), 1, 2) + local nUpInd = EgtIf( vtN[1]:getZ() > vtN[2]:getZ() - GEO.EPS_SMALL, 1, 2) local nOtInd = 3 - nUpInd -- metto in relazione la scelta facce con il confronto del versore Z con la scelta in base alla grandezza faccia -- se la faccia più grande è messa secondaria e il suo versore Z non è negativo - if nOtInd == nBigInd and vtN[nBigInd]:getZ() > -( 5 * GEO.EPS_SMALL) and vtN[nSmaInd]:getZ() < 0.866 then + if nOtInd == nBigInd and vtN[nBigInd]:getZ() > -5 * GEO.EPS_SMALL and vtN[nSmaInd]:getZ() < 0.866 then nOtInd = nSmaInd nUpInd = nBigInd end @@ -129,7 +131,7 @@ function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, sCutName) end end else - nUpInd = EgtIf( vtN[1]:getZ() >= vtN[2]:getZ(), 1, 2) + nUpInd = EgtIf( vtN[1]:getZ() > vtN[2]:getZ() - GEO.EPS_SMALL, 1, 2) nOtInd = 3 - nUpInd -- se prima faccia lavorata è da sotto scambio le facce if vtN[nOtInd]:getZ() < -0.5 then diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 23540d6..9607069 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2021/01/26 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2021/01/31 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -161,8 +161,8 @@ local function TestElleShape4( Proc) end --------------------------------------------------------------------- -local function VerifySawChain( Proc, dMinDim, dMaxDim, vtOrtho) - local bUseSawChain = false +local function VerifyChainSaw( Proc, dMinDim, dMaxDim, vtOrtho) + local bUseChainSaw = false local sMchFind = 'Sawing' local sSawing = ML.FindSawing(sMchFind) local dMaxMat = 0 @@ -171,7 +171,7 @@ local function VerifySawChain( Proc, dMinDim, dMaxDim, vtOrtho) local dMaxDepth = 200 -- se non trova una lavorazione di sawing esco if not sSawing then - return bUseSawChain + return bUseChainSaw else -- recupero i dati dell'utensile local dToolLength = 0 @@ -187,11 +187,11 @@ local function VerifySawChain( Proc, dMinDim, dMaxDim, vtOrtho) dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth end if dSawThick < dMinDim + 10 * GEO.EPS_SMALL and dSawWidth < dMaxDim + 10 * GEO.EPS_SMALL then - bUseSawChain = true + bUseChainSaw = true end end end - return bUseSawChain, sSawing, dMaxMat, dSawCornerRad, dSawThick, dMaxDepth + return bUseChainSaw, sSawing, dMaxMat, dSawCornerRad, dSawThick, dMaxDepth end --------------------------------------------------------------------- @@ -554,7 +554,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw) -- verifico se può essere fatto con svuotatura if VerifyIfPocket( Proc, dDimMin, vtOrtho) then return true, false - elseif VerifySawChain( Proc, dDimMin, dDimMax, vtOrtho) then + elseif VerifyChainSaw( Proc, dDimMin, dDimMax, vtOrtho) then return true, false else return false @@ -2113,7 +2113,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, EgtSetMachiningParam( MCH_MP.ENDADDLEN, EgtIf( bOpenEnd, 0, - dSawWidth / 2)) end -- imposto angolo 3° asse rot - EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, 'A=90') + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, EgtIf( BD.C_SIMM, 'A=90', 'A=0')) -- imposto offset radiale local dOffs = ( i - 1) * dStep EgtSetMachiningParam( MCH_MP.OFFSR, dOffs) @@ -2129,7 +2129,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes) -- eseguo if not EgtApplyMachining( true, false) then - EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, 'A=0') + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, EgtIf( BD.C_SIMM, 'A=0', 'A=90')) if not EgtApplyMachining( true, false) then local _, sErr = EgtGetLastMachMgrError() EgtSetOperationMode( nMchFId, false) @@ -2145,7 +2145,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, -- altrimenti segacatena di fianco else -- verifico se posso farlo con la sega-catena - local bMakeChainSaw, sSawing2, dMaxMat2, dSawCornerRad2, dSawThick2 = VerifySawChain( Proc, dDimMin, dDimMax, vtOrtho) + local bMakeChainSaw, sSawing2, dMaxMat2, dSawCornerRad2, dSawThick2 = VerifyChainSaw( Proc, dDimMin, dDimMax, vtOrtho) if bMakeChainSaw then -- Verifico se necessarie più passate local nStep = ceil( ( dDimMin - 10 * GEO.EPS_SMALL) / dSawThick2) @@ -2180,7 +2180,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, --else -- EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_RIGHT) end - EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, 'A=90') + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, EgtIf( BD.C_SIMM, 'A=90', 'A=0')) -- imposto offset radiale local dOffs = ( i - 1) * dStep EgtSetMachiningParam( MCH_MP.OFFSR, dOffs) @@ -2198,7 +2198,7 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, end -- eseguo if not EgtApplyMachining( true, false) then - EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, 'A=0') + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, EgtIf( BD.C_SIMM, 'A=0', 'A=90')) if not EgtApplyMachining( true, false) then local _, sErr = EgtGetLastMachMgrError() EgtSetOperationMode( nMchFId, false) @@ -3048,7 +3048,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa -- Se la svuotatura precedente non è stata fatta e chamfer non è mutuamente esclusivo provo con la sega-catena if bTryWithBlades and nChamfer < 2 then -- verifico se posso farlo con la sega-catena - local bMakeChainSaw, sSawing, dMaxMat, dSawCornerRad, dSawThick = VerifySawChain( Proc, dDimMin, dDimMax, vtOrtho) + local bMakeChainSaw, sSawing, dMaxMat, dSawCornerRad, dSawThick = VerifyChainSaw( Proc, dDimMin, dDimMax, vtOrtho) if bMakeChainSaw then -- Verifico se necessarie più passate local nStep = ceil( ( dDimMin - 10 * GEO.EPS_SMALL) / dSawThick) @@ -3077,7 +3077,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_BACK) end -- imposto angolo 3° asse rot - EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, 'A=90') + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, EgtIf( BD.C_SIMM, 'A=90', 'A=0')) -- imposto offset radiale local dOffs = ( i - 1) * dStep EgtSetMachiningParam( MCH_MP.OFFSR, dOffs) @@ -3092,7 +3092,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa end -- eseguo if not EgtApplyMachining( true, false) then - EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, 'A=0') + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, EgtIf( BD.C_SIMM, 'A=0', 'A=90')) if not EgtApplyMachining( true, false) then local _, sErr = EgtGetLastMachMgrError() EgtSetOperationMode( nMchFId, false)