From ae4c3f915607fcbc400fc595baaebeb8ef4bc21b Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Thu, 14 Nov 2024 10:52:32 +0100 Subject: [PATCH] =?UTF-8?q?-=20in=20FeatureLib=20e=20STR0002=20invertito?= =?UTF-8?q?=20ordine=20dei=20punti=20di=20spezzatura,=20ora=20=C3=A8=20da?= =?UTF-8?q?=20testa=20a=20coda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/FeatureLib.lua | 15 +++++++-------- Strategies/Standard/STR0002/STR0002.lua | 22 +++++++++++----------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/LuaLibs/FeatureLib.lua b/LuaLibs/FeatureLib.lua index 684e759..141e6be 100644 --- a/LuaLibs/FeatureLib.lua +++ b/LuaLibs/FeatureLib.lua @@ -311,7 +311,6 @@ function FeatureLib.MachiningNeedsSplitting( dMachiningLengthOnX, Part, Optional end ------------------------------------------------------------------------------------------------------------- function FeatureLib.GetFeatureSplittingPoints( Proc, Part, OptionalParameters) - -- TODO overlap non serve a nulla?? in STR0002 รจ gestito dal chiamante local vFeatureSplittingPoints = {} local bFeatureStartsOnEdgeLeft = false local bFeatureStartsOnEdgeRight = false @@ -371,9 +370,9 @@ function FeatureLib.GetFeatureSplittingPoints( Proc, Part, OptionalParameters) ptSplitXRight = Point3d( dSplitXRight, 0, 0) end - -- aggiungo eventuale punto estemo sinistro - if bFeatureStartsOnEdgeLeft then - table.insert( vFeatureSplittingPoints, ptSplitXLeft) + -- aggiungo eventuale punto estremo destro + if bFeatureStartsOnEdgeRight then + table.insert( vFeatureSplittingPoints, ptSplitXRight) end -- aggiungo punti centrali della feature @@ -382,15 +381,15 @@ function FeatureLib.GetFeatureSplittingPoints( Proc, Part, OptionalParameters) local dSplitPartsLen = dFeatureCentralLength / nSplitParts for i = 1, ( nSplitParts - 1) do local ptOn - local dCurrentPointX = dSplitXLeft + i * dSplitPartsLen + local dCurrentPointX = dSplitXRight - i * dSplitPartsLen ptOn = Point3d( dCurrentPointX, 0, 0) table.insert( vFeatureSplittingPoints, ptOn) end end - -- aggiungo eventuale punto estremo destro - if bFeatureStartsOnEdgeRight then - table.insert( vFeatureSplittingPoints, ptSplitXRight) + -- aggiungo eventuale punto estemo sinistro + if bFeatureStartsOnEdgeLeft then + table.insert( vFeatureSplittingPoints, ptSplitXLeft) end return vFeatureSplittingPoints diff --git a/Strategies/Standard/STR0002/STR0002.lua b/Strategies/Standard/STR0002/STR0002.lua index 1f5389e..c8a54c0 100644 --- a/Strategies/Standard/STR0002/STR0002.lua +++ b/Strategies/Standard/STR0002/STR0002.lua @@ -359,7 +359,7 @@ local function GetSplitSurfaces( Proc, Part) nOriginalTmIdTunnel = Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.id end - -- recupero punti di spezzatura - da sinistra a destra + -- recupero punti di spezzatura - da destra a sinistra local vFeatureSplittingPoints = FeatureLib.GetFeatureSplittingPoints( Proc, Part) if #vFeatureSplittingPoints == 0 then @@ -372,29 +372,29 @@ local function GetSplitSurfaces( Proc, Part) local nAddId = EgtCopyGlob( Proc.id, nAddGrpId) or GDB_ID.NULL local nAddIdTunnel = EgtCopyGlob( nOriginalTmIdTunnel, nAddGrpId) or GDB_ID.NULL if i == 1 then - -- prima superficie, va tagliata solo a destra - local ptSplit = vFeatureSplittingPoints[i] + Vector3d( BeamData.MILL_OVERLAP / 2, 0, 0) - EgtCutSurfTmPlane( nAddId, ptSplit, X_AX(), true, GDB_RT.GLOB) - EgtCutSurfTmPlane( nAddIdTunnel, ptSplit, X_AX(), true, GDB_RT.GLOB) + -- prima superficie, va tagliata solo a sinistra + local ptSplit = vFeatureSplittingPoints[i] + Vector3d( -BeamData.MILL_OVERLAP / 2, 0, 0) + EgtCutSurfTmPlane( nAddId, ptSplit, -X_AX(), true, GDB_RT.GLOB) + EgtCutSurfTmPlane( nAddIdTunnel, ptSplit, -X_AX(), true, GDB_RT.GLOB) else -- taglio della superficie corrente - lato sinistro - local ptSplit = vFeatureSplittingPoints[i - 1] + Vector3d( -BeamData.MILL_OVERLAP / 2, 0, 0) + local ptSplit = vFeatureSplittingPoints[i] + Vector3d( -BeamData.MILL_OVERLAP / 2, 0, 0) EgtCutSurfTmPlane( nAddId, ptSplit, -X_AX(), true, GDB_RT.GLOB) EgtCutSurfTmPlane( nAddIdTunnel, ptSplit, -X_AX(), true, GDB_RT.GLOB) -- taglio della superficie corrente - lato destro - ptSplit = vFeatureSplittingPoints[i] + Vector3d( BeamData.MILL_OVERLAP / 2, 0, 0) + ptSplit = vFeatureSplittingPoints[i - 1] + Vector3d( BeamData.MILL_OVERLAP / 2, 0, 0) EgtCutSurfTmPlane( nAddId, ptSplit, X_AX(), true, GDB_RT.GLOB) EgtCutSurfTmPlane( nAddIdTunnel, ptSplit, X_AX(), true, GDB_RT.GLOB) end table.insert( vAddId, nAddId) table.insert( vAddIdTunnel, nAddIdTunnel) end - -- taglio ultima superficie, va tagliata solo a sinistra + -- taglio ultima superficie, va tagliata solo a destra local nAddId = EgtCopyGlob( Proc.id, nAddGrpId) or GDB_ID.NULL local nAddIdTunnel = EgtCopyGlob( nOriginalTmIdTunnel, nAddGrpId) or GDB_ID.NULL - local ptSplit = vFeatureSplittingPoints[#vFeatureSplittingPoints] + Vector3d( -BeamData.MILL_OVERLAP / 2, 0, 0) - EgtCutSurfTmPlane( nAddId, ptSplit, -X_AX(), true, GDB_RT.GLOB) - EgtCutSurfTmPlane( nAddIdTunnel, ptSplit, -X_AX(), true, GDB_RT.GLOB) + local ptSplit = vFeatureSplittingPoints[#vFeatureSplittingPoints] + Vector3d( BeamData.MILL_OVERLAP / 2, 0, 0) + EgtCutSurfTmPlane( nAddId, ptSplit, X_AX(), true, GDB_RT.GLOB) + EgtCutSurfTmPlane( nAddIdTunnel, ptSplit, X_AX(), true, GDB_RT.GLOB) table.insert( vAddId, nAddId) table.insert( vAddIdTunnel, nAddIdTunnel) end