- fixed the preprocessors with 'laser' in the name to use the spindle direction set in the Preferences
- increased the upper limit for feedrates by an order of magnitude
This commit is contained in:
parent
10d4ed512b
commit
23a1495c32
|
@ -12,6 +12,8 @@ CAD program, and create G-Code for Isolation routing.
|
|||
3.02.2020
|
||||
|
||||
- modified Spinbox and DoubleSpinbox Custom UI elements such that they issue a warning status message when the typed value is out of range
|
||||
- fixed the preprocessors with 'laser' in the name to use the spindle direction set in the Preferences
|
||||
- increased the upper limit for feedrates by an order of magnitude
|
||||
|
||||
2.02.2020
|
||||
|
||||
|
|
10
camlib.py
10
camlib.py
|
@ -3105,7 +3105,9 @@ class CNCjob(Geometry):
|
|||
:param feedrate_z:
|
||||
:param feedrate_rapid:
|
||||
:param spindlespeed:
|
||||
:param spindledir:
|
||||
:param spindledir: Direction of rotation for the spindle. If using GRBL laser mode will
|
||||
adjust the laser mode
|
||||
|
||||
:param dwell:
|
||||
:param dwelltime:
|
||||
:param multidepth: If True, use multiple passes to reach the desired depth.
|
||||
|
@ -4055,14 +4057,14 @@ class CNCjob(Geometry):
|
|||
else:
|
||||
command['Z'] = 0
|
||||
|
||||
elif 'grbl_laser' in self.pp_excellon_name or 'grbl_laser' in self.pp_geometry_name or \
|
||||
(self.pp_solderpaste_name is not None and 'Paste' in self.pp_solderpaste_name):
|
||||
elif 'laser' in self.pp_excellon_name.lower() or 'laser' in self.pp_geometry_name.lower() or \
|
||||
(self.pp_solderpaste_name is not None and 'paste' in self.pp_solderpaste_name.lower()):
|
||||
match_lsr = re.search(r"X([\+-]?\d+.[\+-]?\d+)\s*Y([\+-]?\d+.[\+-]?\d+)", gline)
|
||||
if match_lsr:
|
||||
command['X'] = float(match_lsr.group(1).replace(" ", ""))
|
||||
command['Y'] = float(match_lsr.group(2).replace(" ", ""))
|
||||
|
||||
match_lsr_pos = re.search(r"^(M0[3|5])", gline)
|
||||
match_lsr_pos = re.search(r"^(M0[3-5])", gline)
|
||||
if match_lsr_pos:
|
||||
if 'M05' in match_lsr_pos.group(1):
|
||||
# the value does not matter, only that it is positive so the gcode_parse() know it is > 0,
|
||||
|
|
|
@ -1038,7 +1038,7 @@ class ExcellonObjectUI(ObjectUI):
|
|||
)
|
||||
self.feedrate_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
||||
self.feedrate_entry.set_precision(self.decimals)
|
||||
self.feedrate_entry.set_range(0.0, 9999.9999)
|
||||
self.feedrate_entry.set_range(0.0, 99999.9999)
|
||||
self.feedrate_entry.setSingleStep(0.1)
|
||||
|
||||
self.grid3.addWidget(frlabel, 14, 0)
|
||||
|
@ -1055,7 +1055,7 @@ class ExcellonObjectUI(ObjectUI):
|
|||
)
|
||||
self.feedrate_rapid_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
||||
self.feedrate_rapid_entry.set_precision(self.decimals)
|
||||
self.feedrate_rapid_entry.set_range(0.0, 9999.9999)
|
||||
self.feedrate_rapid_entry.set_range(0.0, 99999.9999)
|
||||
self.feedrate_rapid_entry.setSingleStep(0.1)
|
||||
|
||||
self.grid3.addWidget(self.feedrate_rapid_label, 16, 0)
|
||||
|
@ -1778,7 +1778,7 @@ class GeometryObjectUI(ObjectUI):
|
|||
)
|
||||
self.cncfeedrate_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
||||
self.cncfeedrate_entry.set_precision(self.decimals)
|
||||
self.cncfeedrate_entry.set_range(0, 9999.9999)
|
||||
self.cncfeedrate_entry.set_range(0, 99999.9999)
|
||||
self.cncfeedrate_entry.setSingleStep(0.1)
|
||||
|
||||
self.grid3.addWidget(frlabel, 10, 0)
|
||||
|
@ -1793,7 +1793,7 @@ class GeometryObjectUI(ObjectUI):
|
|||
)
|
||||
self.cncplunge_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
||||
self.cncplunge_entry.set_precision(self.decimals)
|
||||
self.cncplunge_entry.set_range(0, 9999.9999)
|
||||
self.cncplunge_entry.set_range(0, 99999.9999)
|
||||
self.cncplunge_entry.setSingleStep(0.1)
|
||||
|
||||
self.grid3.addWidget(frzlabel, 11, 0)
|
||||
|
@ -1810,7 +1810,7 @@ class GeometryObjectUI(ObjectUI):
|
|||
)
|
||||
self.cncfeedrate_rapid_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
||||
self.cncfeedrate_rapid_entry.set_precision(self.decimals)
|
||||
self.cncfeedrate_rapid_entry.set_range(0, 9999.9999)
|
||||
self.cncfeedrate_rapid_entry.set_range(0, 99999.9999)
|
||||
self.cncfeedrate_rapid_entry.setSingleStep(0.1)
|
||||
|
||||
self.grid3.addWidget(self.fr_rapidlabel, 12, 0)
|
||||
|
|
|
@ -3154,7 +3154,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
|
|||
)
|
||||
self.feedrate_entry = FCDoubleSpinner()
|
||||
self.feedrate_entry.set_precision(self.decimals)
|
||||
self.feedrate_entry.set_range(0, 999)
|
||||
self.feedrate_entry.set_range(0, 99999.9999)
|
||||
|
||||
grid2.addWidget(frlabel, 5, 0)
|
||||
grid2.addWidget(self.feedrate_entry, 5, 1)
|
||||
|
@ -3316,7 +3316,7 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
)
|
||||
self.feedrate_rapid_entry = FCDoubleSpinner()
|
||||
self.feedrate_rapid_entry.set_precision(self.decimals)
|
||||
self.feedrate_rapid_entry.set_range(0, 9999999.9999)
|
||||
self.feedrate_rapid_entry.set_range(0, 99999.9999)
|
||||
|
||||
grid1.addWidget(fr_rapid_label, 3, 0)
|
||||
grid1.addWidget(self.feedrate_rapid_entry, 3, 1)
|
||||
|
@ -3341,7 +3341,7 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
)
|
||||
self.feedrate_probe_entry = FCDoubleSpinner()
|
||||
self.feedrate_probe_entry.set_precision(self.decimals)
|
||||
self.feedrate_probe_entry.set_range(0, 9999999.9999)
|
||||
self.feedrate_probe_entry.set_range(0, 99999.9999)
|
||||
|
||||
grid1.addWidget(self.feedrate_probe_label, 5, 0)
|
||||
grid1.addWidget(self.feedrate_probe_entry, 5, 1)
|
||||
|
@ -4081,7 +4081,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
|
|||
"plane in units per minute")
|
||||
)
|
||||
self.cncfeedrate_entry = FCDoubleSpinner()
|
||||
self.cncfeedrate_entry.set_range(0, 99999)
|
||||
self.cncfeedrate_entry.set_range(0, 99999.9999)
|
||||
self.cncfeedrate_entry.set_precision(self.decimals)
|
||||
self.cncfeedrate_entry.setSingleStep(0.1)
|
||||
self.cncfeedrate_entry.setWrapping(True)
|
||||
|
@ -4097,7 +4097,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
|
|||
"It is called also Plunge.")
|
||||
)
|
||||
self.cncplunge_entry = FCDoubleSpinner()
|
||||
self.cncplunge_entry.set_range(0, 99999)
|
||||
self.cncplunge_entry.set_range(0, 99999.9999)
|
||||
self.cncplunge_entry.set_precision(self.decimals)
|
||||
self.cncplunge_entry.setSingleStep(0.1)
|
||||
self.cncplunge_entry.setWrapping(True)
|
||||
|
@ -4208,7 +4208,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
"ignore for any other cases.")
|
||||
)
|
||||
self.cncfeedrate_rapid_entry = FCDoubleSpinner()
|
||||
self.cncfeedrate_rapid_entry.set_range(0, 99999)
|
||||
self.cncfeedrate_rapid_entry.set_range(0, 99999.9999)
|
||||
self.cncfeedrate_rapid_entry.set_precision(self.decimals)
|
||||
self.cncfeedrate_rapid_entry.setSingleStep(0.1)
|
||||
self.cncfeedrate_rapid_entry.setWrapping(True)
|
||||
|
@ -4260,7 +4260,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
_("The feedrate used while the probe is probing.")
|
||||
)
|
||||
self.feedrate_probe_entry = FCDoubleSpinner()
|
||||
self.feedrate_probe_entry.set_range(0, 99999)
|
||||
self.feedrate_probe_entry.set_range(0, 99999.9999)
|
||||
self.feedrate_probe_entry.set_precision(self.decimals)
|
||||
self.feedrate_probe_entry.setSingleStep(0.1)
|
||||
self.feedrate_probe_entry.setWrapping(True)
|
||||
|
@ -6709,7 +6709,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
|
|||
# Feedrate X-Y
|
||||
self.frxy_entry = FCDoubleSpinner()
|
||||
self.frxy_entry.set_precision(self.decimals)
|
||||
self.frxy_entry.set_range(0.0000001, 9999.9999)
|
||||
self.frxy_entry.set_range(0.0000001, 99999.9999)
|
||||
self.frxy_entry.setSingleStep(0.1)
|
||||
|
||||
self.frxy_label = QtWidgets.QLabel('%s:' % _("Feedrate X-Y"))
|
||||
|
@ -6722,7 +6722,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
|
|||
# Feedrate Z
|
||||
self.frz_entry = FCDoubleSpinner()
|
||||
self.frz_entry.set_precision(self.decimals)
|
||||
self.frz_entry.set_range(0.0000001, 9999.9999)
|
||||
self.frz_entry.set_range(0.0000001, 99999.9999)
|
||||
self.frz_entry.setSingleStep(0.1)
|
||||
|
||||
self.frz_label = QtWidgets.QLabel('%s:' % _("Feedrate Z"))
|
||||
|
@ -6736,7 +6736,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
|
|||
# Feedrate Z Dispense
|
||||
self.frz_dispense_entry = FCDoubleSpinner()
|
||||
self.frz_dispense_entry.set_precision(self.decimals)
|
||||
self.frz_dispense_entry.set_range(0.0000001, 9999.9999)
|
||||
self.frz_dispense_entry.set_range(0.0000001, 99999.9999)
|
||||
self.frz_dispense_entry.setSingleStep(0.1)
|
||||
|
||||
self.frz_dispense_label = QtWidgets.QLabel('%s:' % _("Feedrate Z Dispense"))
|
||||
|
@ -6749,7 +6749,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
|
|||
|
||||
# Spindle Speed Forward
|
||||
self.speedfwd_entry = FCSpinner()
|
||||
self.speedfwd_entry.set_range(0, 999999)
|
||||
self.speedfwd_entry.set_range(0, 99999)
|
||||
self.speedfwd_entry.setSingleStep(1000)
|
||||
|
||||
self.speedfwd_label = QtWidgets.QLabel('%s:' % _("Spindle Speed FWD"))
|
||||
|
|
|
@ -245,7 +245,7 @@ class SolderPaste(FlatCAMTool):
|
|||
|
||||
# Feedrate X-Y
|
||||
self.frxy_entry = FCDoubleSpinner()
|
||||
self.frxy_entry.set_range(0.0000001, 9999.9999)
|
||||
self.frxy_entry.set_range(0.0000, 99999.9999)
|
||||
self.frxy_entry.set_precision(self.decimals)
|
||||
self.frxy_entry.setSingleStep(0.1)
|
||||
|
||||
|
@ -257,7 +257,7 @@ class SolderPaste(FlatCAMTool):
|
|||
|
||||
# Feedrate Z
|
||||
self.frz_entry = FCDoubleSpinner()
|
||||
self.frz_entry.set_range(0.0000001, 9999.9999)
|
||||
self.frz_entry.set_range(0.0000, 99999.9999)
|
||||
self.frz_entry.set_precision(self.decimals)
|
||||
self.frz_entry.setSingleStep(0.1)
|
||||
|
||||
|
@ -270,7 +270,7 @@ class SolderPaste(FlatCAMTool):
|
|||
|
||||
# Feedrate Z Dispense
|
||||
self.frz_dispense_entry = FCDoubleSpinner()
|
||||
self.frz_dispense_entry.set_range(0.0000001, 9999.9999)
|
||||
self.frz_dispense_entry.set_range(0.0000, 99999.9999)
|
||||
self.frz_dispense_entry.set_precision(self.decimals)
|
||||
self.frz_dispense_entry.setSingleStep(0.1)
|
||||
|
||||
|
@ -491,6 +491,8 @@ class SolderPaste(FlatCAMTool):
|
|||
self.units = ''
|
||||
self.name = ""
|
||||
|
||||
self.obj = None
|
||||
|
||||
self.text_editor_tab = None
|
||||
|
||||
# this will be used in the combobox context menu, for delete entry
|
||||
|
@ -652,10 +654,10 @@ class SolderPaste(FlatCAMTool):
|
|||
for tooluid_key, tooluid_value in self.tooltable_tools.items():
|
||||
if float('%.*f' % (self.decimals, tooluid_value['tooldia'])) == tool_sorted:
|
||||
tool_id += 1
|
||||
id = QtWidgets.QTableWidgetItem('%d' % int(tool_id))
|
||||
id.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||
id_item = QtWidgets.QTableWidgetItem('%d' % int(tool_id))
|
||||
id_item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||
row_no = tool_id - 1
|
||||
self.tools_table.setItem(row_no, 0, id) # Tool name/id
|
||||
self.tools_table.setItem(row_no, 0, id_item) # Tool name/id
|
||||
|
||||
# Make sure that the drill diameter when in MM is with no more than 2 decimals
|
||||
# There are no drill bits in MM with more than 2 decimals diameter
|
||||
|
@ -1295,7 +1297,7 @@ class SolderPaste(FlatCAMTool):
|
|||
if obj.tools[tooluid_key]['solid_geometry'] is None:
|
||||
a += 1
|
||||
if a == len(obj.tools):
|
||||
self.app.inform.emit('[ERROR_NOTCL] %s...' % _('Cancelled. Empty file, it has no geometry'))
|
||||
self.app.inform.emit('[ERROR_NOTCL] %s...' % _('Cancelled. Empty file, it has no geometry'))
|
||||
return 'fail'
|
||||
|
||||
# use the name of the first tool selected in self.geo_tools_table which has the diameter passed as tool_dia
|
||||
|
@ -1334,8 +1336,6 @@ class SolderPaste(FlatCAMTool):
|
|||
assert isinstance(job_obj, FlatCAMCNCjob), \
|
||||
"Initializer expected a FlatCAMCNCjob, got %s" % type(job_obj)
|
||||
|
||||
tool_cnc_dict = {}
|
||||
|
||||
# this turn on the FlatCAMCNCJob plot for multiple tools
|
||||
job_obj.multitool = True
|
||||
job_obj.multigeo = True
|
||||
|
|
|
@ -117,11 +117,11 @@ M6
|
|||
M0
|
||||
G00 Z{z_toolchange}
|
||||
""".format(x_toolchange=self.coordinate_format % (p.coords_decimals, x_toolchange),
|
||||
y_toolchange=self.coordinate_format % (p.coords_decimals, y_toolchange),
|
||||
z_toolchange=self.coordinate_format % (p.coords_decimals, z_toolchange),
|
||||
tool=int(p.tool),
|
||||
t_drills=no_drills,
|
||||
toolC=toolC_formatted)
|
||||
y_toolchange=self.coordinate_format % (p.coords_decimals, y_toolchange),
|
||||
z_toolchange=self.coordinate_format % (p.coords_decimals, z_toolchange),
|
||||
tool=int(p.tool),
|
||||
t_drills=no_drills,
|
||||
toolC=toolC_formatted)
|
||||
else:
|
||||
gcode = """
|
||||
M5
|
||||
|
|
|
@ -54,10 +54,11 @@ class grbl_laser(FlatCAMPostProc):
|
|||
return 'M05 S0'
|
||||
|
||||
def down_code(self, p):
|
||||
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||
if p.spindlespeed:
|
||||
return 'M03 S%d' % p.spindlespeed
|
||||
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||
else:
|
||||
return 'M03'
|
||||
return sdir
|
||||
|
||||
def toolchange_code(self, p):
|
||||
return ''
|
||||
|
|
Loading…
Reference in New Issue