From cd97f871a7983662361424b37c305a57a40cd1d1 Mon Sep 17 00:00:00 2001 From: Daniel Wood Date: Sat, 23 May 2020 16:30:55 +0100 Subject: [PATCH] Enable the selection of circles, arcs and faces to set the job origin --- src/Mod/Path/PathScripts/PathJobGui.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index a3abe0374e..2169b2a962 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -43,6 +43,7 @@ import traceback # lazily loaded modules from lazy_loader.lazy_loader import LazyLoader Draft = LazyLoader('Draft', globals(), 'Draft') +Part = LazyLoader('Part', globals(), 'Part') DraftVecUtils = LazyLoader('DraftVecUtils', globals(), 'DraftVecUtils') from PySide import QtCore, QtGui @@ -1035,7 +1036,14 @@ class TaskPanel: sub = sel.Object.Shape.getElement(feature) if 'Vertex' == sub.ShapeType: p = FreeCAD.Vector() - sub.Point + if 'Edge' == sub.ShapeType: + p = FreeCAD.Vector() - sub.Curve.Location + if 'Face' == sub.ShapeType: + p = FreeCAD.Vector() - sub.BoundBox.Center + + if p: Draft.move(sel.Object, p) + if selObject and selFeature: FreeCADGui.Selection.clearSelection() FreeCADGui.Selection.addSelection(selObject, selFeature) @@ -1117,6 +1125,15 @@ class TaskPanel: by.z = 0 Draft.move(sel.Object, by) + def isValidDatumSelection(self, sel): + if sel.ShapeType in ['Vertex', 'Edge', 'Face']: + if hasattr(sel, 'Curve') and type(sel.Curve) not in [Part.Circle]: + return False + return True + + # no valid selection + return False + def updateSelection(self): # Remove Job object if present in Selection: source of phantom paths if self.obj in FreeCADGui.Selection.getSelection(): @@ -1125,7 +1142,8 @@ class TaskPanel: sel = FreeCADGui.Selection.getSelectionEx() if len(sel) == 1 and len(sel[0].SubObjects) == 1: - if 'Vertex' == sel[0].SubObjects[0].ShapeType: + subObj = sel[0].SubObjects[0] + if self.isValidDatumSelection(subObj): self.form.modelSetXAxis.setEnabled(False) self.form.modelSetYAxis.setEnabled(False) self.form.modelSetZAxis.setEnabled(False)