From 9e2bef31927c8d09a1c330cd9bc119e6d30e8d98 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Tue, 9 Sep 2025 09:53:37 +0200 Subject: [PATCH] =?UTF-8?q?-=20Si=20salvano=20su=20ogni=20faccia=20L=20e?= =?UTF-8?q?=20W=20-=20In=20STR0002=20si=20utilizzano=20dimensioni=20faccia?= =?UTF-8?q?=20anzich=C3=A9=20gli=20edge.=20Pi=C3=B9=20affidabile=20in=20ca?= =?UTF-8?q?so=20di=20feature=20non=20standard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/FaceData.lua | 6 ++++-- Strategies/Standard/STR0002/STR0002.lua | 28 +++++++++++++------------ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/LuaLibs/FaceData.lua b/LuaLibs/FaceData.lua index 354851f..305837f 100644 --- a/LuaLibs/FaceData.lua +++ b/LuaLibs/FaceData.lua @@ -171,8 +171,10 @@ function FaceData.GetFacesInfo( Proc, Part) -- elevazione calcolata rispetto al box della parte Faces[i].dElevation = EgtSurfTmFacetElevationInBBox( Proc.id, i - 1, Part.b3Part, true, GDB_ID.ROOT) -- TODO qui sarebbe meglio l'area vera e non quella del rettangolo minimo - local _, dLongEdgeDimension, dShortEdgeDimension = EgtSurfTmFacetMinAreaRectangle( Proc.id, i - 1, GDB_ID.ROOT) - Faces[i].dArea = dShortEdgeDimension * dLongEdgeDimension + local _, dLongDimension, dShortDimension = EgtSurfTmFacetMinAreaRectangle( Proc.id, i - 1, GDB_ID.ROOT) + Faces[i].dArea = dShortDimension * dLongDimension + Faces[i].dLMinRectangle = dLongDimension + Faces[i].dWMinRectangle = dShortDimension local nFaceType, Edges = FaceData.GetEdgesInfo( Proc, i - 1) Faces[i].bIsOkForMachining = nFaceType < 1 diff --git a/Strategies/Standard/STR0002/STR0002.lua b/Strategies/Standard/STR0002/STR0002.lua index 483c20b..cec5465 100644 --- a/Strategies/Standard/STR0002/STR0002.lua +++ b/Strategies/Standard/STR0002/STR0002.lua @@ -113,28 +113,28 @@ local function GetBestPocketingStrategy( Proc) -- caso speciale Tunnel che non ha faccia bottom if Proc.Topology.sName == 'Tunnel-4-Through' then - local dFaceHeight = Proc.MainFaces.SideFaces[1].MainEdges.OppositeEdges[1].dLength - local dFaceWidth = Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1].dLength + local dFaceLength = Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Faces[1].dLMinRectangle + local dFaceWidth = Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Faces[1].dWMinRectangle ToolSearchParameters.sType = 'MILL_STD' - ToolSearchParameters.dMaxToolDiameter = min( Strategy.Parameters.dMaxCornerRadius * 2, dFaceHeight, dFaceWidth) + ToolSearchParameters.dMaxToolDiameter = min( Strategy.Parameters.dMaxCornerRadius * 2, dFaceLength, dFaceWidth) elseif Proc.Topology.sName == 'RafterNotch-5-Through' then ToolSearchParameters.sType = 'MILL_STD' ToolSearchParameters.dMaxToolDiameter = min( Strategy.Parameters.dMaxCornerRadius * 2, Proc.FeatureInfo.dFaceLength / 2) -- imposto dati per cercare la fresa migliore elseif Proc.Topology.sName == 'Pocket-5-Blind' then - local dFaceWidth = Proc.MainFaces.BottomFaces[1].MainEdges.LongEdges[1].dLength - local dFaceHeight = Proc.MainFaces.BottomFaces[1].MainEdges.SideEdges[1].dLength + local dFaceWidth = Proc.MainFaces.BottomFaces[1].dWMinRectangle + local dFaceLength = Proc.MainFaces.BottomFaces[1].dLMinRectangle ToolSearchParameters.sType = 'MILL_STD' - ToolSearchParameters.dMaxToolDiameter = min( Strategy.Parameters.dMaxCornerRadius * 2, dFaceHeight, dFaceWidth) + ToolSearchParameters.dMaxToolDiameter = min( Strategy.Parameters.dMaxCornerRadius * 2, dFaceLength, dFaceWidth) -- cerco fresa che può anche non lavorare di testa elseif Proc.Topology.sName == 'Groove-4-Blind' then - local dFaceWidth = Proc.MainFaces.BottomFaces[2].MainEdges.BottomEdge.dLength + local dFaceLength = Proc.MainFaces.BottomFaces[2].dLMinRectangle ToolSearchParameters.sType = 'MILL_NOTIP' - ToolSearchParameters.dMaxToolDiameter = min( Strategy.Parameters.dMaxCornerRadius * 2, dFaceWidth) + ToolSearchParameters.dMaxToolDiameter = min( Strategy.Parameters.dMaxCornerRadius * 2, dFaceLength) elseif Proc.Topology.sName == 'Groove-3-Through' or Proc.Topology.sName == 'Bevel-3-Blind' then - local dFaceWidth = Proc.MainFaces.BottomFaces[1].MainEdges.SideEdges[1].dLength + local dFaceLength = Proc.MainFaces.BottomFaces[1].dLMinRectangle ToolSearchParameters.sType = 'MILL_NOTIP' - ToolSearchParameters.dMaxToolDiameter = dFaceWidth + ToolSearchParameters.dMaxToolDiameter = dFaceLength elseif Proc.Topology.sName == 'Groove-3-Blind' then ToolSearchParameters.sType = 'MILL_NOTIP' ToolSearchParameters.dMaxToolDiameter = Strategy.Parameters.dMaxCornerRadius * 2 @@ -370,8 +370,10 @@ local function GetBestPocketingStrategy( Proc) else Strategy.Result.sStatus = 'Completed' end - Machining[3].ToolInfo.dResidualDepth = Machining[3].ToolInfo.dResidualDepth - Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Faces[1].dElevation - Machining[4].ToolInfo.dResidualDepth = -Machining[3].ToolInfo.dResidualDepth - BeamData.MILL_OVERLAP + -- si suddivide l'extra lavorabile sulle due frese + local dExtraMachDepth = ( Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Faces[1].dElevation * 2 - Machining[3].ToolInfo.dResidualDepth - Machining[4].ToolInfo.dResidualDepth - BeamData.MILL_OVERLAP) / 2 + Machining[3].ToolInfo.dResidualDepth = Machining[3].ToolInfo.dResidualDepth - Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Faces[1].dElevation + dExtraMachDepth + Machining[4].ToolInfo.dResidualDepth = Machining[4].ToolInfo.dResidualDepth - Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Faces[1].dElevation + dExtraMachDepth Strategy.Result.nCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100) Strategy.Result.nQuality = FeatureLib.GetFeatureQuality( 'RadiusOnCornerLeft') Strategy.Result.dMRR = ( Machining[3].dMRR + Machining[4].dMRR) / 2 @@ -568,7 +570,7 @@ function STR0002.Make( bAddMachining, Proc, Part, CustomParameters) local vtNSplitFace local nIdTm = EgtIf( Strategy.Machining[j].bMachAppliedToTunnelFace, vAddIdTunnel[i], vAddId[i]) Pocketing.ptCenter, vtNSplitFace = EgtSurfTmFacetCenter( nIdTm, k - 1, GDB_ID.ROOT) - Pocketing.vtToolDirection = vtNSplitFace + Pocketing.vtToolDirection = vtNSplitFace or Strategy.Machining[j].vtFaceNormal if Pocketing.bToolInvert then Pocketing.vtToolDirection = -Pocketing.vtToolDirection end