From 3f5caddabf5f23eaef011f82ab57b1acf3c903a1 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Sun, 8 Nov 2020 02:09:31 -0300 Subject: [PATCH] Draft: Enable offset for working plane aligned with current view --- .../Draft/draftguitools/gui_selectplane.py | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/Mod/Draft/draftguitools/gui_selectplane.py b/src/Mod/Draft/draftguitools/gui_selectplane.py index b4d61d57df16..866ca7085644 100644 --- a/src/Mod/Draft/draftguitools/gui_selectplane.py +++ b/src/Mod/Draft/draftguitools/gui_selectplane.py @@ -358,12 +358,11 @@ def getOffset(self): def onClickTop(self): """Execute when pressing the top button.""" - offset = str(self.getOffset()) _cmd = self.ac _cmd += "(" _cmd += self.tostr(self.getCenterPoint(0, 0, 1)) + ", " _cmd += self.tostr((0, 0, 1)) + ", " - _cmd += offset + _cmd += str(self.getOffset()) _cmd += ")" FreeCADGui.doCommandGui(_cmd) self.display('Top') @@ -371,12 +370,11 @@ def onClickTop(self): def onClickFront(self): """Execute when pressing the front button.""" - offset = str(self.getOffset()) _cmd = self.ac _cmd += "(" _cmd += self.tostr(self.getCenterPoint(0, -1, 0)) + ", " _cmd += self.tostr((0, -1, 0)) + ", " - _cmd += offset + _cmd += str(self.getOffset()) _cmd += ")" FreeCADGui.doCommandGui(_cmd) self.display('Front') @@ -384,12 +382,11 @@ def onClickFront(self): def onClickSide(self): """Execute when pressing the side button.""" - offset = str(self.getOffset()) _cmd = self.ac _cmd += "(" _cmd += self.tostr(self.getCenterPoint(1, 0, 0)) + ", " _cmd += self.tostr((1, 0, 0)) + ", " - _cmd += offset + _cmd += str(self.getOffset()) _cmd += ")" FreeCADGui.doCommandGui(_cmd) self.display('Side') @@ -397,9 +394,20 @@ def onClickSide(self): def onClickAlign(self): """Execute when pressing the align.""" - FreeCADGui.doCommandGui("FreeCAD.DraftWorkingPlane.setup(force=True)") - d = self.view.getViewDirection().negative() - self.display(d) + dir = self.view.getViewDirection().negative() + camera = self.view.getCameraNode() + rot = camera.getField("orientation").getValue() + coin_up = coin.SbVec3f(0, 1, 0) + upvec = FreeCAD.Vector(rot.multVec(coin_up).getValue()) + _cmd = self.ac + _cmd += "(" + _cmd += self.tostr(self.getCenterPoint(dir.x, dir.y, dir.z)) + ", " + _cmd += self.tostr((dir.x, dir.y, dir.z)) + ", " + _cmd += str(self.getOffset()) + ", " + _cmd += self.tostr(upvec) + _cmd += ")" + FreeCADGui.doCommandGui(_cmd) + self.display(dir) self.finish() def onClickAuto(self):