diff --git a/LuaLibs/FacesBySaw.lua b/LuaLibs/FacesBySaw.lua index 9a18d4d..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 = {} @@ -715,6 +716,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()) diff --git a/LuaLibs/ProcessCut.lua b/LuaLibs/ProcessCut.lua index 331e050..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 = {} @@ -67,10 +68,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 + -- 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 fdf582c..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 = {} @@ -54,10 +55,22 @@ 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) + 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) - -- 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 + 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 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/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 039efea..19411d9 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -85,6 +85,8 @@ -- 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). +-- 2023/12/06 In VerifySideMillAsSaw, se SIDEDEPTH non definita, viene calcolata. -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -548,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) @@ -4936,7 +4940,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 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.