Jelajahi Sumber

- small changes in the TclCommands: MillDrills, MillSlots, DrillCNCJob: the new parameter for tolerance is now named: tooldia
- cleaned up the 'About FlatCAM' window, started to give credits for the translation team

Marius Stanciu 6 tahun lalu
induk
melakukan
d22592e64c

+ 122 - 28
FlatCAMApp.py

@@ -1854,7 +1854,7 @@ class App(QtCore.QObject):
                                   ]
                                   ]
 
 
         self.ordinary_keywords = ['all', 'angle_x', 'angle_y', 'axis', 'axisoffset', 'box', 'center_x', 'center_y',
         self.ordinary_keywords = ['all', 'angle_x', 'angle_y', 'axis', 'axisoffset', 'box', 'center_x', 'center_y',
-                                  'columns', 'combine', 'connect', 'contour', 'depthperpass', 'dia', 'dist',
+                                  'columns', 'combine', 'connect', 'contour', 'depthperpass', 'dia', 'diatol', 'dist',
                                   'drilled_dias', 'drillz',
                                   'drilled_dias', 'drillz',
                                   'endz', 'extracut', 'factor', 'False', 'false', 'feedrate', 'feedrate_rapid',
                                   'endz', 'extracut', 'factor', 'False', 'false', 'feedrate', 'feedrate_rapid',
                                   'filename', 'follow', 'gaps', 'gapsize', 'grid', 'gridoffset', 'gridoffsetx',
                                   'filename', 'follow', 'gaps', 'gapsize', 'grid', 'gridoffset', 'gridoffsetx',
@@ -3757,7 +3757,8 @@ class App(QtCore.QObject):
 
 
                 # Icon and title
                 # Icon and title
                 self.setWindowIcon(parent.app_icon)
                 self.setWindowIcon(parent.app_icon)
-                self.setWindowTitle("FlatCAM")
+                self.setWindowTitle(_("About FlatCAM"))
+                self.resize(600, 200)
                 # self.setStyleSheet("background-image: url(share/flatcam_icon256.png); background-attachment: fixed")
                 # self.setStyleSheet("background-image: url(share/flatcam_icon256.png); background-attachment: fixed")
                 # self.setStyleSheet(
                 # self.setStyleSheet(
                 #     "border-image: url(share/flatcam_icon256.png) 0 0 0 0 stretch stretch; "
                 #     "border-image: url(share/flatcam_icon256.png) 0 0 0 0 stretch stretch; "
@@ -3770,58 +3771,151 @@ class App(QtCore.QObject):
                 # palette.setBrush(10, QtGui.QBrush(bgimage))  # 10 = Windowrole
                 # palette.setBrush(10, QtGui.QBrush(bgimage))  # 10 = Windowrole
                 # self.setPalette(palette)
                 # self.setPalette(palette)
 
 
-                layout1 = QtWidgets.QVBoxLayout()
-                self.setLayout(layout1)
-
-                layout2 = QtWidgets.QHBoxLayout()
-                layout1.addLayout(layout2)
 
 
                 logo = QtWidgets.QLabel()
                 logo = QtWidgets.QLabel()
                 logo.setPixmap(QtGui.QPixmap('share/flatcam_icon256.png'))
                 logo.setPixmap(QtGui.QPixmap('share/flatcam_icon256.png'))
-                layout2.addWidget(logo, stretch=0)
 
 
                 title = QtWidgets.QLabel(
                 title = QtWidgets.QLabel(
                     _(
                     _(
                         "<font size=8><B>FlatCAM</B></font><BR>"
                         "<font size=8><B>FlatCAM</B></font><BR>"
-                        "Version {version} {beta} ({date}) - {arch} <BR>"
-                        "<BR>"
                         "2D Computer-Aided Printed Circuit Board<BR>"
                         "2D Computer-Aided Printed Circuit Board<BR>"
                         "Manufacturing.<BR>"
                         "Manufacturing.<BR>"
                         "<BR>"
                         "<BR>"
-                        "<B> License: </B><BR>"
-                        "Licensed under MIT license (2014 - 2019)"
-                        "<BR>"
-                        "by (c)Juan Pablo Caram <BR>"
-                        "<BR>"
-                        "<B> Programmers:</B><BR>"
-                        "Denis Hayrullin<BR>"
-                        "Kamil Sopko<BR>"
-                        "Marius Stanciu<BR>"
-                        "Matthieu Berthomé<BR>"
-                        "and many others found "
-                        "<a href = \"https://bitbucket.org/jpcgt/flatcam/pull-requests/?state=MERGED\">here.</a><BR>"
                         "<BR>"
                         "<BR>"
-                        "<B>Development</B> is done "
+                        "<B>Development</B> "
                         "<a href = \"https://bitbucket.org/jpcgt/flatcam/src/Beta/\">here.</a><BR>"
                         "<a href = \"https://bitbucket.org/jpcgt/flatcam/src/Beta/\">here.</a><BR>"
                         "<b>DOWNLOAD</B> area "
                         "<b>DOWNLOAD</B> area "
                         "<a href = \"https://bitbucket.org/jpcgt/flatcam/downloads/\">here.</a><BR>"
                         "<a href = \"https://bitbucket.org/jpcgt/flatcam/downloads/\">here.</a><BR>"
                         ""
                         ""
+                    )
+                )
+                title.setOpenExternalLinks(True)
+
+                closebtn = QtWidgets.QPushButton(_("Close"))
+
+                tab_widget = QtWidgets.QTabWidget()
+                description_label = QtWidgets.QLabel(
+                    _(
+                        "FlatCAM {version} {beta} ({date}) - {arch}<br>"
+                        "<a href = \"http://flatcam.org/\">http://flatcam.org</a><br>"
                     ).format(version=version,
                     ).format(version=version,
                              beta=('BETA' if beta else ''),
                              beta=('BETA' if beta else ''),
                              date=version_date,
                              date=version_date,
                              arch=platform.architecture()[0])
                              arch=platform.architecture()[0])
                 )
                 )
-                title.setOpenExternalLinks(True)
+                description_label.setOpenExternalLinks(True)
 
 
-                layout2.addWidget(title, stretch=1)
+                programmers_label = QtWidgets.QLabel(
+                    _(
+                        "Juan Pablo Caram <BR>"
+                        "<BR>"
+                        "Denis Hayrullin<BR>"
+                        "Kamil Sopko<BR>"
+                        "Marius Stanciu<BR>"
+                        "Matthieu Berthomé<BR><Br>"
+                        "and many others found "
+                        "<a href = \"https://bitbucket.org/jpcgt/flatcam/pull-requests/?state=MERGED\">here.</a><BR>"
+                        "<BR>"
+                    )
+                )
+                programmers_label.setOpenExternalLinks(True)
 
 
+                translators_label = QtWidgets.QLabel(
+                    _(
+                        "Brasilian - Portuguese: \t\t Carlos Stein\n"
+                        "German: \t\t Marius Stanciu (Google-Translation)\n"
+                        "Romanian: \t\t Marius Stanciu\n"
+                        "Russian: \t\t Andrey Kultyapov <camellan@yandex.ru>\n"
+                        "Spanish: \t\t Marius Stanciu (Google-Translation)\n"
+                    )
+                )
+                translators_label.setOpenExternalLinks(True)
+
+                license_label = QtWidgets.QLabel(
+                    _(
+                        '(c) Copyright 2014 Juan Pablo Caram.\n\n'
+                        'Licensed under the MIT license:\n'
+                        'http://www.opensource.org/licenses/mit-license.php\n\n'
+                        'Permission is hereby granted, free of charge, to any person obtaining a copy\n'
+                        'of this software and associated documentation files (the "Software"), to deal\n'
+                        'in the Software without restriction, including without limitation the rights\n'
+                        'to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n'
+                        'copies of the Software, and to permit persons to whom the Software is\n'
+                       ' furnished to do so, subject to the following conditions:\n\n'
+                        
+                        'The above copyright notice and this permission notice shall be included in\n'
+                        'all copies or substantial portions of the Software.\n\n'
+                        
+                        'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n'
+                        'IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n'
+                        'FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n'
+                        'AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n'
+                        'LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n'
+                        'OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n'
+                        'THE SOFTWARE.'
+                    )
+                )
+                license_label.setOpenExternalLinks(True)
+
+                # layouts
+                layout1 = QtWidgets.QVBoxLayout()
+                layout1_1 = QtWidgets.QHBoxLayout()
+                layout1_2 = QtWidgets.QHBoxLayout()
+
+                layout2 = QtWidgets.QHBoxLayout()
                 layout3 = QtWidgets.QHBoxLayout()
                 layout3 = QtWidgets.QHBoxLayout()
+
+                self.setLayout(layout1)
+                layout1.addLayout(layout1_1)
+                layout1.addLayout(layout1_2)
+
+                layout1.addLayout(layout2)
                 layout1.addLayout(layout3)
                 layout1.addLayout(layout3)
+
+                layout1_1.addStretch()
+                layout1_1.addWidget(description_label)
+                layout1_2.addWidget(tab_widget)
+
+                self.splash_tab = QtWidgets.QWidget()
+                self.splash_tab.setObjectName("splash_about")
+                self.splash_tab_layout = QtWidgets.QHBoxLayout(self.splash_tab)
+                self.splash_tab_layout.setContentsMargins(2, 2, 2, 2)
+                tab_widget.addTab(self.splash_tab, _("Splash"))
+
+                self.programmmers_tab = QtWidgets.QWidget()
+                self.programmmers_tab.setObjectName("programmers_about")
+                self.programmmers_tab_layout = QtWidgets.QVBoxLayout(self.programmmers_tab)
+                self.programmmers_tab_layout.setContentsMargins(2, 2, 2, 2)
+                tab_widget.addTab(self.programmmers_tab, _("Programmers"))
+
+                self.translators_tab = QtWidgets.QWidget()
+                self.translators_tab.setObjectName("translators_about")
+                self.translators_tab_layout = QtWidgets.QVBoxLayout(self.translators_tab)
+                self.translators_tab_layout.setContentsMargins(2, 2, 2, 2)
+                tab_widget.addTab(self.translators_tab, _("Translators"))
+
+                self.license_tab = QtWidgets.QWidget()
+                self.license_tab.setObjectName("license_about")
+                self.license_tab_layout = QtWidgets.QVBoxLayout(self.license_tab)
+                self.license_tab_layout.setContentsMargins(2, 2, 2, 2)
+                tab_widget.addTab(self.license_tab, _("License"))
+
+                self.splash_tab_layout.addWidget(logo, stretch=0)
+                self.splash_tab_layout.addWidget(title, stretch=1)
+
+                self.programmmers_tab_layout.addWidget(programmers_label)
+                self.programmmers_tab_layout.addStretch()
+
+                self.translators_tab_layout.addWidget(translators_label)
+                self.translators_tab_layout.addStretch()
+
+                self.license_tab_layout.addWidget(license_label)
+                self.license_tab_layout.addStretch()
+
                 layout3.addStretch()
                 layout3.addStretch()
-                okbtn = QtWidgets.QPushButton(_("Close"))
-                layout3.addWidget(okbtn)
+                layout3.addWidget(closebtn)
 
 
-                okbtn.clicked.connect(self.accept)
+                closebtn.clicked.connect(self.accept)
 
 
         AboutDialog(self.ui).exec_()
         AboutDialog(self.ui).exec_()
 
 

+ 5 - 0
README.md

@@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing.
 
 
 =================================================
 =================================================
 
 
+12.09.2019
+
+- small changes in the TclCommands: MillDrills, MillSlots, DrillCNCJob: the new parameter for tolerance is now named: tooldia
+- cleaned up the 'About FlatCAM' window, started to give credits for the translation team
+
 11.09.2019
 11.09.2019
 
 
 - added the Gerber code as source for the panelized object in Panelize Tool
 - added the Gerber code as source for the panelized object in Panelize Tool

+ 2 - 2
flatcamGUI/FlatCAMGUI.py

@@ -397,14 +397,14 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
 
 
         # ## Help ###
         # ## Help ###
         self.menuhelp = self.menu.addMenu(_('&Help'))
         self.menuhelp = self.menu.addMenu(_('&Help'))
-        self.menuhelp_manual = self.menuhelp.addAction(QtGui.QIcon('share/globe16.png'), _('Help\tF1'))
+        self.menuhelp_manual = self.menuhelp.addAction(QtGui.QIcon('share/globe16.png'), _('Online Help\tF1'))
         self.menuhelp_home = self.menuhelp.addAction(QtGui.QIcon('share/home16.png'), _('FlatCAM.org'))
         self.menuhelp_home = self.menuhelp.addAction(QtGui.QIcon('share/home16.png'), _('FlatCAM.org'))
         self.menuhelp.addSeparator()
         self.menuhelp.addSeparator()
         self.menuhelp_shortcut_list = self.menuhelp.addAction(QtGui.QIcon('share/shortcuts24.png'),
         self.menuhelp_shortcut_list = self.menuhelp.addAction(QtGui.QIcon('share/shortcuts24.png'),
                                                               _('Shortcuts List\tF3'))
                                                               _('Shortcuts List\tF3'))
         self.menuhelp_videohelp = self.menuhelp.addAction(QtGui.QIcon('share/youtube32.png'), _('YouTube Channel\tF4')
         self.menuhelp_videohelp = self.menuhelp.addAction(QtGui.QIcon('share/youtube32.png'), _('YouTube Channel\tF4')
                                                           )
                                                           )
-        self.menuhelp_about = self.menuhelp.addAction(QtGui.QIcon('share/about32.png'), _('About'))
+        self.menuhelp_about = self.menuhelp.addAction(QtGui.QIcon('share/about32.png'), _('About FlatCAM'))
 
 
         # ## FlatCAM Editor menu ###
         # ## FlatCAM Editor menu ###
         self.geo_editor_menu = QtWidgets.QMenu(">Geo Editor<")
         self.geo_editor_menu = QtWidgets.QMenu(">Geo Editor<")

+ 9 - 7
tclCommands/TclCommandDrillcncjob.py

@@ -30,7 +30,7 @@ class TclCommandDrillcncjob(TclCommandSignaled):
         ('ppname_e', str),
         ('ppname_e', str),
         ('outname', str),
         ('outname', str),
         ('opt_type', str),
         ('opt_type', str),
-        ('tol', float)
+        ('diatol', float)
     ])
     ])
 
 
     # array of mandatory options for current Tcl command: required = {'name','outname'}
     # array of mandatory options for current Tcl command: required = {'name','outname'}
@@ -57,10 +57,11 @@ class TclCommandDrillcncjob(TclCommandSignaled):
             ('opt_type', 'Name of move optimization type. B by default for Basic OR-Tools, M for Metaheuristic OR-Tools'
             ('opt_type', 'Name of move optimization type. B by default for Basic OR-Tools, M for Metaheuristic OR-Tools'
                          'T from Travelling Salesman Algorithm. B and M works only for 64bit version of FlatCAM and '
                          'T from Travelling Salesman Algorithm. B and M works only for 64bit version of FlatCAM and '
                          'T works only for 32bit version of FlatCAM'),
                          'T works only for 32bit version of FlatCAM'),
-            ('tol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in drilled_dias will be judged to be the'
-                    'same as the ones in the tools from the Excellon object. E.g: if in drill_dias we have a diameter'
-                    'with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance tol = 5.0'
-                    'then the drills with the dia 1.05 in Excellon will be processed. Float number.')
+            ('diatol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in drilled_dias will be judged to be '
+                       'the same as the ones in the tools from the Excellon object. E.g: if in drill_dias we have a '
+                       'diameter with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance '
+                       'diatol = 5.0 then the drills with the dia = (0.95 ... 1.05) '
+                       'in Excellon will be processed. Float number.')
         ]),
         ]),
         'examples': ['drillcncjob test.TXT -drillz -1.5 -travelz 14 -feedrate 222 -feedrate_rapid 456 -spindlespeed 777'
         'examples': ['drillcncjob test.TXT -drillz -1.5 -travelz 14 -feedrate 222 -feedrate_rapid 456 -spindlespeed 777'
                      ' -toolchange True -toolchangez 33 -endz 22 -ppname_e default\n'
                      ' -toolchange True -toolchangez 33 -endz 22 -ppname_e default\n'
@@ -111,8 +112,8 @@ class TclCommandDrillcncjob(TclCommandSignaled):
                             req_dia_form = float('%.2f' % float(req_dia)) if units == 'MM' else \
                             req_dia_form = float('%.2f' % float(req_dia)) if units == 'MM' else \
                                 float('%.4f' % float(req_dia))
                                 float('%.4f' % float(req_dia))
 
 
-                            if 'tol' in args:
-                                tolerance = args['tol'] / 100
+                            if 'diatol' in args:
+                                tolerance = args['diatol'] / 100
 
 
                                 tolerance = 0.0 if tolerance < 0.0 else tolerance
                                 tolerance = 0.0 if tolerance < 0.0 else tolerance
                                 tolerance = 1.0 if tolerance > 1.0 else tolerance
                                 tolerance = 1.0 if tolerance > 1.0 else tolerance
@@ -134,6 +135,7 @@ class TclCommandDrillcncjob(TclCommandSignaled):
 
 
                     # no longer needed
                     # no longer needed
                     del args['drilled_dias']
                     del args['drilled_dias']
+                    del args['diatol']
 
 
                     # Split and put back. We are passing the whole dictionary later.
                     # Split and put back. We are passing the whole dictionary later.
                     # args['milled_dias'] = [x.strip() for x in args['tools'].split(",")]
                     # args['milled_dias'] = [x.strip() for x in args['tools'].split(",")]

+ 10 - 8
tclCommands/TclCommandMillDrills.py

@@ -25,7 +25,7 @@ class TclCommandMillDrills(TclCommandSignaled):
         ('outname', str),
         ('outname', str),
         ('tooldia', float),
         ('tooldia', float),
         ('use_threads', bool),
         ('use_threads', bool),
-        ('tol', float)
+        ('diatol', float)
     ])
     ])
 
 
     # array of mandatory options for current Tcl command: required = {'name','outname'}
     # array of mandatory options for current Tcl command: required = {'name','outname'}
@@ -40,12 +40,13 @@ class TclCommandMillDrills(TclCommandSignaled):
             ('tooldia', 'Diameter of the milling tool (example: 0.1).'),
             ('tooldia', 'Diameter of the milling tool (example: 0.1).'),
             ('outname', 'Name of object to create.'),
             ('outname', 'Name of object to create.'),
             ('use_thread', 'If to use multithreading: True or False.'),
             ('use_thread', 'If to use multithreading: True or False.'),
-            ('tol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in milled_dias will be judged to be the'
-                    'same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a diameter'
-                    'with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance tol = 5.0'
-                    'then the drills with the dia 1.05 in Excellon will be processed. Float number.')
+            ('diatol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in milled_dias will be judged to be '
+                       'the same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a '
+                       'diameter with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance '
+                       'diatol = 5.0 then the drills with the dia = (0.95 ... 1.05) '
+                       'in Excellon will be processed. Float number.')
         ]),
         ]),
-        'examples': ['milldrills mydrills']
+        'examples': ['milldrills mydrills', 'milld my_excellon.drl']
     }
     }
 
 
     def execute(self, args, unnamed_args):
     def execute(self, args, unnamed_args):
@@ -86,8 +87,8 @@ class TclCommandMillDrills(TclCommandSignaled):
                         req_dia_form = float('%.2f' % float(req_dia)) if units == 'MM' else \
                         req_dia_form = float('%.2f' % float(req_dia)) if units == 'MM' else \
                             float('%.4f' % float(req_dia))
                             float('%.4f' % float(req_dia))
 
 
-                        if 'tol' in args:
-                            tolerance = args['tol'] / 100
+                        if 'diatol' in args:
+                            tolerance = args['diatol'] / 100
 
 
                             tolerance = 0.0 if tolerance < 0.0 else tolerance
                             tolerance = 0.0 if tolerance < 0.0 else tolerance
                             tolerance = 1.0 if tolerance > 1.0 else tolerance
                             tolerance = 1.0 if tolerance > 1.0 else tolerance
@@ -107,6 +108,7 @@ class TclCommandMillDrills(TclCommandSignaled):
 
 
                 # no longer needed
                 # no longer needed
                 del args['milled_dias']
                 del args['milled_dias']
+                del args['diatol']
 
 
                 # Split and put back. We are passing the whole dictionary later.
                 # Split and put back. We are passing the whole dictionary later.
                 # args['milled_dias'] = [x.strip() for x in args['tools'].split(",")]
                 # args['milled_dias'] = [x.strip() for x in args['tools'].split(",")]

+ 10 - 8
tclCommands/TclCommandMillSlots.py

@@ -25,7 +25,7 @@ class TclCommandMillSlots(TclCommandSignaled):
         ('outname', str),
         ('outname', str),
         ('tooldia', float),
         ('tooldia', float),
         ('use_threads', bool),
         ('use_threads', bool),
-        ('tol', float)
+        ('diatol', float)
     ])
     ])
 
 
     # array of mandatory options for current Tcl command: required = {'name','outname'}
     # array of mandatory options for current Tcl command: required = {'name','outname'}
@@ -40,12 +40,13 @@ class TclCommandMillSlots(TclCommandSignaled):
             ('tooldia', 'Diameter of the milling tool (example: 0.1).'),
             ('tooldia', 'Diameter of the milling tool (example: 0.1).'),
             ('outname', 'Name of object to create.'),
             ('outname', 'Name of object to create.'),
             ('use_thread', 'If to use multithreading: True or False.'),
             ('use_thread', 'If to use multithreading: True or False.'),
-            ('tol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in milled_dias will be judged to be the'
-                    'same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a diameter'
-                    'with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance tol = 5.0'
-                    'then the slots with the dia 1.05 in Excellon will be processed. Float number.')
+            ('diatol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in milled_dias will be judged to be '
+                       'the same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a '
+                       'diameter with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance '
+                       'diatol = 5.0 then the slots with the dia = (0.95 ... 1.05) '
+                       'in Excellon will be processed. Float number.')
         ]),
         ]),
-        'examples': ['millholes mydrills']
+        'examples': ['millslots mydrills', 'mills my_excellon.drl']
     }
     }
 
 
     def execute(self, args, unnamed_args):
     def execute(self, args, unnamed_args):
@@ -85,8 +86,8 @@ class TclCommandMillSlots(TclCommandSignaled):
                         req_dia_form = float('%.2f' % float(req_dia)) if units == 'MM' else \
                         req_dia_form = float('%.2f' % float(req_dia)) if units == 'MM' else \
                             float('%.4f' % float(req_dia))
                             float('%.4f' % float(req_dia))
 
 
-                        if 'tol' in args:
-                            tolerance = args['tol'] / 100
+                        if 'diatol' in args:
+                            tolerance = args['diatol'] / 100
 
 
                             tolerance = 0.0 if tolerance < 0.0 else tolerance
                             tolerance = 0.0 if tolerance < 0.0 else tolerance
                             tolerance = 1.0 if tolerance > 1.0 else tolerance
                             tolerance = 1.0 if tolerance > 1.0 else tolerance
@@ -106,6 +107,7 @@ class TclCommandMillSlots(TclCommandSignaled):
 
 
                 # no longer needed
                 # no longer needed
                 del args['milled_dias']
                 del args['milled_dias']
+                del args['diatol']
 
 
                 # Split and put back. We are passing the whole dictionary later.
                 # Split and put back. We are passing the whole dictionary later.
                 # args['milled_dias'] = [x.strip() for x in args['tools'].split(",")]
                 # args['milled_dias'] = [x.strip() for x in args['tools'].split(",")]