From 2ec0d8162e6dadb50de7c243404cdb9481f3d9b9 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Fri, 1 Dec 2023 10:40:15 +0100 Subject: [PATCH 1/7] in LapJoint->MakeMoreFaces, nelle OpenPocket, ammesso utensile con diametro fino a 3 volte la dimensione della tasca (era 2) --- LuaLibs/ProcessLapJoint.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 039efea..599bce4 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -85,6 +85,7 @@ -- 2023/11/06 In MakeStaircaseStep gestito ritorno. -- 2023/11/06 Migliorie per lavorazione con AngularTransmission con FAST. -- 2023/11/30 Calcolo elevazione velocizzato e centralizzato tramite la funzione GetFaceElevation. +-- 2023/12/01 In MakeMoreFaces, nelle OpenPocket, ammesso utensile con diametro fino a 3 volte la dimensione della tasca (era 2). -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -4936,7 +4937,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa -- per rifinire gli angoli premio utensile diam 25 o da BD dDiam = min( 2 * dDiam + 10 * GEO.EPS_SMALL, BD.MAXDIAM_POCK_CORNER) else - dDiam = 2 * dDiam + dDiam = 3 * dDiam end end sMchFindBackUp = sMchFind From 63090926899627e17e3fdb40b169b44c93df89a1 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 5 Dec 2023 18:37:28 +0100 Subject: [PATCH 2/7] In FacesBySaw -> CalcLeadInOutPerpGeom gestito caso in cui la geometria della feature esce dal grezzo --- LuaLibs/FacesBySaw.lua | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index 9a18d4d..9e1e07f 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -715,6 +715,40 @@ function FacesBySaw.CalcLeadInOutPerpGeom( ptP1, ptP2, vtV1, vtV2, vtN, dRad, vt -- Spostamento punti per effetto dell'extra o della deficienza di taglio ptP1 = ptP1 + vtX * ( EgtIf( bRight, - dCutExtra, dCutExtra)) ptP2 = ptP2 + vtX * ( EgtIf( bRight, - dCutExtra, dCutExtra)) + -- Spostamento punti se fuori dal pezzo: si riportano sul bordo del grezzo + local dDeltaMovePt1, dDeltaMovePt2 = 0, 0 + local dPt1X, dPt1Y, dPt1Z = ptP1:getX(), ptP1:getY(), ptP1:getZ() + local dPt2X, dPt2Y, dPt2Z = ptP2:getX(), ptP2:getY(), ptP2:getZ() + local dBoxMinX, dBoxMinY, dBoxMinZ = b3Box:getMin():getX(), b3Box:getMin():getY(), b3Box:getMin():getZ() + local dBoxMaxX, dBoxMaxY, dBoxMaxZ = b3Box:getMax():getX(), b3Box:getMax():getY(), b3Box:getMax():getZ() + if dPt1X < dBoxMinX then + dDeltaMovePt1 = dBoxMinX - dPt1X + elseif dPt1X > dBoxMaxX then + dDeltaMovePt1 = dBoxMaxX - dPt1X + elseif dPt1Y < dBoxMinY then + dDeltaMovePt1 = dBoxMinY - dPt1Y + elseif dPt1Y > dBoxMaxY then + dDeltaMovePt1 = dBoxMaxY - dPt1Y + elseif dPt1Z < dBoxMinZ then + dDeltaMovePt1 = dBoxMinZ - dPt1Z + elseif dPt1Z > dBoxMaxZ then + dDeltaMovePt1 = dBoxMaxZ - dPt1Z + end + if dPt2X < dBoxMinX then + dDeltaMovePt2 = dPt2X - dBoxMinX + elseif dPt2X > dBoxMaxX then + dDeltaMovePt2 = dPt2X - dBoxMaxX + elseif dPt2Y < dBoxMinY then + dDeltaMovePt2 = dPt2Y - dBoxMinY + elseif dPt2Y > dBoxMaxY then + dDeltaMovePt2 = dPt2Y - dBoxMaxY + elseif dPt2Z < dBoxMinZ then + dDeltaMovePt2 = dPt2Z - dBoxMinZ + elseif dPt2Z > dBoxMaxZ then + dDeltaMovePt2 = dPt2Z - dBoxMaxZ + end + ptP1 = ptP1 + vtTg * dDeltaMovePt1 + ptP2 = ptP2 + vtTg * dDeltaMovePt2 -- Non va considerata l'uscita dalla faccia sotto, pertanto va abbassata -- 2021/02/26 Abilito anche uscita sotto local b3MyBox = BBox3d( b3Box) ; --b3MyBox:Add( b3MyBox:getMin() - 1000 * Z_AX()) From d2a6d7e75ce0a7aec01e9a7688dd23654b9860a2 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 6 Dec 2023 10:44:21 +0100 Subject: [PATCH 3/7] in ProcessDoubleCut -> Classify si forza la rotazione della trave se inclinata in Y e la lama non riesce a lavorare solo da un lato --- LuaLibs/ProcessDoubleCut.lua | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/LuaLibs/ProcessDoubleCut.lua b/LuaLibs/ProcessDoubleCut.lua index fdf582c..246e356 100644 --- a/LuaLibs/ProcessDoubleCut.lua +++ b/LuaLibs/ProcessDoubleCut.lua @@ -54,10 +54,23 @@ function ProcessDoubleCut.Classify( Proc, b3Raw) local dNzLimDwnUp = BL.GetNzLimDownUp( b3Raw, vtN) local bDownCut = ( vtN:getZ() <= dNzLimDwnUp) if bDownCut then + -- recupero i dati della lama + local sCutType = EgtIf( Proc.Head, 'HeadSide', 'TailSide') + local sCutting = ML.FindCutting( sCutType, true, false) + -- recupero i dati dell'utensile + local dMaxDepth = 0 + local dMaxMat = 0 + if EgtMdbSetCurrMachining( sCutting) then + local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) + if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then + dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth + dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat + end + end -- calcolo l'ingombro orizzontale della faccia - local _, DimH, DimV = BL.GetFaceHvRefDim( Proc.Id, nFac) + local _, DimH = BL.GetFaceHvRefDim( Proc.Id, nFac) -- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli) - if DimH > 2 * BD.MAX_DIM_DICE then + if DimH > 2 * BD.MAX_DIM_DICE or ( abs( vtN:getY()) > 0.1 and dMaxMat < DimH) then return true, true end end From 306b5b6dffe9ac1fbe427a6dc2192136d361d8c9 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 6 Dec 2023 15:12:08 +0100 Subject: [PATCH 4/7] in ProcessCut -> Classify si forza la rotazione della trave se inclinata in Y e la lama non riesce a lavorare solo da un lato, come per doublecut --- LuaLibs/ProcessCut.lua | 14 +++++++++++++- LuaLibs/ProcessDoubleCut.lua | 1 - 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index 331e050..429f6f7 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -67,10 +67,22 @@ function ProcessCut.Classify( Proc, b3Raw) local dNzLimDwnUp = BL.GetNzLimDownUp( b3Raw) local bDownCut = ( vtN:getZ() <= dNzLimDwnUp) if bDownCut then + -- recupero i dati della lama + local sCutType = EgtIf( Proc.Head, 'HeadSide', 'TailSide') + local sCutting = ML.FindCutting( sCutType, true, false) + local dMaxDepth = 0 + local dMaxMat = 0 + if EgtMdbSetCurrMachining( sCutting) then + local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) + if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then + dMaxDepth = EgtTdbGetCurrToolMaxDepth() or dMaxDepth + dMaxMat = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dMaxMat + end + end -- calcolo l'ingombro orizzontale della faccia local _, DimH, DimV = BL.GetFaceHvRefDim( Proc.Id, 0) -- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli) - if DimH > 2 * BD.MAX_DIM_DICE then + if DimH > 2 * BD.MAX_DIM_DICE or ( abs( vtN:getY()) > 0.1 and dMaxMat < DimH) then return true, true end end diff --git a/LuaLibs/ProcessDoubleCut.lua b/LuaLibs/ProcessDoubleCut.lua index 246e356..e8d4591 100644 --- a/LuaLibs/ProcessDoubleCut.lua +++ b/LuaLibs/ProcessDoubleCut.lua @@ -57,7 +57,6 @@ function ProcessDoubleCut.Classify( Proc, b3Raw) -- recupero i dati della lama local sCutType = EgtIf( Proc.Head, 'HeadSide', 'TailSide') local sCutting = ML.FindCutting( sCutType, true, false) - -- recupero i dati dell'utensile local dMaxDepth = 0 local dMaxMat = 0 if EgtMdbSetCurrMachining( sCutting) then From 1070910b8c7830ba60b79cc43ffed17527685a03 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 6 Dec 2023 17:50:26 +0100 Subject: [PATCH 5/7] - In ProcessLapJoint -> VerifySideMillAsSaw, se SIDEDEPTH non definita, viene calcolata - update commenti --- LuaLibs/FacesBySaw.lua | 1 + LuaLibs/ProcessLapJoint.lua | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index 9e1e07f..5894bf8 100644 --- a/LuaLibs/FacesBySaw.lua +++ b/LuaLibs/FacesBySaw.lua @@ -21,6 +21,7 @@ -- 2023/10/24 In MakeOne migliorata gestione taglio con percorso bilinea. Aggiunta funzione GetNameSolidFaceIncludingLine. -- 2023/11/14 In MakeOne migliorato calcolo scelta soluzione per macchina TURN -- 2023/11/28 In MakeTwo raffinamento calcolo vtRef per casi dubbi. +-- 2023/12/06 In CalcLeadInOutPerpGeom gestito caso in cui la geometria della feature esce dal grezzo. -- Tabella per definizione modulo local FacesBySaw = {} diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 599bce4..19411d9 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -86,6 +86,7 @@ -- 2023/11/06 Migliorie per lavorazione con AngularTransmission con FAST. -- 2023/11/30 Calcolo elevazione velocizzato e centralizzato tramite la funzione GetFaceElevation. -- 2023/12/01 In MakeMoreFaces, nelle OpenPocket, ammesso utensile con diametro fino a 3 volte la dimensione della tasca (era 2). +-- 2023/12/06 In VerifySideMillAsSaw, se SIDEDEPTH non definita, viene calcolata. -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -549,12 +550,14 @@ local function VerifySideMillAsSaw( Proc, nAddGrpId, vtN, dDiam, dFacElev) local dToolDiamOnSide = 0 local dThickMillOnSide = 0 local dMaxDepthOnSide = 0 + local dTDiamStem = 50 if EgtMdbSetCurrMachining( sMillingOnSide) then local sTuuid = EgtMdbGetCurrMachiningParam( MCH_MP.TUUID) if EgtTdbSetCurrTool( EgtTdbGetToolFromUUID( sTuuid) or '') then dToolDiamOnSide = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or dToolDiamOnSide dThickMillOnSide = EgtTdbGetCurrToolParam( MCH_TP.MAXMAT) or dThickMillOnSide - dMaxDepthOnSide = EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd') or dMaxDepthOnSide + dTDiamStem = EgtTdbGetCurrToolParam( MCH_TP.STEMDIAM) or dTDiamStem + dMaxDepthOnSide = min( EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDEDEPTH', 'd') or 999, 0.5 * ( dToolDiamOnSide - dTDiamStem)) or dMaxDepthOnSide end end local bSpecialMillOnSide = ( dDiam > dThickMillOnSide - 10 * GEO.EPS_SMALL and dFacElev < dMaxDepthOnSide + 10 * GEO.EPS_SMALL) From d1c014e20c9854420f6c8e264a961a8ca92f804d Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Thu, 7 Dec 2023 09:55:19 +0100 Subject: [PATCH 6/7] =?UTF-8?q?In=20ProcessCut=20e=20DoubleCut=20correzion?= =?UTF-8?q?e=20in=20scelta=20ribaltamento=20trave=20quando=20si=20=C3=A8?= =?UTF-8?q?=20in=20condizioni=20downUp.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/ProcessCut.lua | 5 +++-- LuaLibs/ProcessDoubleCut.lua | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index 429f6f7..fe94f6e 100644 --- a/LuaLibs/ProcessCut.lua +++ b/LuaLibs/ProcessCut.lua @@ -23,6 +23,7 @@ -- 2023/08/01 In caso di pezzi alti su macchina tipo PF i tagli doppi di lato non vengono usati, si usa il metodo standard. -- 2023/09/12 In MakeFromTop abbassato a 590 mm il limite per convertire in LongCut. -- 2023/10/27 In MakeFromTop corretto massimo materiale in caso di lavorazione da sotto. +-- 2023/12/07 Correzione in Classify in scelta ribaltamento trave quando si è in condizioni downUp. -- Tabella per definizione modulo local ProcessCut = {} @@ -81,8 +82,8 @@ function ProcessCut.Classify( Proc, b3Raw) end -- calcolo l'ingombro orizzontale della faccia local _, DimH, DimV = BL.GetFaceHvRefDim( Proc.Id, 0) - -- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli) - if DimH > 2 * BD.MAX_DIM_DICE or ( abs( vtN:getY()) > 0.1 and dMaxMat < DimH) then + -- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli oppure se tipo PF, taglio inclinato in Y e non taglio singolo orizzontale) + if DimH > 2 * BD.MAX_DIM_DICE or ( BD.C_SIMM and abs( vtN:getY()) > 0.1 and dMaxMat < DimH + BD.CUT_EXTRA) then return true, true end end diff --git a/LuaLibs/ProcessDoubleCut.lua b/LuaLibs/ProcessDoubleCut.lua index e8d4591..39981b4 100644 --- a/LuaLibs/ProcessDoubleCut.lua +++ b/LuaLibs/ProcessDoubleCut.lua @@ -2,6 +2,7 @@ -- Gestione calcolo doppi tagli di lama per Travi -- 2022/08/29 Implementata la fresatura dal lato per tagli problematici per PF1250. -- 2023/03/22 Eliminata SetOpenSide locale, si usa quella di libreria. +-- 2023/12/07 Correzione in Classify in scelta ribaltamento trave quando si è in condizioni downUp -- Tabella per definizione modulo local ProcessDoubleCut = {} @@ -68,8 +69,8 @@ function ProcessDoubleCut.Classify( Proc, b3Raw) end -- calcolo l'ingombro orizzontale della faccia local _, DimH = BL.GetFaceHvRefDim( Proc.Id, nFac) - -- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli) - if DimH > 2 * BD.MAX_DIM_DICE or ( abs( vtN:getY()) > 0.1 and dMaxMat < DimH) then + -- confronto questo ingombro con il doppio della massima dimensione del DiceCut (impossibile lavorare sotto da sopra se più di 2 tagli oppure se tipo PF, taglio inclinato in Y e non taglio singolo orizzontale) + if DimH > 2 * BD.MAX_DIM_DICE or ( BD.C_SIMM and abs( vtN:getY()) > 0.1 and dMaxMat < DimH + BD.CUT_EXTRA) then return true, true end end From c8b29241cadb8d8a0b2ae05d705d83dae91b20f7 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 20 Dec 2023 17:41:39 +0100 Subject: [PATCH 7/7] update log --- UpdateLog.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/UpdateLog.txt b/UpdateLog.txt index 69570e6..59124db 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,6 +1,13 @@ ==== Beam Update Log ==== -Versione 2.5l1 /01/12/2023) +Versione 2.5l2 (20/12/2023) +- Modif : in Cut e DoubleCut modifica in scelta ribaltamento trave quando si è in condizioni downUp +- Modif : migliorato e esteso il funzionamento di SideMillAsSaw +- Modif : in LapJoint con più facce, nelle OpenPocket, ammesso utensile con diametro fino a 3 volte la dimensione della tasca (era 2) +- Modif : in RoundArch aggiunta gestione senso di rotazione fresa per lavorare sempre in concordanza +- Fixed : correzione a GetFaceWithMostAdj per calcoli con facce che fanno ombra + +Versione 2.5l1 (01/12/2023) - Added : in LongDoubleCut aggiunta Q05 per utilizzo lama anche in feature cieche conme per LongCut - Modif : Migliorato e velocizzato il calcolo elevazione (EgtSurfTmFacetElevationInBBox) - Fixed : in MakeTwo di FacesBySaw raffinamento calcolo vtRef per casi dubbi.