From 0dce2394b4d780eef55bf2ad93bc102ba58231db Mon Sep 17 00:00:00 2001 From: pekkaroi Date: Wed, 2 Aug 2017 19:00:51 +0300 Subject: [PATCH] PATH: add arc edges to drillables in PathDrilling --- src/Mod/Path/PathScripts/PathDrilling.py | 32 ++++++++++++++++-------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathDrilling.py b/src/Mod/Path/PathScripts/PathDrilling.py index 8e708c808a..4ff4e000e4 100644 --- a/src/Mod/Path/PathScripts/PathDrilling.py +++ b/src/Mod/Path/PathScripts/PathDrilling.py @@ -31,6 +31,7 @@ from PySide import QtCore, QtGui from PathScripts import PathUtils from PathScripts.PathUtils import fmt, waiting_effects import ArchPanel +import Part # xrange is not available in python3 @@ -49,6 +50,7 @@ if FreeCAD.GuiUp: """Path Drilling object and FreeCAD command""" + # Qt tanslation handling def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) @@ -117,7 +119,7 @@ class ObjectDrilling: output = "" if obj.Comment != "": - output += '(' + str(obj.Comment)+')\n' + output += '(' + str(obj.Comment) + ')\n' toolLoad = obj.ToolController if toolLoad is None or toolLoad.ToolNumber == 0: @@ -133,7 +135,7 @@ class ObjectDrilling: FreeCAD.Console.PrintError("No Tool found or diameter is zero. We need a tool to build a Path.") return else: - self.radius = tool.Diameter/2 + self.radius = tool.Diameter / 2 tiplength = 0.0 if obj.AddTipLength: @@ -165,7 +167,7 @@ class ObjectDrilling: x = edge.Curve.Center.x y = edge.Curve.Center.y diameter = edge.BoundBox.XLength - holes.append({'x': x, 'y': y, 'featureName': baseobject.Name+'.'+'Drill'+str(i), 'd': diameter}) + holes.append({'x': x, 'y': y, 'featureName': baseobject.Name + '.' + 'Drill' + str(i), 'd': diameter}) i = i + 1 else: holes = self.findHoles(obj, baseobject.Shape) @@ -351,7 +353,7 @@ class CommandPathDrilling: FreeCADGui.doCommand('obj.FinalDepth=' + str(zbottom)) FreeCADGui.doCommand('PathScripts.PathUtils.addToJob(obj)') FreeCADGui.doCommand('obj.ToolController = PathScripts.PathUtils.findToolController(obj)') - # FreeCADGui.doCommand('PathScripts.PathDrilling.ObjectDrilling.setDepths(obj.Proxy, obj)') + # FreeCADGui.doCommand('PathScripts.PathDrilling.ObjectDrilling.setDepths(obj.Proxy, obj)') FreeCAD.ActiveDocument.commitTransaction() FreeCADGui.doCommand('obj.ViewObject.startEditing()') @@ -382,7 +384,7 @@ class TaskPanel: FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() - def clicked(self,button): + def clicked(self, button): if button == QtGui.QDialogButtonBox.Apply: self.getFields() FreeCAD.ActiveDocument.recompute() @@ -444,10 +446,10 @@ class TaskPanel: item.setCheckState(QtCore.Qt.Checked) else: item.setCheckState(QtCore.Qt.Unchecked) - self.form.baseList.setItem(self.form.baseList.rowCount()-1, 0, item) + self.form.baseList.setItem(self.form.baseList.rowCount() - 1, 0, item) item = QtGui.QTableWidgetItem("{:.3f}".format(self.obj.Diameters[i])) - self.form.baseList.setItem(self.form.baseList.rowCount()-1, 1, item) + self.form.baseList.setItem(self.form.baseList.rowCount() - 1, 1, item) self.form.baseList.resizeColumnToContents(0) self.form.baseList.itemChanged.connect(self.checkedChanged) @@ -527,7 +529,7 @@ class TaskPanel: else: enabledlist[ind] = 0 except: - PathLog.track("Not found:"+self.form.baseList.item(i, 0).text() + " in " + str(self.obj.Names)) + PathLog.track("Not found:" + self.form.baseList.item(i, 0).text() + " in " + str(self.obj.Names)) self.obj.Enabled = enabledlist FreeCAD.ActiveDocument.recompute() @@ -578,7 +580,7 @@ class TaskPanel: if hasattr(sub, 'ShapeType'): if sub.ShapeType == 'Vertex': PathLog.debug("Selection is a vertex, lets drill that") - names.append(objectname+'.'+sel.SubElementNames[i]) + names.append(objectname + '.' + sel.SubElementNames[i]) positions.append(FreeCAD.Vector(sub.X, sub.Y, 0)) enabled.append(1) diameters.append(0) @@ -586,14 +588,22 @@ class TaskPanel: elif sub.ShapeType == 'Edge': if PathUtils.isDrillable(sobj, sub): PathLog.debug("Selection is a drillable edge, lets drill that") - names.append(objectname+'.'+sel.SubElementNames[i]) + names.append(objectname + '.' + sel.SubElementNames[i]) positions.append(FreeCAD.Vector(sub.Curve.Center.x, sub.Curve.Center.y, 0)) enabled.append(1) diameters.append(sub.BoundBox.XLength) + # check for arcs - isDrillable ignores them. + elif type(sub.Curve) == Part.Circle: + PathLog.debug("Selection is a drillable arc edge, lets drill that") + names.append(objectname + '.' + sel.SubElementNames[i]) + positions.append(FreeCAD.Vector(sub.Curve.Center.x, sub.Curve.Center.y, 0)) + enabled.append(1) + diameters.append(sub.BoundBox.XLength) + elif sub.ShapeType == 'Face': if PathUtils.isDrillable(sobj.Shape, sub): PathLog.debug("Selection is a drillable face, lets drill that") - names.append(objectname+'.'+sel.SubElementNames[i]) + names.append(objectname + '.' + sel.SubElementNames[i]) positions.append(FreeCAD.Vector(sub.Surface.Center.x, sub.Surface.Center.y, 0)) enabled.append(1) diameters.append(sub.BoundBox.XLength)