diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 8ab21d7..f2b58f6 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -384,8 +384,8 @@ local function FindMachining( MachiningType, sType, Params, bTopHead, bDownHead, return ReturnParams( MachiningType, Machining.Name, Machining.Type, ToolParams) -- verifico se posso usare lo stesso utensile della testa attiva elseif ( nActiveHead == 1 and not bH2 and sToolName == H1_TOOL) or ( nActiveHead == 2 and bH2 and sToolName == H2_TOOL) then - -- se l'utensile sulla testa attiva è molto più piccolo rispetto a quelli salvati non lo scelgo - if ( not sH1Param or not sH1Param.TDiam or sH1Param.TDiam < dBiggerToolTolerance * ToolParams.TDiam) and ( not sH2Param or not sH2Param.TDiam or sH2Param.TDiam < 1.25 * ToolParams.TDiam) then + -- se l'utensile sulla testa attiva è molto più piccolo rispetto a quelli salvati non lo scelgo, a meno che non siano entrambi grandi (truciolatori) + if ( not sH1Param or not sH1Param.TDiam or ( sH1Param.TDiam < 75 and ToolParams.TDiam < 75 and sH1Param.TDiam < dBiggerToolTolerance * ToolParams.TDiam)) and ( not sH2Param or not sH2Param.TDiam or ( sH2Param.TDiam < 75 and ToolParams.TDiam < 75 and sH2Param.TDiam < 1.25 * ToolParams.TDiam)) then return ReturnParams( MachiningType, Machining.Name, Machining.Type, ToolParams) end end @@ -414,12 +414,14 @@ local function FindMachining( MachiningType, sType, Params, bTopHead, bDownHead, end end if MachineHeadUse == TWO_EQUAL_HEADS then - -- se uno dei due utensili è molto più grande dell'altro scelgo quello senza fare altre analisi + -- se entrambi gli utensili sono piccoli (no truciolatori) e uno dei due è molto più grande dell'altro scelgo quello senza fare altre analisi if sH1Mach ~= "" and sH1Param.TDiam and sH2Mach ~= "" and sH2Param.TDiam then - if sH1Param.TDiam > dBiggerToolTolerance * sH2Param.TDiam then - return ReturnParams( MachiningType, sH1Mach, sType, sH1Param) - elseif sH2Param.TDiam > dBiggerToolTolerance * sH1Param.TDiam then - return ReturnParams( MachiningType, sH2Mach, sType, sH2Param) + if sH1Param.TDiam < 75 or sH2Param.TDiam < 75 then + if sH1Param.TDiam > dBiggerToolTolerance * sH2Param.TDiam then + return ReturnParams( MachiningType, sH1Mach, sType, sH1Param) + elseif sH2Param.TDiam > dBiggerToolTolerance * sH1Param.TDiam then + return ReturnParams( MachiningType, sH2Mach, sType, sH2Param) + end end end -- verifico se cambiare testa o cambiare utensile su quella corrente diff --git a/LuaLibs/ProcessDtTenon.lua b/LuaLibs/ProcessDtTenon.lua index 1735c8f..a9123bc 100644 --- a/LuaLibs/ProcessDtTenon.lua +++ b/LuaLibs/ProcessDtTenon.lua @@ -216,7 +216,7 @@ function ProcessDtTenon.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) end -- recupero la lavorazione local sMillType = 'DtTenon' - local sMilling = ML.FindMilling( sMillType .. EgtIf( bMillDown, '_H2', ''), nil, nil, nil, nil, bMillUp, bMillDown) + local sMilling = ML.FindMilling( sMillType .. EgtIf( bMillDown and not bMillUp, '_H2', ''), nil, nil, nil, nil, bMillUp, bMillDown) if not sMilling then local sErr = 'Error : milling not found in library' EgtOutLog( sErr) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 87570b6..59af38c 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -106,6 +106,7 @@ -- 2024/04/17 In MakeMoreLongFaces corretto calcolo divisione in parti per evitare problemi di ceil con interi perfetti (ceil(3) = 3 o 4??) -- 2024/04/22 In IsTailFeature se LapJoint a 2 facce che taglia intera sezione, deve essere fatto dopo taglio di coda -- 2024/06/18 In MakeByMillAsSaw si cerca di orientare il motore verso il lato più vicino (rispetto a dove è la feature) +-- 2024/06/28 In VerifySideMillAsSaw modificato criterio ricerca utensile in base a normale della faccia -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -565,8 +566,19 @@ local function VerifySideMillAsSaw( Proc, nAddGrpId, vtN, dDiam, dFacElev) return false end -- Recupero la lavorazione - local bDownHead = ( BD.DOWN_HEAD and vtN:getZ() < BD.NZ_MINA) - local sMillingOnSide = ML.FindMilling( 'SideMillAsBlade', nil, nil, nil, nil, not bDownHead, bDownHead) + local bDownHead + local sMillingOnSide + -- se ho testa da sotto e lap-joint diretto verso il basso, cerco prima testa sotto + if BD.DOWN_HEAD and vtN:getZ() < BD.NZ_MINA then + bDownHead = true + sMillingOnSide = ML.FindMilling( 'SideMillAsBlade_H2', nil, nil, nil, nil, not bDownHead, bDownHead) + end + -- se non ha trovato su testa sotto, cerco su testa sopra + if not sMillingOnSide then + bDownHead = false + sMillingOnSide = ML.FindMilling( 'SideMillAsBlade', nil, nil, nil, nil, not bDownHead, bDownHead) + end + if not sMillingOnSide then return false end @@ -3178,6 +3190,11 @@ local function MakeAntiSplintBySaw( Proc, nFacet, vtN, b3Raw, nFacInd, bReduceDe end -- valuto l'angolo tra le due facce local bAdj, ptP1, ptP2, dAng = EgtSurfTmFacetsContact( Proc.Id, nFacInd, nFacet, GDB_ID.ROOT) + if not bAdj then + local sErr = 'Error : Faces not adjacent' + EgtOutLog( sErr) + return false, sErr + end local ptPm = (ptP1+ptP2)/2 -- ottengo il boundingBox e prendo le dimensioni lungo la normale (Z locale) che rappresenta l'elevazione della faccia -- laterale sul punto medio della linea in comune diff --git a/LuaLibs/ProcessLongDoubleCut.lua b/LuaLibs/ProcessLongDoubleCut.lua index 8259820..e6e9934 100644 --- a/LuaLibs/ProcessLongDoubleCut.lua +++ b/LuaLibs/ProcessLongDoubleCut.lua @@ -1070,12 +1070,27 @@ function ProcessLong2Cut.Make( Proc, nPhase, nRawId, nPartId, bForcedBladeMaster EgtSetMachiningParam( MCH_MP.LOTANG, dLioTang) EgtSetMachiningParam( MCH_MP.LOPERP, dLioPerp) -- imposto posizione braccio porta testa per non ingombrare agli estremi + local ptP1LineToMachine, _, ptP2LineToMachine = EgtSurfTmFacetOppositeSide( Proc.Id, vOrd[j] - 1, BL.GetVersRef( vFaceUse[vOrd[j]]), GDB_ID.ROOT) + local vtTg = ptP2LineToMachine - ptP1LineToMachine ; vtTg:normalize() + local bIsMachiningInverted = EgtGetMachiningParam( MCH_MP.INVERT) + if bIsMachiningInverted then + vtTg = -vtTg + end + if BD.C_SIMM then + if abs( vtN[vOrd[j]]:getX()) < GEO.EPS_SMALL then + nSCC = EgtIf( ( vtTg:getX() > GEO.EPS_SMALL), MCH_SCC.ADIR_XM, MCH_SCC.ADIR_XP) + else + nSCC = MCH_SCC.NONE + end + else + nSCC = EgtIf( ( i == 1 or i == nC - 1), MCH_SCC.ADIR_XP, MCH_SCC.ADIR_XM) + end EgtSetMachiningParam( MCH_MP.SCC, nSCC) -- determino e imposto l'utilizzo della faccia EgtSetMachiningParam( MCH_MP.FACEUSE, vFaceUse[vOrd[j]]) -- imposto angolo 3° asse rot local vtOut = EgtIf( vtN[vOrd[j]]:getX() > 0, X_AX(), -X_AX()) - EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, BL.GetBlockedAxis( sCutting, 'perpendicular', b3Raw, vtN, vtOut)) + EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, BL.GetBlockedAxis( EgtIf( bCanUseUnderBlade, sCuttingDn, sCutting), 'perpendicular', b3Raw, vtN, vtOut)) -- eseguo if not ML.ApplyMachining( true, false) then local _, sErr = EgtGetLastMachMgrError() diff --git a/LuaLibs/ProcessStepJointNotch.lua b/LuaLibs/ProcessStepJointNotch.lua index 1f206d1..6c01f95 100644 --- a/LuaLibs/ProcessStepJointNotch.lua +++ b/LuaLibs/ProcessStepJointNotch.lua @@ -1,6 +1,7 @@ -- ProcessStepJointNotch.lua by Egaltech s.r.l. 2022/11/03 -- Gestione calcolo tacca a gradino per Travi -- 2022/11/03 Correzione per riconoscimento testa da sotto su fresatura. +-- 2024/06/28 In MakeFourFaces aggiunta copia del parametro PartId sulla nuova Proc -- Tabella per definizione modulo local ProcessStepJointNotch = {} @@ -384,7 +385,7 @@ local function MakeFourFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, nDiffWidt EgtSurfTmSwapFacets( AddId, 1, 3) EgtSetName( AddId, 'AddCut_' .. tostring( Proc.Id)) -- applico lavorazione - local NewProc = { Id = AddId, Grp = Proc.Grp, Prc = Proc.Prc, Box = Proc.Box, Fct = Proc.Fct, Flg = Proc.Flg} + local NewProc = { Id = AddId, Grp = Proc.Grp, Prc = Proc.Prc, Box = Proc.Box, Fct = Proc.Fct, Flg = Proc.Flg, PartId = Proc.PartId} local b3Raw = EgtGetRawPartBBox( nRawId) Topology.Classify( NewProc, b3Raw) local bOk, sErr = MakeTwoFaces( NewProc, nPhase, nRawId, nPartId, dOvmHead, nDiffWidth) diff --git a/UpdateLog.txt b/UpdateLog.txt index 0bb46ea..5516030 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,11 +1,13 @@ ==== Beam Update Log ==== -Versione 2.6f3 (19/06/2024) -- Modif : in LapJoint -> MakeByMillAsSaw si cerca di orientare il motore verso il lato più vicino -- Modif : in FacesBySaw -> MakeTwo si accettano facce con qualunque orientazione a patto che siano in testa o in coda e abbastanza piccole -- Modif : in Lapjoint lunghe che guardano il top, se sufficientemente lunghe, si blocca l'asse C per non sollecitare inutilmente l'asse B -- Fixed : in FacesBySaw -> MakeOne corretto accorciamento start/end in caso di inversione percorso -- Fixed : in StepJointNotch abilitati correttamente smussi con testa da sotto + +Versione 2.6g1 (01/07/2024) +- Modif : in LongDoubleCut gestita correttamente SCC per lama +- Modif : in MachiningLib miglioramenti a scelta testa ottimizzata +- Modif : in ProcessDtTenon correzione in scelta testa +- Modif : In LapJoint -> VerifySideMillAsSaw modificato criterio ricerca utensile in base a normale della faccia +- Fixed : in MakeAntiSplintBySaw se non si trova adiacenza tra le facce si restituisce errore +- Fixed : In StepJointNotch, MakeFourFaces corretta copia feature con PartId mancante Versione 2.6f2 (17/06/2024) - Modif : correzione a tagli a cubetti (ripristinata versione pre 2.6f1) diff --git a/Version.lua b/Version.lua index 93f7b9e..82ca66a 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.6f3' +VERSION = '2.6g1' MIN_EXE = '2.6e2'