- PEP8 correction in flatcamTools
- merged the Brazilian-portuguese language from a pull request made by Carlos Stein
This commit is contained in:
parent
d34a17a81d
commit
e6153298bc
@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing.
|
||||
|
||||
=================================================
|
||||
|
||||
16.07.2019
|
||||
|
||||
- PEP8 correction in flatcamTools
|
||||
- merged the Brazilian-portuguese language from a pull request made by Carlos Stein
|
||||
|
||||
15.07.2019
|
||||
|
||||
- some PEP8 corrections
|
||||
|
@ -207,8 +207,8 @@ class ToolPDF(FlatCAMTool):
|
||||
while True:
|
||||
self.parsing_promises.remove(short_name)
|
||||
time.sleep(0.1)
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
log.debug("ToolPDF.open_pdf() --> %s" % str(e))
|
||||
self.app.inform.emit(_("[success] Opened: %s") % filename)
|
||||
|
||||
def layer_rendering_as_excellon(self, filename, ap_dict, layer_nr):
|
||||
@ -264,8 +264,8 @@ class ToolPDF(FlatCAMTool):
|
||||
|
||||
with self.app.proc_container.new(_("Rendering PDF layer #%d ...") % int(layer_nr)):
|
||||
|
||||
ret = self.app.new_object("excellon", outname, obj_init, autoselected=False)
|
||||
if ret == 'fail':
|
||||
ret_val = self.app.new_object("excellon", outname, obj_init, autoselected=False)
|
||||
if ret_val == 'fail':
|
||||
self.app.inform.emit(_('[ERROR_NOTCL] Open PDF file failed.'))
|
||||
return
|
||||
# Register recent file
|
||||
@ -300,7 +300,7 @@ class ToolPDF(FlatCAMTool):
|
||||
global_clear_geo.append(geo_el['clear'])
|
||||
|
||||
if global_clear_geo:
|
||||
solid= []
|
||||
solid = []
|
||||
for apid in grb_obj.apertures:
|
||||
if 'geometry' in grb_obj.apertures[apid]:
|
||||
for elem in grb_obj.apertures[apid]['geometry']:
|
||||
@ -360,7 +360,7 @@ class ToolPDF(FlatCAMTool):
|
||||
|
||||
try:
|
||||
self.check_thread.stop()
|
||||
except:
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
self.check_thread.setInterval(check_period)
|
||||
@ -458,7 +458,7 @@ class ToolPDF(FlatCAMTool):
|
||||
|
||||
# on stroke color change we create a new apertures dictionary and store the old one in a storage from where
|
||||
# it will be transformed into Gerber object
|
||||
old_color = [None, None ,None]
|
||||
old_color = [None, None, None]
|
||||
|
||||
# signal that we have clear geometry and the geometry will be added to a special layer_nr = 0
|
||||
flag_clear_geo = False
|
||||
@ -681,10 +681,8 @@ class ToolPDF(FlatCAMTool):
|
||||
current_subpath = 'rectangle'
|
||||
x = (float(match.group(1)) + offset_geo[0]) * self.point_to_unit_factor * scale_geo[0]
|
||||
y = (float(match.group(2)) + offset_geo[1]) * self.point_to_unit_factor * scale_geo[1]
|
||||
width = (float(match.group(3)) + offset_geo[0]) * \
|
||||
self.point_to_unit_factor * scale_geo[0]
|
||||
height = (float(match.group(4)) + offset_geo[1]) * \
|
||||
self.point_to_unit_factor * scale_geo[1]
|
||||
width = (float(match.group(3)) + offset_geo[0]) * self.point_to_unit_factor * scale_geo[0]
|
||||
height = (float(match.group(4)) + offset_geo[1]) * self.point_to_unit_factor * scale_geo[1]
|
||||
pt1 = (x, y)
|
||||
pt2 = (x+width, y)
|
||||
pt3 = (x+width, y+height)
|
||||
@ -758,7 +756,8 @@ class ToolPDF(FlatCAMTool):
|
||||
for subp in path['lines']:
|
||||
geo = copy(subp)
|
||||
try:
|
||||
geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles)
|
||||
geo = LineString(geo).buffer((float(applied_size) / 2),
|
||||
resolution=self.step_per_circles)
|
||||
path_geo.append(geo)
|
||||
except ValueError:
|
||||
pass
|
||||
|
@ -7,14 +7,14 @@
|
||||
# ########################################################## ##
|
||||
|
||||
from FlatCAMTool import FlatCAMTool
|
||||
from copy import copy,deepcopy
|
||||
from copy import copy, deepcopy
|
||||
from ObjectCollection import *
|
||||
|
||||
import gettext
|
||||
import FlatCAMTranslation as fcTranslate
|
||||
import builtins
|
||||
|
||||
fcTranslate.apply_language('strings')
|
||||
import builtins
|
||||
if '_' not in builtins.__dict__:
|
||||
_ = gettext.gettext
|
||||
|
||||
@ -65,7 +65,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
form_layout.addRow(self.object_label, self.object_combo)
|
||||
form_layout.addRow(e_lab_0)
|
||||
|
||||
#### Tools ## ##
|
||||
# ### Tools ## ##
|
||||
self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
|
||||
self.tools_table_label.setToolTip(
|
||||
_("Tools pool from which the algorithm\n"
|
||||
@ -110,7 +110,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
self.empty_label = QtWidgets.QLabel('')
|
||||
self.tools_box.addWidget(self.empty_label)
|
||||
|
||||
#### Add a new Tool ## ##
|
||||
# ### Add a new Tool ## ##
|
||||
hlay = QtWidgets.QHBoxLayout()
|
||||
self.tools_box.addLayout(hlay)
|
||||
|
||||
@ -148,7 +148,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
|
||||
grid2.addWidget(self.addtool_btn, 0, 0)
|
||||
# grid2.addWidget(self.copytool_btn, 0, 1)
|
||||
grid2.addWidget(self.deltool_btn, 0,2)
|
||||
grid2.addWidget(self.deltool_btn, 0, 2)
|
||||
|
||||
self.empty_label_0 = QtWidgets.QLabel('')
|
||||
self.tools_box.addWidget(self.empty_label_0)
|
||||
@ -314,7 +314,6 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
self.generate_paint_button.clicked.connect(self.on_paint_button_click)
|
||||
self.selectmethod_combo.activated_custom.connect(self.on_radio_selection)
|
||||
|
||||
|
||||
def install(self, icon=None, separator=None, **kwargs):
|
||||
FlatCAMTool.install(self, icon, separator, shortcut='ALT+P', **kwargs)
|
||||
|
||||
@ -522,8 +521,8 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
|
||||
try:
|
||||
self.tools_table.itemChanged.disconnect()
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
log.debug("ToolPaint.on_tool_add() --> %s" % str(e))
|
||||
|
||||
if dia:
|
||||
tool_dia = dia
|
||||
@ -586,10 +585,12 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
self.build_ui()
|
||||
|
||||
def on_tool_edit(self):
|
||||
old_tool_dia = ''
|
||||
|
||||
try:
|
||||
self.tools_table.itemChanged.disconnect()
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
log.debug("ToolPaint.on_tool_edit() --> %s" % str(e))
|
||||
|
||||
tool_dias = []
|
||||
for k, v in self.paint_tools.items():
|
||||
@ -624,7 +625,8 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
break
|
||||
restore_dia_item = self.tools_table.item(row, 1)
|
||||
restore_dia_item.setText(str(old_tool_dia))
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table."))
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. "
|
||||
"New diameter value is already in the Tool Table."))
|
||||
self.build_ui()
|
||||
|
||||
# def on_tool_copy(self, all=None):
|
||||
@ -685,7 +687,8 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
def on_tool_delete(self, rows_to_delete=None, all=None):
|
||||
try:
|
||||
self.tools_table.itemChanged.disconnect()
|
||||
except:
|
||||
except Exception as e:
|
||||
log.debug("ToolPaint.on_tool_delete() --> %s" % str(e))
|
||||
pass
|
||||
|
||||
deleted_tools_list = []
|
||||
@ -760,7 +763,8 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
# Get source object.
|
||||
try:
|
||||
self.paint_obj = self.app.collection.get_by_name(str(self.obj_name))
|
||||
except:
|
||||
except Exception as e:
|
||||
log.debug("ToolPaint.on_paint_button_click() --> %s" % str(e))
|
||||
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.obj_name)
|
||||
return
|
||||
|
||||
@ -774,7 +778,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
self.app.inform.emit(_("[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."))
|
||||
return 'Fail'
|
||||
|
||||
o_name = '%s_multitool_paint' % (self.obj_name)
|
||||
o_name = '%s_multitool_paint' % self.obj_name
|
||||
|
||||
if select_method == "all":
|
||||
self.paint_poly_all(self.paint_obj,
|
||||
@ -811,15 +815,13 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
self.app.plotcanvas.vis_disconnect('mouse_press', self.app.on_mouse_click_over_plot)
|
||||
self.app.plotcanvas.vis_connect('mouse_press', doit)
|
||||
|
||||
def paint_poly(self, obj, inside_pt, tooldia, overlap,
|
||||
outname=None, connect=True,
|
||||
contour=True):
|
||||
def paint_poly(self, obj, inside_pt, tooldia, overlap, outname=None, connect=True, contour=True):
|
||||
"""
|
||||
Paints a polygon selected by clicking on its interior.
|
||||
|
||||
Note:
|
||||
* The margin is taken directly from the form.
|
||||
|
||||
:param obj: painted object
|
||||
:param inside_pt: [x, y]
|
||||
:param tooldia: Diameter of the painting tool
|
||||
:param overlap: Overlap of the tool between passes.
|
||||
@ -864,7 +866,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
def paint_p(polyg):
|
||||
if paint_method == "seed":
|
||||
# Type(cp) == FlatCAMRTreeStorage | None
|
||||
cp = self.clear_polygon2(polyg,
|
||||
cpoly = self.clear_polygon2(polyg,
|
||||
tooldia=tooldia,
|
||||
steps_per_circle=self.app.defaults["geometry_circle_steps"],
|
||||
overlap=overlap,
|
||||
@ -873,7 +875,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
|
||||
elif paint_method == "lines":
|
||||
# Type(cp) == FlatCAMRTreeStorage | None
|
||||
cp = self.clear_polygon3(polyg,
|
||||
cpoly = self.clear_polygon3(polyg,
|
||||
tooldia=tooldia,
|
||||
steps_per_circle=self.app.defaults["geometry_circle_steps"],
|
||||
overlap=overlap,
|
||||
@ -882,16 +884,16 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
|
||||
else:
|
||||
# Type(cp) == FlatCAMRTreeStorage | None
|
||||
cp = self.clear_polygon(polyg,
|
||||
cpoly = self.clear_polygon(polyg,
|
||||
tooldia=tooldia,
|
||||
steps_per_circle=self.app.defaults["geometry_circle_steps"],
|
||||
overlap=overlap,
|
||||
contour=contour,
|
||||
connect=connect)
|
||||
|
||||
if cp is not None:
|
||||
geo_obj.solid_geometry += list(cp.get_objects())
|
||||
return cp
|
||||
if cpoly is not None:
|
||||
geo_obj.solid_geometry += list(cpoly.get_objects())
|
||||
return cpoly
|
||||
else:
|
||||
self.app.inform.emit(_('[ERROR_NOTCL] Geometry could not be painted completely'))
|
||||
return None
|
||||
@ -975,12 +977,11 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
# Background
|
||||
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
|
||||
|
||||
def paint_poly_all(self, obj, overlap, outname=None,
|
||||
connect=True, contour=True):
|
||||
def paint_poly_all(self, obj, overlap, outname=None, connect=True, contour=True):
|
||||
"""
|
||||
Paints all polygons in this object.
|
||||
|
||||
:param tooldia:
|
||||
:param obj: painted object
|
||||
:param overlap:
|
||||
:param outname:
|
||||
:param connect: Connect lines to avoid tool lifts.
|
||||
@ -1055,6 +1056,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
def gen_paintarea(geo_obj, app_obj):
|
||||
assert isinstance(geo_obj, FlatCAMGeometry), \
|
||||
"Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
|
||||
tool_dia = None
|
||||
|
||||
sorted_tools = []
|
||||
for row in range(self.tools_table.rowCount()):
|
||||
@ -1083,7 +1085,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
|
||||
for geo in recurse(obj.solid_geometry):
|
||||
try:
|
||||
#Polygons are the only really paintable geometries, lines in theory have no area to be painted
|
||||
# Polygons are the only really paintable geometries, lines in theory have no area to be painted
|
||||
if not isinstance(geo, Polygon):
|
||||
continue
|
||||
poly_buf = geo.buffer(-paint_margin)
|
||||
@ -1160,6 +1162,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
assert isinstance(geo_obj, FlatCAMGeometry), \
|
||||
"Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
|
||||
|
||||
tool_dia = None
|
||||
sorted_tools = []
|
||||
for row in range(self.tools_table.rowCount()):
|
||||
sorted_tools.append(float(self.tools_table.item(row, 1).text()))
|
||||
@ -1184,6 +1187,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
||||
try:
|
||||
geo = Polygon(geo) if not isinstance(geo, Polygon) else geo
|
||||
poly_buf = geo.buffer(-paint_margin)
|
||||
cp = None
|
||||
|
||||
if paint_method == "standard":
|
||||
# Type(cp) == FlatCAMRTreeStorage | None
|
||||
|
@ -18,9 +18,9 @@ from io import StringIO
|
||||
|
||||
import gettext
|
||||
import FlatCAMTranslation as fcTranslate
|
||||
import builtins
|
||||
|
||||
fcTranslate.apply_language('strings')
|
||||
import builtins
|
||||
if '_' not in builtins.__dict__:
|
||||
_ = gettext.gettext
|
||||
|
||||
@ -56,9 +56,8 @@ class PcbWizard(FlatCAMTool):
|
||||
|
||||
self.excellon_label = QtWidgets.QLabel(_("Excellon file:"))
|
||||
self.excellon_label.setToolTip(
|
||||
_( "Load the Excellon file.\n"
|
||||
_("Load the Excellon file.\n"
|
||||
"Usually it has a .DRL extension")
|
||||
|
||||
)
|
||||
self.excellon_brn = FCButton(_("Open"))
|
||||
form_layout.addRow(self.excellon_label, self.excellon_brn)
|
||||
@ -66,7 +65,6 @@ class PcbWizard(FlatCAMTool):
|
||||
self.inf_label = QtWidgets.QLabel(_("INF file:"))
|
||||
self.inf_label.setToolTip(
|
||||
_("Load the INF file.")
|
||||
|
||||
)
|
||||
self.inf_btn = FCButton(_("Open"))
|
||||
form_layout.addRow(self.inf_label, self.inf_btn)
|
||||
@ -96,7 +94,7 @@ class PcbWizard(FlatCAMTool):
|
||||
self.int_entry.set_range(1, 10)
|
||||
self.int_label = QtWidgets.QLabel(_("Int. digits:"))
|
||||
self.int_label.setToolTip(
|
||||
_( "The number of digits for the integral part of the coordinates.")
|
||||
_("The number of digits for the integral part of the coordinates.")
|
||||
)
|
||||
form_layout1.addRow(self.int_label, self.int_entry)
|
||||
|
||||
@ -283,18 +281,17 @@ class PcbWizard(FlatCAMTool):
|
||||
"""
|
||||
self.app.log.debug("on_load_excellon_click()")
|
||||
|
||||
filter = "Excellon Files(*.DRL *.DRD *.TXT);;All Files (*.*)"
|
||||
_filter = "Excellon Files(*.DRL *.DRD *.TXT);;All Files (*.*)"
|
||||
try:
|
||||
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"),
|
||||
directory=self.app.get_last_folder(),
|
||||
filter=filter)
|
||||
filter=_filter)
|
||||
except TypeError:
|
||||
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"),
|
||||
filter=filter)
|
||||
filter=_filter)
|
||||
|
||||
filename = str(filename)
|
||||
|
||||
|
||||
if filename == "":
|
||||
self.app.inform.emit(_("Open cancelled."))
|
||||
else:
|
||||
@ -307,14 +304,14 @@ class PcbWizard(FlatCAMTool):
|
||||
"""
|
||||
self.app.log.debug("on_load_inf_click()")
|
||||
|
||||
filter = "INF Files(*.INF);;All Files (*.*)"
|
||||
_filter = "INF Files(*.INF);;All Files (*.*)"
|
||||
try:
|
||||
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"),
|
||||
directory=self.app.get_last_folder(),
|
||||
filter=filter)
|
||||
filter=_filter)
|
||||
except TypeError:
|
||||
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"),
|
||||
filter=filter)
|
||||
filter=_filter)
|
||||
|
||||
filename = str(filename)
|
||||
|
||||
@ -338,7 +335,7 @@ class PcbWizard(FlatCAMTool):
|
||||
|
||||
match = tool_re.search(eline)
|
||||
if match:
|
||||
tool =int( match.group(1))
|
||||
tool = int(match.group(1))
|
||||
dia = float(match.group(2))
|
||||
# if dia < 0.1:
|
||||
# # most likely the file is in INCH
|
||||
@ -425,7 +422,8 @@ class PcbWizard(FlatCAMTool):
|
||||
app_obj.log.debug("Could not import Excellon object.")
|
||||
app_obj.progress.emit(0)
|
||||
return "fail"
|
||||
except:
|
||||
except Exception as e:
|
||||
app_obj.log.debug("PcbWizard.on_import_excellon().obj_init() %s" % str(e))
|
||||
msg = _("[ERROR_NOTCL] An internal error has occurred. See shell.\n")
|
||||
msg += app_obj.traceback.format_exc()
|
||||
app_obj.inform.emit(msg)
|
||||
@ -449,8 +447,8 @@ class PcbWizard(FlatCAMTool):
|
||||
# Object name
|
||||
name = self.outname
|
||||
|
||||
ret = self.app.new_object("excellon", name, obj_init, autoselected=False)
|
||||
if ret == 'fail':
|
||||
ret_val = self.app.new_object("excellon", name, obj_init, autoselected=False)
|
||||
if ret_val == 'fail':
|
||||
self.app.inform.emit(_('[ERROR_NOTCL] Import Excellon file failed.'))
|
||||
return
|
||||
|
||||
|
@ -13,9 +13,9 @@ from FlatCAMObj import *
|
||||
|
||||
import gettext
|
||||
import FlatCAMTranslation as fcTranslate
|
||||
import builtins
|
||||
|
||||
fcTranslate.apply_language('strings')
|
||||
import builtins
|
||||
if '_' not in builtins.__dict__:
|
||||
_ = gettext.gettext
|
||||
|
||||
@ -62,7 +62,7 @@ class Properties(FlatCAMTool):
|
||||
self.treeWidget.setSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Expanding)
|
||||
|
||||
self.vlay.addWidget(self.treeWidget)
|
||||
self.vlay.setStretch(0,0)
|
||||
self.vlay.setStretch(0, 0)
|
||||
|
||||
def run(self, toggle=True):
|
||||
self.app.report_usage("ToolProperties()")
|
||||
@ -130,9 +130,14 @@ class Properties(FlatCAMTool):
|
||||
|
||||
self.addChild(obj_type, ['Object Type:', ('%s' % (obj.kind.capitalize()))], True)
|
||||
try:
|
||||
self.addChild(obj_type, ['Geo Type:', ('%s' % ({False: "Single-Geo", True: "Multi-Geo"}[obj.multigeo]))], True)
|
||||
self.addChild(obj_type,
|
||||
['Geo Type:',
|
||||
('%s' % ({False: "Single-Geo", True: "Multi-Geo"}[obj.multigeo]))
|
||||
],
|
||||
True
|
||||
)
|
||||
except Exception as e:
|
||||
pass
|
||||
log.debug("Properties.addItems() --> %s" % str(e))
|
||||
|
||||
self.addChild(obj_name, [obj.options['name']])
|
||||
|
||||
@ -163,7 +168,10 @@ class Properties(FlatCAMTool):
|
||||
'in': 'Inch',
|
||||
'mm': 'Metric'
|
||||
}
|
||||
[str(self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().lower())]], True)
|
||||
[str(self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().lower())]
|
||||
],
|
||||
True
|
||||
)
|
||||
|
||||
for option in obj.options:
|
||||
if option is 'name':
|
||||
|
@ -15,9 +15,9 @@ import html
|
||||
|
||||
import gettext
|
||||
import FlatCAMTranslation as fcTranslate
|
||||
import builtins
|
||||
|
||||
fcTranslate.apply_language('strings')
|
||||
import builtins
|
||||
if '_' not in builtins.__dict__:
|
||||
_ = gettext.gettext
|
||||
|
||||
|
@ -26,9 +26,9 @@ from io import StringIO
|
||||
|
||||
import gettext
|
||||
import FlatCAMTranslation as fcTranslate
|
||||
import builtins
|
||||
|
||||
fcTranslate.apply_language('strings')
|
||||
import builtins
|
||||
if '_' not in builtins.__dict__:
|
||||
_ = gettext.gettext
|
||||
|
||||
@ -66,7 +66,7 @@ class SolderPaste(FlatCAMTool):
|
||||
)
|
||||
obj_form_layout.addRow(self.object_label, self.obj_combo)
|
||||
|
||||
#### Tools ## ##
|
||||
# ### Tools ## ##
|
||||
self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
|
||||
self.tools_table_label.setToolTip(
|
||||
_("Tools pool from which the algorithm\n"
|
||||
@ -91,10 +91,10 @@ class SolderPaste(FlatCAMTool):
|
||||
"with solder paste, the app will issue a warning message box.")
|
||||
)
|
||||
self.tools_table.horizontalHeaderItem(1).setToolTip(
|
||||
_( "Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
|
||||
_("Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
|
||||
"is the width of the solder paste dispensed."))
|
||||
|
||||
#### Add a new Tool ## ##
|
||||
# ### Add a new Tool ## ##
|
||||
hlay_tools = QtWidgets.QHBoxLayout()
|
||||
self.layout.addLayout(hlay_tools)
|
||||
|
||||
@ -120,7 +120,7 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
self.deltool_btn = QtWidgets.QPushButton(_('Delete'))
|
||||
self.deltool_btn.setToolTip(
|
||||
_( "Delete a selection of tools in the Tool Table\n"
|
||||
_("Delete a selection of tools in the Tool Table\n"
|
||||
"by first selecting a row(s) in the Tool Table.")
|
||||
)
|
||||
|
||||
@ -174,7 +174,6 @@ class SolderPaste(FlatCAMTool):
|
||||
self.z_dispense_label = QtWidgets.QLabel(_("Z Dispense:"))
|
||||
self.z_dispense_label.setToolTip(
|
||||
_("The height (Z) when doing solder paste dispensing.")
|
||||
|
||||
)
|
||||
self.gcode_form_layout.addRow(self.z_dispense_label, self.z_dispense_entry)
|
||||
|
||||
@ -190,7 +189,7 @@ class SolderPaste(FlatCAMTool):
|
||||
self.z_travel_entry = FCEntry()
|
||||
self.z_travel_label = QtWidgets.QLabel(_("Z Travel:"))
|
||||
self.z_travel_label.setToolTip(
|
||||
_( "The height (Z) for travel between pads\n"
|
||||
_("The height (Z) for travel between pads\n"
|
||||
"(without dispensing solder paste).")
|
||||
)
|
||||
self.gcode_form_layout.addRow(self.z_travel_label, self.z_travel_entry)
|
||||
@ -199,7 +198,7 @@ class SolderPaste(FlatCAMTool):
|
||||
self.z_toolchange_entry = FCEntry()
|
||||
self.z_toolchange_label = QtWidgets.QLabel(_("Z Toolchange:"))
|
||||
self.z_toolchange_label.setToolTip(
|
||||
_( "The height (Z) for tool (nozzle) change.")
|
||||
_("The height (Z) for tool (nozzle) change.")
|
||||
)
|
||||
self.gcode_form_layout.addRow(self.z_toolchange_label, self.z_toolchange_entry)
|
||||
|
||||
@ -216,7 +215,7 @@ class SolderPaste(FlatCAMTool):
|
||||
self.frxy_entry = FCEntry()
|
||||
self.frxy_label = QtWidgets.QLabel(_("Feedrate X-Y:"))
|
||||
self.frxy_label.setToolTip(
|
||||
_( "Feedrate (speed) while moving on the X-Y plane.")
|
||||
_("Feedrate (speed) while moving on the X-Y plane.")
|
||||
)
|
||||
self.gcode_form_layout.addRow(self.frxy_label, self.frxy_entry)
|
||||
|
||||
@ -233,7 +232,7 @@ class SolderPaste(FlatCAMTool):
|
||||
self.frz_dispense_entry = FCEntry()
|
||||
self.frz_dispense_label = QtWidgets.QLabel(_("Feedrate Z Dispense:"))
|
||||
self.frz_dispense_label.setToolTip(
|
||||
_( "Feedrate (speed) while moving up vertically\n"
|
||||
_("Feedrate (speed) while moving up vertically\n"
|
||||
" to Dispense position (on Z plane).")
|
||||
)
|
||||
self.gcode_form_layout.addRow(self.frz_dispense_label, self.frz_dispense_entry)
|
||||
@ -242,7 +241,7 @@ class SolderPaste(FlatCAMTool):
|
||||
self.speedfwd_entry = FCEntry()
|
||||
self.speedfwd_label = QtWidgets.QLabel(_("Spindle Speed FWD:"))
|
||||
self.speedfwd_label.setToolTip(
|
||||
_( "The dispenser speed while pushing solder paste\n"
|
||||
_("The dispenser speed while pushing solder paste\n"
|
||||
"through the dispenser nozzle.")
|
||||
)
|
||||
self.gcode_form_layout.addRow(self.speedfwd_label, self.speedfwd_entry)
|
||||
@ -259,7 +258,7 @@ class SolderPaste(FlatCAMTool):
|
||||
self.speedrev_entry = FCEntry()
|
||||
self.speedrev_label = QtWidgets.QLabel(_("Spindle Speed REV:"))
|
||||
self.speedrev_label.setToolTip(
|
||||
_( "The dispenser speed while retracting solder paste\n"
|
||||
_("The dispenser speed while retracting solder paste\n"
|
||||
"through the dispenser nozzle.")
|
||||
)
|
||||
self.gcode_form_layout.addRow(self.speedrev_label, self.speedrev_entry)
|
||||
@ -289,7 +288,7 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
self.solder_gcode_btn = QtWidgets.QPushButton(_("Generate GCode"))
|
||||
self.solder_gcode_btn.setToolTip(
|
||||
_( "Generate GCode for Solder Paste dispensing\n"
|
||||
_("Generate GCode for Solder Paste dispensing\n"
|
||||
"on PCB pads.")
|
||||
)
|
||||
|
||||
@ -300,7 +299,6 @@ class SolderPaste(FlatCAMTool):
|
||||
self.generation_box.setContentsMargins(0, 0, 0, 0)
|
||||
self.generation_frame.setLayout(self.generation_box)
|
||||
|
||||
|
||||
# ## Buttons
|
||||
grid2 = QtWidgets.QGridLayout()
|
||||
self.generation_box.addLayout(grid2)
|
||||
@ -325,7 +323,7 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
self.geo_object_label = QtWidgets.QLabel(_("Geo Result:"))
|
||||
self.geo_object_label.setToolTip(
|
||||
_( "Geometry Solder Paste object.\n"
|
||||
_("Geometry Solder Paste object.\n"
|
||||
"The name of the object has to end in:\n"
|
||||
"'_solderpaste' as a protection.")
|
||||
)
|
||||
@ -336,7 +334,7 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
step3_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 3:'))
|
||||
step3_lbl.setToolTip(
|
||||
_( "Third step is to select a solder paste dispensing geometry,\n"
|
||||
_("Third step is to select a solder paste dispensing geometry,\n"
|
||||
"and then generate a CNCJob object.\n\n"
|
||||
"REMEMBER: if you want to create a CNCJob with new parameters,\n"
|
||||
"first you need to generate a geometry with those new params,\n"
|
||||
@ -358,7 +356,7 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
self.cnc_object_label = QtWidgets.QLabel(_("CNC Result:"))
|
||||
self.cnc_object_label.setToolTip(
|
||||
_( "CNCJob Solder paste object.\n"
|
||||
_("CNCJob Solder paste object.\n"
|
||||
"In order to enable the GCode save section,\n"
|
||||
"the name of the object has to end in:\n"
|
||||
"'_solderpaste' as a protection.")
|
||||
@ -376,13 +374,13 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
self.solder_gcode_save_btn = QtWidgets.QPushButton(_("Save GCode"))
|
||||
self.solder_gcode_save_btn.setToolTip(
|
||||
_( "Save the generated GCode for Solder Paste dispensing\n"
|
||||
_("Save the generated GCode for Solder Paste dispensing\n"
|
||||
"on PCB pads, to a file.")
|
||||
)
|
||||
|
||||
step4_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 4:'))
|
||||
step4_lbl.setToolTip(
|
||||
_( "Fourth step (and last) is to select a CNCJob made from \n"
|
||||
_("Fourth step (and last) is to select a CNCJob made from \n"
|
||||
"a solder paste dispensing geometry, and then view/save it's GCode.")
|
||||
)
|
||||
|
||||
@ -402,6 +400,7 @@ class SolderPaste(FlatCAMTool):
|
||||
self.form_fields = {}
|
||||
|
||||
self.units = ''
|
||||
self.name = ""
|
||||
|
||||
# this will be used in the combobox context menu, for delete entry
|
||||
self.obj_to_be_deleted_name = ''
|
||||
@ -607,7 +606,6 @@ class SolderPaste(FlatCAMTool):
|
||||
if current_row < 0:
|
||||
current_row = 0
|
||||
|
||||
|
||||
# populate the form with the data from the tool associated with the row parameter
|
||||
try:
|
||||
tooluid = int(self.tools_table.item(current_row, 2).text())
|
||||
@ -762,7 +760,8 @@ class SolderPaste(FlatCAMTool):
|
||||
return
|
||||
|
||||
if tool_dia == 0:
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format."))
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, "
|
||||
"in Float format."))
|
||||
return
|
||||
|
||||
# construct a list of all 'tooluid' in the self.tooltable_tools
|
||||
@ -844,7 +843,8 @@ class SolderPaste(FlatCAMTool):
|
||||
break
|
||||
restore_dia_item = self.tools_table.item(row, 1)
|
||||
restore_dia_item.setText(str(old_tool_dia))
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table."))
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. "
|
||||
"New diameter value is already in the Tool Table."))
|
||||
self.build_ui()
|
||||
|
||||
def on_tool_delete(self, rows_to_delete=None, all=None):
|
||||
@ -964,6 +964,7 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
:param name: the outname for the resulting geometry object
|
||||
:param work_object: the source Gerber object from which the geometry is created
|
||||
:param use_thread: use thread, True or False
|
||||
:return: a Geometry type object
|
||||
"""
|
||||
proc = self.app.proc_container.new(_("Creating Solder Paste dispensing geometry."))
|
||||
@ -1030,8 +1031,8 @@ class SolderPaste(FlatCAMTool):
|
||||
|
||||
for tool in sorted_tools:
|
||||
offset = tool / 2
|
||||
for uid, v in self.tooltable_tools.items():
|
||||
if float('%.4f' % float(v['tooldia'])) == tool:
|
||||
for uid, vl in self.tooltable_tools.items():
|
||||
if float('%.4f' % float(vl['tooldia'])) == tool:
|
||||
tooluid = int(uid)
|
||||
break
|
||||
|
||||
@ -1064,19 +1065,19 @@ class SolderPaste(FlatCAMTool):
|
||||
round_diag_2 = round(diag_2_intersect.length, 2)
|
||||
|
||||
if round_diag_1 == round_diag_2:
|
||||
l = distance((x_min, y_min), (x_max, y_min))
|
||||
length = distance((x_min, y_min), (x_max, y_min))
|
||||
h = distance((x_min, y_min), (x_min, y_max))
|
||||
|
||||
if offset >= l / 2 or offset >= h / 2:
|
||||
if offset >= length / 2 or offset >= h / 2:
|
||||
pass
|
||||
else:
|
||||
if l > h:
|
||||
if length > h:
|
||||
h_half = h / 2
|
||||
start = [x_min, (y_min + h_half)]
|
||||
stop = [(x_min + l), (y_min + h_half)]
|
||||
stop = [(x_min + length), (y_min + h_half)]
|
||||
geo = LineString([start, stop])
|
||||
else:
|
||||
l_half = l / 2
|
||||
l_half = length / 2
|
||||
start = [(x_min + l_half), y_min]
|
||||
stop = [(x_min + l_half), (y_min + h)]
|
||||
geo = LineString([start, stop])
|
||||
@ -1151,7 +1152,8 @@ class SolderPaste(FlatCAMTool):
|
||||
return 'fail'
|
||||
|
||||
if obj.special_group != 'solder_paste_tool':
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] This Geometry can't be processed. NOT a solder_paste_tool geometry."))
|
||||
self.app.inform.emit(_("[WARNING_NOTCL] This Geometry can't be processed. "
|
||||
"NOT a solder_paste_tool geometry."))
|
||||
return 'fail'
|
||||
|
||||
a = 0
|
||||
@ -1314,7 +1316,8 @@ class SolderPaste(FlatCAMTool):
|
||||
# then append the text from GCode to the text editor
|
||||
try:
|
||||
lines = StringIO(gcode)
|
||||
except:
|
||||
except Exception as e:
|
||||
log.debug("ToolSolderpaste.on_view_gcode() --> %s" % str(e))
|
||||
self.app.inform.emit(_("[ERROR_NOTCL] No Gcode in the object..."))
|
||||
return
|
||||
|
||||
|
@ -155,7 +155,6 @@ class ToolSub(FlatCAMTool):
|
||||
self.sub_follow_union = None
|
||||
self.sub_clear_union = None
|
||||
|
||||
|
||||
self.sub_grb_obj = None
|
||||
self.sub_grb_obj_name = None
|
||||
self.target_grb_obj = None
|
||||
@ -172,16 +171,18 @@ class ToolSub(FlatCAMTool):
|
||||
# store here the options from target_obj
|
||||
self.target_options = {}
|
||||
|
||||
self.sub_union = []
|
||||
|
||||
try:
|
||||
self.intersect_btn.clicked.disconnect(self.on_grb_intersection_click)
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
log.debug("ToolSub.__init__() --> %s" % str(e))
|
||||
self.intersect_btn.clicked.connect(self.on_grb_intersection_click)
|
||||
|
||||
try:
|
||||
self.intersect_geo_btn.clicked.disconnect()
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
log.debug("ToolSub.__init__() --> %s" % str(e))
|
||||
self.intersect_geo_btn.clicked.connect(self.on_geo_intersection_click)
|
||||
|
||||
def install(self, icon=None, separator=None, **kwargs):
|
||||
@ -233,7 +234,8 @@ class ToolSub(FlatCAMTool):
|
||||
# Get source object.
|
||||
try:
|
||||
self.target_grb_obj = self.app.collection.get_by_name(self.target_grb_obj_name)
|
||||
except:
|
||||
except Exception as e:
|
||||
log.debug("ToolSub.on_grb_intersection_click() --> %s" % str(e))
|
||||
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.obj_name)
|
||||
return "Could not retrieve object: %s" % self.target_grb_obj_name
|
||||
|
||||
@ -245,7 +247,8 @@ class ToolSub(FlatCAMTool):
|
||||
# Get source object.
|
||||
try:
|
||||
self.sub_grb_obj = self.app.collection.get_by_name(self.sub_grb_obj_name)
|
||||
except:
|
||||
except Exception as e:
|
||||
log.debug("ToolSub.on_grb_intersection_click() --> %s" % str(e))
|
||||
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.obj_name)
|
||||
return "Could not retrieve object: %s" % self.sub_grb_obj_name
|
||||
|
||||
@ -424,7 +427,8 @@ class ToolSub(FlatCAMTool):
|
||||
# Get source object.
|
||||
try:
|
||||
self.target_geo_obj = self.app.collection.get_by_name(self.target_geo_obj_name)
|
||||
except:
|
||||
except Exception as e:
|
||||
log.debug("ToolSub.on_geo_intersection_click() --> %s" % str(e))
|
||||
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.target_geo_obj_name)
|
||||
return "Could not retrieve object: %s" % self.target_grb_obj_name
|
||||
|
||||
@ -436,7 +440,8 @@ class ToolSub(FlatCAMTool):
|
||||
# Get source object.
|
||||
try:
|
||||
self.sub_geo_obj = self.app.collection.get_by_name(self.sub_geo_obj_name)
|
||||
except:
|
||||
except Exception as e:
|
||||
log.debug("ToolSub.on_geo_intersection_click() --> %s" % str(e))
|
||||
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.sub_geo_obj_name)
|
||||
return "Could not retrieve object: %s" % self.sub_geo_obj_name
|
||||
|
||||
@ -533,8 +538,8 @@ class ToolSub(FlatCAMTool):
|
||||
geo_obj.tools = deepcopy(self.new_tools)
|
||||
for tool in geo_obj.tools:
|
||||
geo_obj.tools[tool]['solid_geometry'] = deepcopy(self.new_solid_geometry)
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
log.debug("ToolSub.new_geo_object() --> %s" % str(e))
|
||||
|
||||
with self.app.proc_container.new(_("Generating new object ...")):
|
||||
ret = self.app.new_object('geometry', outname, obj_init, autoselected=False)
|
||||
@ -584,7 +589,6 @@ class ToolSub(FlatCAMTool):
|
||||
"""
|
||||
# log.debug("checking parsing --> %s" % str(self.parsing_promises))
|
||||
|
||||
|
||||
try:
|
||||
if not self.promises:
|
||||
self.check_thread.stop()
|
||||
@ -615,3 +619,5 @@ class ToolSub(FlatCAMTool):
|
||||
|
||||
self.target_geo_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
|
||||
self.sub_geo_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
|
||||
|
||||
# end of file
|
||||
|
@ -11,9 +11,9 @@ from FlatCAMObj import *
|
||||
|
||||
import gettext
|
||||
import FlatCAMTranslation as fcTranslate
|
||||
import builtins
|
||||
|
||||
fcTranslate.apply_language('strings')
|
||||
import builtins
|
||||
if '_' not in builtins.__dict__:
|
||||
_ = gettext.gettext
|
||||
|
||||
@ -350,8 +350,7 @@ class ToolTransform(FlatCAMTool):
|
||||
|
||||
form4_layout.addRow(self.flip_ref_cb)
|
||||
form4_layout.addRow(self.flip_ref_label, form4_child_1)
|
||||
self.ois_flip = OptionalInputSection(self.flip_ref_cb,
|
||||
[self.flip_ref_entry, self.flip_ref_button], logic=True)
|
||||
self.ois_flip = OptionalInputSection(self.flip_ref_cb, [self.flip_ref_entry, self.flip_ref_button], logic=True)
|
||||
|
||||
self.transform_lay.addStretch()
|
||||
|
||||
@ -455,7 +454,7 @@ class ToolTransform(FlatCAMTool):
|
||||
if self.app.defaults["tools_transform_mirror_point"]:
|
||||
self.flip_ref_entry.set_value(self.app.defaults["tools_transform_mirror_point"])
|
||||
else:
|
||||
self.flip_ref_entry.set_value((0,0))
|
||||
self.flip_ref_entry.set_value((0, 0))
|
||||
|
||||
def on_rotate(self):
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user