From 6d57a0ff10b91ff5147d5a3b48be3389775c6eac Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Fri, 2 Jun 2017 06:52:48 -0700 Subject: [PATCH] Removed obselete tooltable editor implementations. --- src/Mod/Path/CMakeLists.txt | 1 - src/Mod/Path/PathScripts/PathToolTableEdit.py | 57 -- src/Mod/Path/PathScripts/TooltableEditor.py | 741 ------------------ 3 files changed, 799 deletions(-) delete mode 100644 src/Mod/Path/PathScripts/PathToolTableEdit.py delete mode 100644 src/Mod/Path/PathScripts/TooltableEditor.py diff --git a/src/Mod/Path/CMakeLists.txt b/src/Mod/Path/CMakeLists.txt index 550e3d12c5..03f1a700df 100644 --- a/src/Mod/Path/CMakeLists.txt +++ b/src/Mod/Path/CMakeLists.txt @@ -64,7 +64,6 @@ SET(PathScripts_SRCS PathScripts/PathToolLibraryManager.py PathScripts/PathUtils.py PathScripts/PostUtils.py - PathScripts/TooltableEditor.py PathScripts/__init__.py PathScripts/centroid_post.py PathScripts/comparams_post.py diff --git a/src/Mod/Path/PathScripts/PathToolTableEdit.py b/src/Mod/Path/PathScripts/PathToolTableEdit.py deleted file mode 100644 index 97ec337fb2..0000000000 --- a/src/Mod/Path/PathScripts/PathToolTableEdit.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- - -#*************************************************************************** -#* * -#* Copyright (c) 2015 Dan Falck * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* This program is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * -#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU Library General Public License for more details. * -#* * -#* You should have received a copy of the GNU Library General Public * -#* License along with this program; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#*************************************************************************** - -import FreeCAD,FreeCADGui -from PySide import QtCore,QtGui - -# Qt tanslation handling -def translate(text, context = "Path_ToolTableEdit", disambig=None): - return QtCore.QCoreApplication.translate(context, text, disambig) - -class CommandPathToolTableEdit: - def GetResources(self): - return {'Pixmap' : 'Path-ToolTable', - 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_ToolTableEdit","EditToolTable"), - 'Accel': "P, T", - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_ToolTableEdit","Edits a Tool Table in a selected Project")} - - def IsActive(self): - return not FreeCAD.ActiveDocument is None - - def Activated(self): - FreeCAD.ActiveDocument.openTransaction(translate("Edits a Tool Table in a selected Project")) - FreeCADGui.doCommand("from PathScripts import TooltableEditor") - FreeCADGui.doCommand("from PathScripts import PathUtils") - FreeCADGui.doCommand('machine = PathUtils.findMachine()') - FreeCADGui.doCommand('TooltableEditor.edit(machine.Name)') - FreeCAD.ActiveDocument.commitTransaction() - FreeCAD.ActiveDocument.recompute() - -if FreeCAD.GuiUp: - # register the FreeCAD command - FreeCADGui.addCommand('Path_ToolTableEdit',CommandPathToolTableEdit()) - - -FreeCAD.Console.PrintLog("Loading PathToolTableEdit... done\n") - diff --git a/src/Mod/Path/PathScripts/TooltableEditor.py b/src/Mod/Path/PathScripts/TooltableEditor.py deleted file mode 100644 index f1c961d460..0000000000 --- a/src/Mod/Path/PathScripts/TooltableEditor.py +++ /dev/null @@ -1,741 +0,0 @@ -# -*- coding: utf-8 -*- - -# *************************************************************************** -# * * -# * Copyright (c) 2014 Yorik van Havre * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - - -import FreeCAD -import Path -import xml.sax -import os -from PySide import QtCore, QtGui -import DraftGui - -# convenience functions - - -try: - _fromUtf8 = QtCore.QString.fromUtf8 -except AttributeError: - def _fromUtf8(s): - return s - -def translate(text, context = "Path_ToolTableEditor", disambig=None): - return QtCore.QCoreApplication.translate(context, text, disambig) - -# Tooltable XML readers - - -class FreeCADTooltableHandler(xml.sax.ContentHandler): - # http://www.tutorialspoint.com/python/python_xml_processing.htm - - def __init__(self): - self.tooltable = None - self.tool = None - self.number = None - - # Call when an element is found - def startElement(self, tag, attributes): - if tag == "Tooltable": - self.tooltable = Path.Tooltable() - elif tag == "Toolslot": - self.number = int(attributes["number"]) - elif tag == "Tool": - self.tool = Path.Tool() - self.tool.Name = str(attributes["name"]) - self.tool.ToolType = str(attributes["type"]) - self.tool.Material = str(attributes["mat"]) - # for some reason without the following line I get an error - print(attributes["diameter"]) - self.tool.Diameter = float(attributes["diameter"]) - self.tool.LengthOffset = float(attributes["length"]) - self.tool.FlatRadius = float(attributes["flat"]) - self.tool.CornerRadius = float(attributes["corner"]) - self.tool.CuttingEdgeAngle = float(attributes["angle"]) - self.tool.CuttingEdgeHeight = float(attributes["height"]) - - # Call when an elements ends - def endElement(self, tag): - if tag == "Toolslot": - if self.tooltable and self.tool and self.number: - self.tooltable.setTool(self.number, self.tool) - self.number = None - self.tool = None - - -class HeeksTooltableHandler(xml.sax.ContentHandler): - - def __init__(self): - self.tooltable = Path.Tooltable() - self.tool = None - self.number = None - - # Call when an element is found - def startElement(self, tag, attributes): - if tag == "Tool": - self.tool = Path.Tool() - self.number = int(attributes["tool_number"]) - self.tool.Name = str(attributes["title"]) - elif tag == "params": - t = str(attributes["type"]) - if t == "drill": - self.tool.ToolType = "Drill" - elif t == "center_drill_bit": - self.tool.ToolType = "CenterDrill" - elif t == "end_mill": - self.tool.ToolType = "EndMill" - elif t == "slot_cutter": - self.tool.ToolType = "SlotCutter" - elif t == "ball_end_mill": - self.tool.ToolType = "BallEndMill" - elif t == "chamfer": - self.tool.ToolType = "Chamfer" - elif t == "engraving_bit": - self.tool.ToolType = "Engraver" - m = str(attributes["material"]) - if m == "0": - self.tool.Material = "HighSpeedSteel" - elif m == "1": - self.tool.Material = "Carbide" - # for some reason without the following line I get an error - print(attributes["diameter"]) - self.tool.Diameter = float(attributes["diameter"]) - self.tool.LengthOffset = float(attributes["tool_length_offset"]) - self.tool.FlatRadius = float(attributes["flat_radius"]) - self.tool.CornerRadius = float(attributes["corner_radius"]) - self.tool.CuttingEdgeAngle = float( - attributes["cutting_edge_angle"]) - self.tool.CuttingEdgeHeight = float( - attributes["cutting_edge_height"]) - - # Call when an elements ends - def endElement(self, tag): - if tag == "Tool": - if self.tooltable and self.tool and self.number: - self.tooltable.setTool(self.number, self.tool) - self.number = None - self.tool = None - - -# Tooltable Editor - - -class Editor(QtGui.QDialog): - - def __init__(self, obj): - - QtGui.QDialog.__init__(self) - self.setObjectName(_fromUtf8("TooltableEditor")) - self.resize(468, 476) - self.verticalLayout = QtGui.QVBoxLayout(self) - self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) - self.horizontalLayout = QtGui.QHBoxLayout() - self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) - self.DECIMALS = FreeCAD.ParamGet( - "User parameter:BaseApp/Preferences/Units").GetInt("Decimals", 2) - self.FORMAT = DraftGui.makeFormatSpec(self.DECIMALS, 'Length') - # left groupbox - self.groupBox = QtGui.QGroupBox(self) - sizePolicy = QtGui.QSizePolicy( - QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.groupBox.sizePolicy().hasHeightForWidth()) - self.groupBox.setSizePolicy(sizePolicy) - self.groupBox.setObjectName(_fromUtf8("groupBox")) - self.verticalLayout_2 = QtGui.QVBoxLayout(self.groupBox) - self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) - self.horizontalLayout_9 = QtGui.QHBoxLayout() - self.horizontalLayout_9.setObjectName(_fromUtf8("horizontalLayout_9")) - - # import button - self.ButtonImport = QtGui.QPushButton(self.groupBox) - icon = QtGui.QIcon.fromTheme(_fromUtf8("document-import")) - self.ButtonImport.setIcon(icon) - self.ButtonImport.setObjectName(_fromUtf8("ButtonImport")) - self.horizontalLayout_9.addWidget(self.ButtonImport) - - # export button - self.ButtonExport = QtGui.QPushButton(self.groupBox) - icon = QtGui.QIcon.fromTheme(_fromUtf8("document-export")) - self.ButtonExport.setIcon(icon) - self.ButtonExport.setObjectName(_fromUtf8("ButtonExport")) - self.horizontalLayout_9.addWidget(self.ButtonExport) - - # tools list - self.verticalLayout_2.addLayout(self.horizontalLayout_9) - self.ToolsList = QtGui.QTreeWidget(self.groupBox) - self.ToolsList.setObjectName(_fromUtf8("ToolsList")) - self.ToolsList.header().setDefaultSectionSize(40) - self.verticalLayout_2.addWidget(self.ToolsList) - - # add button - self.horizontalLayout_8 = QtGui.QHBoxLayout() - self.horizontalLayout_8.setObjectName(_fromUtf8("horizontalLayout_8")) - self.ButtonAdd = QtGui.QPushButton(self.groupBox) - icon = QtGui.QIcon.fromTheme(_fromUtf8("edit-add")) - self.ButtonAdd.setIcon(icon) - self.ButtonAdd.setObjectName(_fromUtf8("ButtonAdd")) - self.horizontalLayout_8.addWidget(self.ButtonAdd) - - # delete button - self.ButtonDelete = QtGui.QPushButton(self.groupBox) - icon = QtGui.QIcon.fromTheme(_fromUtf8("edit-delete")) - self.ButtonDelete.setIcon(icon) - self.ButtonDelete.setObjectName(_fromUtf8("ButtonDelete")) - self.horizontalLayout_8.addWidget(self.ButtonDelete) - - # up button - self.ButtonUp = QtGui.QPushButton(self.groupBox) - icon = QtGui.QIcon.fromTheme(_fromUtf8("go-up")) - self.ButtonUp.setIcon(icon) - self.ButtonDelete.setObjectName(_fromUtf8("ButtonUp")) - self.horizontalLayout_8.addWidget(self.ButtonUp) - - # down button - self.ButtonDown = QtGui.QPushButton(self.groupBox) - icon = QtGui.QIcon.fromTheme(_fromUtf8("go-down")) - self.ButtonDown.setIcon(icon) - self.ButtonDown.setObjectName(_fromUtf8("ButtonDown")) - self.horizontalLayout_8.addWidget(self.ButtonDown) - - # right groupbox - self.verticalLayout_2.addLayout(self.horizontalLayout_8) - self.horizontalLayout.addWidget(self.groupBox) - self.groupBox_2 = QtGui.QGroupBox(self) - self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) - self.verticalLayout_3 = QtGui.QVBoxLayout(self.groupBox_2) - self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) - - # name - self.label = QtGui.QLabel(self.groupBox_2) - self.label.setObjectName(_fromUtf8("label")) - self.verticalLayout_3.addWidget(self.label) - self.NameField = QtGui.QLineEdit(self.groupBox_2) - self.NameField.setObjectName(_fromUtf8("NameField")) - self.verticalLayout_3.addWidget(self.NameField) - - # type - self.label_2 = QtGui.QLabel(self.groupBox_2) - self.label_2.setObjectName(_fromUtf8("label_2")) - self.verticalLayout_3.addWidget(self.label_2) - self.TypeField = QtGui.QComboBox(self.groupBox_2) - self.TypeField.setObjectName(_fromUtf8("TypeField")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.TypeField.addItem(_fromUtf8("")) - self.verticalLayout_3.addWidget(self.TypeField) - - # material - self.label_3 = QtGui.QLabel(self.groupBox_2) - self.label_3.setObjectName(_fromUtf8("label_3")) - self.verticalLayout_3.addWidget(self.label_3) - self.MaterialField = QtGui.QComboBox(self.groupBox_2) - self.MaterialField.setObjectName(_fromUtf8("MaterialField")) - self.MaterialField.addItem(_fromUtf8("")) - self.MaterialField.addItem(_fromUtf8("")) - self.MaterialField.addItem(_fromUtf8("")) - self.MaterialField.addItem(_fromUtf8("")) - self.MaterialField.addItem(_fromUtf8("")) - self.MaterialField.addItem(_fromUtf8("")) - self.MaterialField.addItem(_fromUtf8("")) - self.MaterialField.addItem(_fromUtf8("")) - self.verticalLayout_3.addWidget(self.MaterialField) - self.label_4 = QtGui.QLabel(self.groupBox_2) - self.label_4.setObjectName(_fromUtf8("label_4")) - self.verticalLayout_3.addWidget(self.label_4) - - # diameter - self.horizontalLayout_2 = QtGui.QHBoxLayout() - self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) - self.label_5 = QtGui.QLabel(self.groupBox_2) - self.label_5.setObjectName(_fromUtf8("label_5")) - self.horizontalLayout_2.addWidget(self.label_5) - self.DiameterField = QtGui.QDoubleSpinBox(self.groupBox_2) - self.DiameterField.setMaximum(9999) - self.DiameterField.setAlignment( - QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) - self.DiameterField.setObjectName(_fromUtf8("DiameterField")) - self.horizontalLayout_2.addWidget(self.DiameterField) - self.verticalLayout_3.addLayout(self.horizontalLayout_2) - - # length offset - self.horizontalLayout_3 = QtGui.QHBoxLayout() - self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) - self.label_6 = QtGui.QLabel(self.groupBox_2) - self.label_6.setObjectName(_fromUtf8("label_6")) - self.horizontalLayout_3.addWidget(self.label_6) - self.LengthOffsetField = QtGui.QDoubleSpinBox(self.groupBox_2) - self.LengthOffsetField.setMaximum(9999) - self.LengthOffsetField.setAlignment( - QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) - self.LengthOffsetField.setObjectName(_fromUtf8("LengthOffsetField")) - self.horizontalLayout_3.addWidget(self.LengthOffsetField) - self.verticalLayout_3.addLayout(self.horizontalLayout_3) - - # flat radius - self.horizontalLayout_4 = QtGui.QHBoxLayout() - self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) - self.label_7 = QtGui.QLabel(self.groupBox_2) - self.label_7.setObjectName(_fromUtf8("label_7")) - self.horizontalLayout_4.addWidget(self.label_7) - self.FlatRadiusField = QtGui.QDoubleSpinBox(self.groupBox_2) - self.FlatRadiusField.setMaximum(9999) - self.FlatRadiusField.setAlignment( - QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) - self.FlatRadiusField.setObjectName(_fromUtf8("FlatRadiusField")) - self.horizontalLayout_4.addWidget(self.FlatRadiusField) - self.verticalLayout_3.addLayout(self.horizontalLayout_4) - - # corner radius - self.horizontalLayout_5 = QtGui.QHBoxLayout() - self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5")) - self.label_8 = QtGui.QLabel(self.groupBox_2) - self.label_8.setObjectName(_fromUtf8("label_8")) - self.horizontalLayout_5.addWidget(self.label_8) - self.CornerRadiusField = QtGui.QDoubleSpinBox(self.groupBox_2) - self.CornerRadiusField.setMaximum(9999) - self.CornerRadiusField.setAlignment( - QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) - self.CornerRadiusField.setObjectName(_fromUtf8("CornerRadiusField")) - self.horizontalLayout_5.addWidget(self.CornerRadiusField) - self.verticalLayout_3.addLayout(self.horizontalLayout_5) - - # cutting edge angle - self.horizontalLayout_6 = QtGui.QHBoxLayout() - self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6")) - self.label_9 = QtGui.QLabel(self.groupBox_2) - self.label_9.setObjectName(_fromUtf8("label_9")) - self.horizontalLayout_6.addWidget(self.label_9) - self.CuttingEdgeAngleField = QtGui.QDoubleSpinBox(self.groupBox_2) - self.CuttingEdgeAngleField.setMaximum(360) - self.CuttingEdgeAngleField.setAlignment( - QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) - self.CuttingEdgeAngleField.setObjectName( - _fromUtf8("CuttingEdgeAngleField")) - self.horizontalLayout_6.addWidget(self.CuttingEdgeAngleField) - self.verticalLayout_3.addLayout(self.horizontalLayout_6) - - # cutting edge height - self.horizontalLayout_7 = QtGui.QHBoxLayout() - self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7")) - self.label_10 = QtGui.QLabel(self.groupBox_2) - self.label_10.setObjectName(_fromUtf8("label_10")) - self.horizontalLayout_7.addWidget(self.label_10) - self.CuttingEdgeHeightField = QtGui.QDoubleSpinBox(self.groupBox_2) - self.CuttingEdgeHeightField.setMaximum(9999) - self.CuttingEdgeHeightField.setAlignment( - QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) - self.CuttingEdgeHeightField.setObjectName( - _fromUtf8("CuttingEdgeHeightField")) - self.horizontalLayout_7.addWidget(self.CuttingEdgeHeightField) - self.verticalLayout_3.addLayout(self.horizontalLayout_7) - self.horizontalLayout.addWidget(self.groupBox_2) - self.verticalLayout.addLayout(self.horizontalLayout) - - # ok / cancel box - self.buttonBox = QtGui.QDialogButtonBox(self) - self.buttonBox.setOrientation(QtCore.Qt.Horizontal) - self.buttonBox.setStandardButtons( - QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok) - self.buttonBox.setObjectName(_fromUtf8("buttonBox")) - self.verticalLayout.addWidget(self.buttonBox) - - self.retranslateUi() - - # connect buttons - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL( - _fromUtf8("accepted()")), self.accept) - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL( - _fromUtf8("rejected()")), self.reject) - QtCore.QObject.connect(self.ButtonImport, QtCore.SIGNAL( - _fromUtf8("clicked()")), self.read) - QtCore.QObject.connect(self.ButtonExport, QtCore.SIGNAL( - _fromUtf8("clicked()")), self.write) - QtCore.QObject.connect(self.ButtonAdd, QtCore.SIGNAL( - _fromUtf8("clicked()")), self.addnew) - QtCore.QObject.connect(self.ButtonDelete, QtCore.SIGNAL( - _fromUtf8("clicked()")), self.delete) - QtCore.QObject.connect(self.ButtonUp, QtCore.SIGNAL( - _fromUtf8("clicked()")), self.moveup) - QtCore.QObject.connect(self.ButtonDown, QtCore.SIGNAL( - _fromUtf8("clicked()")), self.movedown) - QtCore.QObject.connect(self.ToolsList, QtCore.SIGNAL(_fromUtf8( - "currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)")), self.selectTool) - QtCore.QObject.connect(self.NameField, QtCore.SIGNAL( - _fromUtf8("textEdited(QString)")), self.changeName) - QtCore.QObject.connect(self.TypeField, QtCore.SIGNAL( - _fromUtf8("currentIndexChanged(int)")), self.changeType) - QtCore.QObject.connect(self.MaterialField, QtCore.SIGNAL( - _fromUtf8("currentIndexChanged(int)")), self.changeMaterial) - QtCore.QObject.connect(self.DiameterField, QtCore.SIGNAL( - _fromUtf8("valueChanged(double)")), self.changeDiameter) - QtCore.QObject.connect(self.LengthOffsetField, QtCore.SIGNAL( - _fromUtf8("valueChanged(double)")), self.changeLengthOffset) - QtCore.QObject.connect(self.FlatRadiusField, QtCore.SIGNAL( - _fromUtf8("valueChanged(double)")), self.changeFlatRadius) - QtCore.QObject.connect(self.CornerRadiusField, QtCore.SIGNAL( - _fromUtf8("valueChanged(double)")), self.changeCornerRadius) - QtCore.QObject.connect(self.CuttingEdgeAngleField, QtCore.SIGNAL( - _fromUtf8("valueChanged(double)")), self.changeCuttingEdgeAngle) - QtCore.QObject.connect(self.CuttingEdgeHeightField, QtCore.SIGNAL( - _fromUtf8("valueChanged(double)")), self.changeCuttingEdgeHeight) - QtCore.QMetaObject.connectSlotsByName(self) - self.tooltable = obj.Tooltable.copy() - self.tool = None - self.number = None - self.reset() - - def retranslateUi(self): - self.setWindowTitle(_translate( - "TooltableEditor", "Tooltable editor", None)) - self.groupBox.setTitle(_translate( - "TooltableEditor", "Tools list", None)) - self.ButtonImport.setText(_translate( - "TooltableEditor", "Import...", None)) - self.ButtonExport.setText(_translate( - "TooltableEditor", "Export...", None)) - self.ToolsList.headerItem().setText( - 0, _translate("TooltableEditor", "Slot", None)) - self.ToolsList.headerItem().setText( - 1, _translate("TooltableEditor", "Tool", None)) - self.ButtonAdd.setText(_translate("TooltableEditor", "Add new", None)) - self.ButtonDelete.setText(_translate( - "TooltableEditor", "Delete", None)) - self.ButtonUp.setText(_translate("TooltableEditor", "Move up", None)) - self.ButtonDown.setText(_translate( - "TooltableEditor", "Move down", None)) - self.groupBox_2.setTitle(_translate( - "TooltableEditor", "Tool properties", None)) - self.label.setText(_translate("TooltableEditor", "Name", None)) - self.label_2.setText(_translate("TooltableEditor", "Type", None)) - self.TypeField.setItemText(0, _translate( - "TooltableEditor", "Undefined", None)) - self.TypeField.setItemText(1, _translate( - "TooltableEditor", "Drill", None)) - self.TypeField.setItemText(2, _translate( - "TooltableEditor", "Center Drill", None)) - self.TypeField.setItemText(3, _translate( - "TooltableEditor", "Counter Sink", None)) - self.TypeField.setItemText(4, _translate( - "TooltableEditor", "Counter Bore", None)) - self.TypeField.setItemText(5, _translate( - "TooltableEditor", "Reamer", None)) - self.TypeField.setItemText( - 6, _translate("TooltableEditor", "Tap", None)) - self.TypeField.setItemText(7, _translate( - "TooltableEditor", "End Mill", None)) - self.TypeField.setItemText(8, _translate( - "TooltableEditor", "Slot Cutter", None)) - self.TypeField.setItemText(9, _translate( - "TooltableEditor", "Ball End Mill", None)) - self.TypeField.setItemText(10, _translate( - "TooltableEditor", "Chamfer Mill", None)) - self.TypeField.setItemText(11, _translate( - "TooltableEditor", "Corner Round", None)) - self.TypeField.setItemText(12, _translate( - "TooltableEditor", "Engraver", None)) - self.label_3.setText(_translate("TooltableEditor", "Material", None)) - self.MaterialField.setItemText(0, _translate( - "TooltableEditor", "Undefined", None)) - self.MaterialField.setItemText(1, _translate( - "TooltableEditor", "High Speed Steel", None)) - self.MaterialField.setItemText(2, _translate( - "TooltableEditor", "High Carbon Tool Steel", None)) - self.MaterialField.setItemText(3, _translate( - "TooltableEditor", "Cast Alloy", None)) - self.MaterialField.setItemText( - 4, _translate("TooltableEditor", "Carbide", None)) - self.MaterialField.setItemText( - 5, _translate("TooltableEditor", "Ceramics", None)) - self.MaterialField.setItemText( - 6, _translate("TooltableEditor", "Diamond", None)) - self.MaterialField.setItemText( - 7, _translate("TooltableEditor", "Sialon", None)) - self.label_4.setText(_translate("TooltableEditor", "Properties", None)) - self.label_5.setText(_translate("TooltableEditor", "Diameter", None)) -# self.DiameterField.setSuffix(_translate("TooltableEditor", "mm", None)) - self.label_6.setText(_translate( - "TooltableEditor", "Length offset", None)) - self.LengthOffsetField.setSuffix( - _translate("TooltableEditor", "mm", None)) - self.label_7.setText(_translate( - "TooltableEditor", "Flat radius", None)) - self.FlatRadiusField.setSuffix( - _translate("TooltableEditor", "mm", None)) - self.label_8.setText(_translate( - "TooltableEditor", "Corner radius", None)) - self.CornerRadiusField.setSuffix( - _translate("TooltableEditor", "mm", None)) - self.label_9.setText(_translate( - "TooltableEditor", "Cutting edge angle", None)) - self.CuttingEdgeAngleField.setSuffix( - _translate("TooltableEditor", "°", None)) - self.label_10.setText(_translate( - "TooltableEditor", "Cutting edge height", None)) - self.CuttingEdgeHeightField.setSuffix( - _translate("TooltableEditor", "mm", None)) - - def reset(self): - "resets the editor with the contents of the current internal tooltable" - self.tool = None - self.number = None - self.ToolsList.clear() - for number, tool in self.tooltable.Tools.iteritems(): - item = QtGui.QTreeWidgetItem(self.ToolsList) - item.setText(0, str(number)) - item.setText(1, tool.Name) - self.NameField.setText("") - self.TypeField.setCurrentIndex(-1) - self.MaterialField.setCurrentIndex(-1) - self.DiameterField.setValue(0) - self.LengthOffsetField.setValue(0) - self.FlatRadiusField.setValue(0) - self.CornerRadiusField.setValue(0) - self.CuttingEdgeAngleField.setValue(0) - self.CuttingEdgeHeightField.setValue(0) - - def selectTool(self, current, previous): - "fills the data of the currently selected tool" - if current: - number = int(current.text(0)) - tool = self.tooltable.getTool(number) - if tool: - self.number = number - self.tool = tool - self.NameField.setText(tool.Name) - self.TypeField.setCurrentIndex(self.getType(tool.ToolType)) - self.MaterialField.setCurrentIndex( - self.getMaterial(tool.Material)) - self.DiameterField.setValue(tool.Diameter) - self.LengthOffsetField.setValue(tool.LengthOffset) - self.FlatRadiusField.setValue(tool.FlatRadius) - self.CornerRadiusField.setValue(tool.CornerRadius) - self.CuttingEdgeAngleField.setValue(tool.CuttingEdgeAngle) - self.CuttingEdgeHeightField.setValue(tool.CuttingEdgeHeight) - - def getType(self, tooltype): - "gets a combobox index number for a given type or viceversa" - toolslist = ["Drill", "CenterDrill", "CounterSink", "CounterBore", - "Reamer", "Tap", "EndMill", "SlotCutter", "BallEndMill", - "ChamferMill", "CornerRound", "Engraver"] - if isinstance(tooltype, str): - if tooltype in toolslist: - return toolslist.index(tooltype) + 1 - else: - return 0 - else: - if tooltype == 0: - return "Undefined" - else: - return toolslist[tooltype - 1] - - def getMaterial(self, material): - "gets a combobox index number for a given material or viceversa" - matslist = ["HighSpeedSteel", "HighCarbonToolSteel", "CastAlloy", - "Carbide", "Ceramics", "Diamond", "Sialon"] - if isinstance(material, str): - if material in matslist: - return matslist.index(material) + 1 - else: - return 0 - else: - if material == 0: - return "Undefined" - else: - return matslist[material - 1] - - def changeName(self, text): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.Name = str(text) - self.changeTool() - if self.number: - l = self.ToolsList.findItems( - str(self.number), QtCore.Qt.MatchExactly, 0) - if len(l) == 1: - l[0].setText(1, text) - - def changeType(self, num): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.ToolType = self.getType(num) - self.changeTool() - - def changeMaterial(self, num): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.Material = self.getMaterial(num) - self.changeTool() - - def changeDiameter(self, value): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.Diameter = value - self.changeTool() - - def changeLengthOffset(self, value): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.LengthOffset = value - self.changeTool() - - def changeFlatRadius(self, value): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.FlatRadius = value - self.changeTool() - - def changeCornerRadius(self, value): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.CornerRadius = value - self.changeTool() - - def changeCuttingEdgeAngle(self, value): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.CuttingEdgeAngle = value - self.changeTool() - - def changeCuttingEdgeHeight(self, value): - "called when the corresponding field has changed (needed for nasty pyside bug)" - if self.tool: - self.tool.CuttingEdgeHeight = value - self.changeTool() - - def changeTool(self): - "changes a given tool" - if self.number and self.tool: - self.tooltable.setTool(self.number, self.tool) - - def delete(self): - "deletes the current tool" - if self.number: - self.tooltable.deleteTool(self.number) - self.reset() - - def addnew(self): - "adds a new tool at the end of the table" - tool = Path.Tool() - print(self.NameField) - if self.NameField.text(): - tool.Name = str(self.NameField.text()) - tool.ToolType = self.getType(self.TypeField.currentIndex()) - tool.Material = self.getMaterial(self.MaterialField.currentIndex()) - tool.Diameter = self.DiameterField.value() - tool.LengthOffset = self.LengthOffsetField.value() - tool.FlatRadius = self.FlatRadiusField.value() - tool.CornerRadius = self.CornerRadiusField.value() - tool.CuttingEdgeAngle = self.CuttingEdgeAngleField.value() - tool.CuttingEdgeHeight = self.CuttingEdgeHeightField.value() - self.tooltable.addTools(tool) - self.reset() - - def read(self): - "imports a tooltable from a file" - filename = QtGui.QFileDialog.getOpenFileName(self, _translate("TooltableEditor", "Open tooltable", None), None, _translate( - "TooltableEditor", "Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable)", None)) - if filename: - parser = xml.sax.make_parser() - parser.setFeature(xml.sax.handler.feature_namespaces, 0) - if os.path.splitext(filename[0])[1].lower() == ".tooltable": - Handler = HeeksTooltableHandler() - else: - Handler = FreeCADTooltableHandler() - parser.setContentHandler(Handler) - parser.parse(str(filename[0])) - if Handler.tooltable: - self.tooltable = Handler.tooltable - self.reset() - - def write(self): - "exports the tooltable to a file" - if self.tooltable: - filename = QtGui.QFileDialog.getSaveFileName(self, _translate( - "TooltableEditor", "Save tooltable", None), None, _translate("TooltableEditor", "Tooltable XML (*.xml)", None)) - if filename: - fil = open(str(filename[0]), "wb") - fil.write('\n') - fil.write(self.tooltable.Content) - fil.close() - print("Written ",filename[0]) - - def moveup(self): - "moves a tool to a lower number, if possible" - if self.number: - if self.number < 2: - return - target = self.number - 1 - t1 = self.tooltable.getTool(self.number).copy() - self.tooltable.deleteTool(self.number) - if target in self.tooltable.Tools.keys(): - t2 = self.tooltable.getTool(target).copy() - self.tooltable.deleteTool(target) - self.tooltable.setTool(self.number, t2) - self.tooltable.setTool(target, t1) - self.reset() - - def movedown(self): - "moves a tool to a higher number, if possible" - if self.number: - target = self.number + 1 - t1 = self.tooltable.getTool(self.number).copy() - self.tooltable.deleteTool(self.number) - if target in self.tooltable.Tools.keys(): - t2 = self.tooltable.getTool(target).copy() - self.tooltable.deleteTool(target) - self.tooltable.setTool(self.number, t2) - self.tooltable.setTool(target, t1) - self.reset() - - -def edit(objectname): - """edit(objectname): this is the main function of this module. - opens an editor dialog to edit the Tooltable of the given object""" - obj = FreeCAD.ActiveDocument.getObject(objectname) - if not obj: - raise Exception(_translate( - "TooltableEditor", "Object not found", None)) - if not hasattr(obj, "Tooltable"): - raise Exception(_translate("TooltableEditor", - "Object doesn't have a tooltable property", None)) - dialog = Editor(obj) - r = dialog.exec_() - if r: - tooltable = dialog.tooltable - FreeCAD.ActiveDocument.openTransaction("Edit Tooltable") - obj.Tooltable = tooltable - FreeCAD.ActiveDocument.commitTransaction() - - obj.ViewObject.finishEditing()