- 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
This commit is contained in:
154
FlatCAMApp.py
154
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>"
|
"<BR>"
|
||||||
"by (c)Juan Pablo Caram <BR>"
|
"<B>Development</B> "
|
||||||
"<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>"
|
|
||||||
"<B>Development</B> is done "
|
|
||||||
"<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()
|
||||||
layout1.addLayout(layout3)
|
|
||||||
layout3.addStretch()
|
|
||||||
okbtn = QtWidgets.QPushButton(_("Close"))
|
|
||||||
layout3.addWidget(okbtn)
|
|
||||||
|
|
||||||
okbtn.clicked.connect(self.accept)
|
self.setLayout(layout1)
|
||||||
|
layout1.addLayout(layout1_1)
|
||||||
|
layout1.addLayout(layout1_2)
|
||||||
|
|
||||||
|
layout1.addLayout(layout2)
|
||||||
|
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.addWidget(closebtn)
|
||||||
|
|
||||||
|
closebtn.clicked.connect(self.accept)
|
||||||
|
|
||||||
AboutDialog(self.ui).exec_()
|
AboutDialog(self.ui).exec_()
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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<")
|
||||||
|
|||||||
@@ -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'
|
('diatol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in drilled_dias will be judged to be '
|
||||||
'same as the ones in the tools from the Excellon object. E.g: if in drill_dias we have a diameter'
|
'the same as the ones in the tools from the Excellon object. E.g: if in drill_dias we have a '
|
||||||
'with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance tol = 5.0'
|
'diameter with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance '
|
||||||
'then the drills with the dia 1.05 in Excellon will be processed. Float number.')
|
'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:
|
if 'diatol' in args:
|
||||||
tolerance = args['tol'] / 100
|
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(",")]
|
||||||
|
|||||||
@@ -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'
|
('diatol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in milled_dias will be judged to be '
|
||||||
'same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a diameter'
|
'the same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a '
|
||||||
'with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance tol = 5.0'
|
'diameter with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance '
|
||||||
'then the drills with the dia 1.05 in Excellon will be processed. Float number.')
|
'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:
|
if 'diatol' in args:
|
||||||
tolerance = args['tol'] / 100
|
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(",")]
|
||||||
|
|||||||
@@ -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'
|
('diatol', 'Tolerance. Percentange (0.0 ... 100.0) within which dias in milled_dias will be judged to be '
|
||||||
'same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a diameter'
|
'the same as the ones in the tools from the Excellon object. E.g: if in milled_dias we have a '
|
||||||
'with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance tol = 5.0'
|
'diameter with value 1.0, in the Excellon we have a tool with dia = 1.05 and we set a tolerance '
|
||||||
'then the slots with the dia 1.05 in Excellon will be processed. Float number.')
|
'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:
|
if 'diatol' in args:
|
||||||
tolerance = args['tol'] / 100
|
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(",")]
|
||||||
|
|||||||
Reference in New Issue
Block a user