From 32f82a9b5ef460eabff5149ce6dcbaa7d2ef7ce8 Mon Sep 17 00:00:00 2001 From: Russell Johnson <47639332+Russ4262@users.noreply.github.com> Date: Sun, 2 Aug 2020 13:19:58 -0500 Subject: [PATCH] Path: Fix `InverseAngle` feature The `ReverseDirection` property is now hidden by default. It should not be necessary due to recent implementation of `isFaceUp()` method. --- src/Mod/Path/PathScripts/PathAreaOp.py | 11 ++++++----- src/Mod/Path/PathScripts/PathPocketShape.py | 20 ++++++++++++++------ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathAreaOp.py b/src/Mod/Path/PathScripts/PathAreaOp.py index 0547f3ddcd..012020953e 100644 --- a/src/Mod/Path/PathScripts/PathAreaOp.py +++ b/src/Mod/Path/PathScripts/PathAreaOp.py @@ -909,10 +909,11 @@ class ObjectOp(PathOp.ObjectOp): elif axis == 'Y': vect = FreeCAD.Vector(0, 1, 0) - if obj.InverseAngle is True: - angle = -1 * angle - if math.fabs(angle) == 0.0: - angle = 0.0 + # Commented out to fix PocketShape InverseAngle rotation problem + # if obj.InverseAngle is True: + # angle = -1 * angle + # if math.fabs(angle) == 0.0: + # angle = 0.0 # Create a temporary clone of model for rotational use. (clnBase, clnStock, tag) = self.cloneBaseAndStock(obj, base, angle, axis, subCount) @@ -939,7 +940,7 @@ class ObjectOp(PathOp.ObjectOp): clnStock.purgeTouched() # Update property and angle values obj.InverseAngle = True - obj.AttemptInverseAngle = False + # obj.AttemptInverseAngle = False angle = -1 * angle PathLog.debug(translate("Path", "Rotated to inverse angle.")) diff --git a/src/Mod/Path/PathScripts/PathPocketShape.py b/src/Mod/Path/PathScripts/PathPocketShape.py index e0141396be..95123ca791 100644 --- a/src/Mod/Path/PathScripts/PathPocketShape.py +++ b/src/Mod/Path/PathScripts/PathPocketShape.py @@ -299,13 +299,13 @@ class ObjectPocket(PathPocketBase.ObjectPocket): self.setEditorProperties(obj) def setEditorProperties(self, obj): + obj.setEditorMode('ReverseDirection', 2) if obj.EnableRotation == 'Off': - obj.setEditorMode('ReverseDirection', 2) obj.setEditorMode('InverseAngle', 2) obj.setEditorMode('AttemptInverseAngle', 2) obj.setEditorMode('LimitDepthToFace', 2) else: - obj.setEditorMode('ReverseDirection', 0) + # obj.setEditorMode('ReverseDirection', 0) obj.setEditorMode('InverseAngle', 0) obj.setEditorMode('AttemptInverseAngle', 0) obj.setEditorMode('LimitDepthToFace', 0) @@ -446,6 +446,7 @@ class ObjectPocket(PathPocketBase.ObjectPocket): for (base, subList) in obj.Base: baseSubsTuples.append((base, subList, 0.0, 'X', stock)) else: + PathLog.debug('Rotation is active...') for p in range(0, len(obj.Base)): (base, subsList) = obj.Base[p] isLoop = False @@ -478,8 +479,10 @@ class ObjectPocket(PathPocketBase.ObjectPocket): break if rtn is False: - PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.")) - if obj.InverseAngle is False: + PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.") + ' 1') + if obj.InverseAngle: + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + else: if obj.AttemptInverseAngle is True: (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) else: @@ -543,8 +546,13 @@ class ObjectPocket(PathPocketBase.ObjectPocket): angle -= 180.0 if rtn is True: - PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.")) - if obj.InverseAngle is False: + PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.") + ' 2') + if obj.InverseAngle: + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + if self.isFaceUp(clnBase, faceIA) is False: + PathLog.debug('isFaceUp is False') + angle += 180.0 + else: if obj.AttemptInverseAngle is True: (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) else: