diff --git a/src/Mod/Path/PathScripts/PathJob.py b/src/Mod/Path/PathScripts/PathJob.py index 655528b72d..2f9958800b 100644 --- a/src/Mod/Path/PathScripts/PathJob.py +++ b/src/Mod/Path/PathScripts/PathJob.py @@ -457,6 +457,11 @@ class ObjectJob: self.obj.Operations.Group = group op.Path.Center = self.obj.Operations.Path.Center + def nextToolNumber(self): + # returns the next available toolnumber in the job + group = self.obj.Tools.Group + return sorted([t.ToolNumber for t in group])[-1] + 1 + def addToolController(self, tc): group = self.obj.Tools.Group PathLog.debug("addToolController(%s): %s" % (tc.Label, [t.Label for t in group])) diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index 865a7445ce..ce62fd0923 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -27,11 +27,11 @@ import math import traceback from pivy import coin from PySide import QtCore, QtGui +import json import FreeCAD import FreeCADGui -import PathGui as PGui # ensure Path/Gui/Resources are loaded import PathScripts.PathJob as PathJob import PathScripts.PathJobCmd as PathJobCmd import PathScripts.PathJobDlg as PathJobDlg @@ -520,7 +520,7 @@ class StockFromExistingEdit(StockEdit): stock = self.form.stockExisting.itemData(self.form.stockExisting.currentIndex()) if not (hasattr(obj.Stock, 'Objects') and len(obj.Stock.Objects) == 1 and obj.Stock.Objects[0] == stock): if stock: - stock = PathJob.createResourceClone(obj, stock, self.StockLabelPrefix , 'Stock') + stock = PathJob.createResourceClone(obj, stock, self.StockLabelPrefix, 'Stock') stock.ViewObject.Visibility = True PathStock.SetupStockObject(stock, PathStock.StockType.Unknown) stock.Proxy.execute(stock) @@ -546,7 +546,7 @@ class StockFromExistingEdit(StockEdit): index = -1 for i, solid in enumerate(self.candidates(obj)): self.form.stockExisting.addItem(solid.Label, solid) - label="{}-{}".format(self.StockLabelPrefix, solid.Label) + label = "{}-{}".format(self.StockLabelPrefix, solid.Label) if label == stockName: index = i @@ -864,13 +864,33 @@ class TaskPanel: self.toolControllerSelect() def toolControllerAdd(self): + # adding a TC from a toolbit directly. + # Try to find a tool number from the currently selected lib. Otherwise + # use next available number + if PathPreferences.toolsUseLegacyTools(): PathToolLibraryEditor.CommandToolLibraryEdit().edit(self.obj, self.updateToolController) else: tools = PathToolBitGui.LoadTools() + + curLib = PathPreferences.lastFileToolLibrary() + + library = None + if curLib is not None: + with open(curLib) as fp: + library = json.load(fp) + for tool in tools: - tc = PathToolControllerGui.Create(name=tool.Label, tool=tool) + toolNum = self.obj.Proxy.nextToolNumber() + if library is not None: + for toolBit in library['tools']: + + if toolBit['path'] == tool.File: + toolNum = toolBit['nr'] + + tc = PathToolControllerGui.Create(name=tool.Label, tool=tool, toolNumber=toolNum) self.obj.Proxy.addToolController(tc) + FreeCAD.ActiveDocument.recompute() self.updateToolController()