diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 81935ed..128ad47 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -3537,7 +3537,11 @@ local function MakePocket( Proc, nPartId, b3Solid, ptPs, tvtN, nFaceRef, sMchFin return false, sErr end -- aggiungo geometria - EgtSetMachiningGeometry( {{ Proc.Id, (nFaceRef)}}) + if Proc.LoopIdFacInd then + EgtSetMachiningGeometry( { Proc.LoopIdFacInd}) + else + EgtSetMachiningGeometry( {{ Proc.Id, (nFaceRef)}}) + end -- imposto uso faccia EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_CONT) -- imposto posizione braccio porta testa @@ -3571,8 +3575,6 @@ local function MakePocket( Proc, nPartId, b3Solid, ptPs, tvtN, nFaceRef, sMchFin local _, dH, dV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFaceRef, GDB_ID.ROOT) local bL = ( Proc.Fct < 4 or TestElleShape4( Proc) == 2) if bL and min( dH, dV) < 1.5 * dDiamTool then - EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.ZIGZAG) - EgtSetMachiningParam( MCH_MP.INVERT, false) if not bTipMill then EgtSetMachiningParam( MCH_MP.LEADINTYPE, MCH_POCK_LI.HELIX) EgtSetMachiningParam( MCH_MP.LITANG, dDiamTool) @@ -3597,7 +3599,7 @@ local function MakePocket( Proc, nPartId, b3Solid, ptPs, tvtN, nFaceRef, sMchFin local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES) or '' sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', EgtNumToString( dElev, 1)) sUserNotes = EgtSetValInNotes( sUserNotes, 'VMRS', 0) - if bOpenOutRaw then + if bOpenOutRaw or ( Proc.LoopIdFacInd and ( EgtGetInfo( Proc.LoopIdFacInd, 'OPEN', 'i') or -1) > -1) then sUserNotes = EgtSetValInNotes( sUserNotes, 'OpenOutRaw', 1) end EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes) @@ -7235,6 +7237,11 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa nUseRoughTool = 1 end end + -- se presente curva da lavorare con lato aperto + if Proc.LoopIdFacInd and ( EgtGetInfo( Proc.LoopIdFacInd, 'OPEN', 'i') or -1) > -1 then + sMchFind = 'OpenPocket' + nUseRoughTool = 0 + end -- se abilitato rinvio da sotto if bLapJointAngTrasm then if not EgtEndsWith( sMchFind, '_AT') then @@ -8007,9 +8014,27 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead) local bPrevBhSideMill for i = 1, #vAddId do local b3Box = EgtGetBBoxGlob( vAddId[i], GDB_BB.STANDARD) - local nFct = EgtSurfTmFacetCount( vAddId[i]) + local nFct = EgtSurfTmFacetCount( vAddId[i]) local AddProc = { Id = vAddId[i], Grp = Proc.Grp, Prc = Proc.Prc, Box = b3Box, TotBox = Proc.Box, Fct = nFct, Flg = Proc.Flg, PartId = Proc.PartId, TaskId = Proc.TaskId, FeatureId = Proc.FeatureId, IsSplittedLapJoint = true, AffectedFaces = Proc.AffectedFaces, OkFromBottom = Proc.OkFromBottom} Topology.Classify( AddProc, b3Raw) + + + if i > 1 and + ( ( Proc.Topology == 'Groove' and Proc.IsThrough and Proc.Fct == 3 and Proc.AffectedFaces.Left and Proc.AffectedFaces.Right) + or ( Proc.Topology == 'Groove' and Proc.Fct == 4 and ( Proc.AffectedFaces.Left or Proc.AffectedFaces.Right)) + or Proc.Topology == 'Pocket') then + local nFacInd = BL.GetFaceWithMostAdj( AddProc, nPartId) + if type( nFacInd) == "number" and nFacInd >= 0 then + local nLoopId, nLoopCnt = EgtExtractSurfTmFacetLoops( vAddId[i], nFacInd, nAddGrpId) + if nLoopId and nLoopCnt == 1 then + local nEdgeId = BL.GetEdgeToMachineFromVector( vAddId[i], nFacInd, -X_AX()) + EgtSetInfo( nLoopId, 'OPEN', nEdgeId) + AddProc.LoopIdFacInd = nLoopId + end + end + end + + -- lasciare il false nel sesto parametro (perchè internamente viene verificato se diverso da nil) local bOk, sMyWarn bOk, sMyWarn, bPrevBhSideMill = MakeMoreFaces( AddProc, nPhase, nRawId, nPartId, dOvmHead, bAllWithEndCap, bPrevBhSideMill, bAllWithEndCap) diff --git a/Version.lua b/Version.lua index 8f921ab..9cc5dfb 100644 --- a/Version.lua +++ b/Version.lua @@ -3,4 +3,4 @@ NAME = 'Beam' VERSION = '3.1a1' -MIN_EXE = '2.7f2' +MIN_EXE = '3.1a4'