diff --git a/src/Mod/Path/PathScripts/PathToolBit.py b/src/Mod/Path/PathScripts/PathToolBit.py index d15dfe0969..881746910a 100644 --- a/src/Mod/Path/PathScripts/PathToolBit.py +++ b/src/Mod/Path/PathScripts/PathToolBit.py @@ -56,18 +56,23 @@ ParameterTypeConstraint = { def updateConstraint(sketch, name, value): for i, constraint in enumerate(sketch.Constraints): if constraint.Name.split(';')[0] == name: + constr = None if constraint.Type in ['DistanceX', 'DistanceY', 'Distance', 'Radius']: + constr = Sketcher.Constraint(constraint.Type, constraint.First, value) + elif constraint.Type in ['Angle']: + constr = Sketcher.Constraint(constraint.Type, constraint.First, constraint.FirstPos, constraint.Second, constraint.SecondPos, value) + else: + print(constraint.Name, constraint.Type) + + if constr is not None: if not PathGeom.isRoughly(constraint.Value, value.Value): - PathLog.track(name, constraint.Type, 'update', i) - constr = Sketcher.Constraint(constraint.Type, constraint.First, value) + PathLog.track(name, constraint.Type, 'update', i, "(%.2f -> %.2f)" % (constraint.Value, value.Value)) sketch.delConstraint(i) sketch.recompute() n = sketch.addConstraint(constr) sketch.renameConstraint(n, constraint.Name) else: PathLog.track(name, constraint.Type, 'unchanged') - else: - print(constraint.Name, constraint.Type) break PropertyGroupBit = 'Bit' @@ -183,7 +188,7 @@ class ToolBit(object): value = constraint.Value if constraint.Type == 'Angle': value = value * 180 / math.pi - PathUtil.setProperty(obj, prop, constraint.Value) + PathUtil.setProperty(obj, prop, value) def getBitThumbnail(self, obj): if obj.BitTemplate: diff --git a/src/Mod/Path/PathScripts/PathToolBitEdit.py b/src/Mod/Path/PathScripts/PathToolBitEdit.py index f2fe552580..0464a2b019 100644 --- a/src/Mod/Path/PathScripts/PathToolBitEdit.py +++ b/src/Mod/Path/PathScripts/PathToolBitEdit.py @@ -37,19 +37,7 @@ from PySide import QtGui PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) PathLog.trackModule(PathLog.thisModule()) - -ParameterTypeConstraint = { - 'Angle': 'Angle', - 'Distance': 'Length', - 'DistanceX': 'Length', - 'DistanceY': 'Length', - 'Radius': 'Length' - } - -ParameterTypeProperty = { - 'Length': 'App::PropertyLength', - 'Angle': 'App::PropertyAngle' - } +LastPath = 'src/Mod/Path/Tools/Template' class ToolBitEditor: '''UI and controller for editing a ToolBit. @@ -83,6 +71,11 @@ class ToolBitEditor: # qsb.setToolTip(parameter['Desc']) layout.addRow(label, qsb) self.bitEditor = editor + img = tool.Proxy.getBitThumbnail(tool) + if img: + self.form.image.setPixmap(QtGui.QPixmap(QtGui.QImage.fromData(img))) + else: + self.form.image.setPixmap(QtGui.QPixmap()) def accept(self): self.refresh() @@ -101,6 +94,10 @@ class ToolBitEditor: def updateTemplate(self): self.tool.BitTemplate = str(self.form.templatePath.text()) self.setupTool(self.tool) + self.form.toolName.setText(self.tool.Label) + + for editor in self.bitEditor: + self.bitEditor[editor].updateSpinBox() def updateTool(self): PathLog.track() @@ -119,9 +116,23 @@ class ToolBitEditor: self.updateUI() self.form.blockSignals(False) + def selectTemplate(self): + global LastPath + path = self.tool.BitTemplate + if not path: + path = LastPath + foo = QtGui.QFileDialog.getOpenFileName(QtGui.QApplication.activeWindow(), + "Path - Tool Template", + path, + "*.fcstd")[0] + if foo: + self.form.templatePath.setText(foo) + self.updateTemplate() + def setupUI(self): PathLog.track() self.updateUI() self.form.toolName.editingFinished.connect(self.refresh) self.form.templatePath.editingFinished.connect(self.updateTemplate) + self.form.templateSet.clicked.connect(self.selectTemplate) diff --git a/src/Mod/Path/PathScripts/PathToolBitGui.py b/src/Mod/Path/PathScripts/PathToolBitGui.py index cec2d86980..92e08cd0c7 100644 --- a/src/Mod/Path/PathScripts/PathToolBitGui.py +++ b/src/Mod/Path/PathScripts/PathToolBitGui.py @@ -83,15 +83,16 @@ class ViewProvider(object): def setEdit(self, vobj, mode=0): # pylint: disable=unused-argument PathLog.track() - taskPanel = TaskPanel(vobj) + self.taskPanel = TaskPanel(vobj) FreeCADGui.Control.closeDialog() - FreeCADGui.Control.showDialog(taskPanel) - taskPanel.setupUi() + FreeCADGui.Control.showDialog(self.taskPanel) + self.taskPanel.setupUi() return True def unsetEdit(self, vobj, mode): # pylint: disable=unused-argument FreeCADGui.Control.closeDialog() + self.taskPanel = None return def claimChildren(self): diff --git a/src/Mod/Path/Tools/Template/drill-straight.fcstd b/src/Mod/Path/Tools/Template/drill-straight.fcstd index 1de5f44181..275b401e34 100644 Binary files a/src/Mod/Path/Tools/Template/drill-straight.fcstd and b/src/Mod/Path/Tools/Template/drill-straight.fcstd differ diff --git a/src/Mod/Path/Tools/Template/v-bit.fcstd b/src/Mod/Path/Tools/Template/v-bit.fcstd index b937043666..97fee679d9 100644 Binary files a/src/Mod/Path/Tools/Template/v-bit.fcstd and b/src/Mod/Path/Tools/Template/v-bit.fcstd differ