Spindle speed for G-code from geometry and excellon. Solves #124.

This commit is contained in:
Juan Pablo Caram 2015-09-05 17:41:00 -04:00
parent 40e8445f2d
commit f503dabc7e
5 changed files with 49 additions and 19 deletions

View File

@ -195,12 +195,14 @@ class App(QtCore.QObject):
"excellon_drillz": self.defaults_form.excellon_group.cutz_entry,
"excellon_travelz": self.defaults_form.excellon_group.travelz_entry,
"excellon_feedrate": self.defaults_form.excellon_group.feedrate_entry,
"excellon_spindlespeed": self.defaults_form.excellon_group.spindlespeed_entry,
"geometry_plot": self.defaults_form.geometry_group.plot_cb,
"geometry_cutz": self.defaults_form.geometry_group.cutz_entry,
"geometry_travelz": self.defaults_form.geometry_group.travelz_entry,
"geometry_feedrate": self.defaults_form.geometry_group.cncfeedrate_entry,
"geometry_cnctooldia": self.defaults_form.geometry_group.cnctooldia_entry,
"geometry_painttooldia": self.defaults_form.geometry_group.painttooldia_entry,
"geometry_spindlespeed": self.defaults_form.geometry_group.cncspindlespeed_entry,
"geometry_paintoverlap": self.defaults_form.geometry_group.paintoverlap_entry,
"geometry_paintmargin": self.defaults_form.geometry_group.paintmargin_entry,
"cncjob_plot": self.defaults_form.cncjob_group.plot_cb,
@ -234,11 +236,13 @@ class App(QtCore.QObject):
"excellon_drillz": -0.1,
"excellon_travelz": 0.1,
"excellon_feedrate": 3.0,
"excellon_spindlespeed": None,
"geometry_plot": True,
"geometry_cutz": -0.002,
"geometry_travelz": 0.1,
"geometry_feedrate": 3.0,
"geometry_cnctooldia": 0.016,
"geometry_spindlespeed": None,
"geometry_painttooldia": 0.07,
"geometry_paintoverlap": 0.15,
"geometry_paintmargin": 0.0,
@ -268,8 +272,7 @@ class App(QtCore.QObject):
"zdownrate": None,
"excellon_zeros": "L",
"gerber_use_buffer_for_union": True,
"cncjob_coordinate_format": "X%.4fY%.4f",
"spindlespeed": None
"cncjob_coordinate_format": "X%.4fY%.4f"
})
###############################
@ -315,10 +318,12 @@ class App(QtCore.QObject):
"excellon_drillz": self.options_form.excellon_group.cutz_entry,
"excellon_travelz": self.options_form.excellon_group.travelz_entry,
"excellon_feedrate": self.options_form.excellon_group.feedrate_entry,
"excellon_spindlespeed": self.options_form.excellon_group.spindlespeed_entry,
"geometry_plot": self.options_form.geometry_group.plot_cb,
"geometry_cutz": self.options_form.geometry_group.cutz_entry,
"geometry_travelz": self.options_form.geometry_group.travelz_entry,
"geometry_feedrate": self.options_form.geometry_group.cncfeedrate_entry,
"geometry_spindlespeed": self.options_form.geometry_group.cncspindlespeed_entry,
"geometry_cnctooldia": self.options_form.geometry_group.cnctooldia_entry,
"geometry_painttooldia": self.options_form.geometry_group.painttooldia_entry,
"geometry_paintoverlap": self.options_form.geometry_group.paintoverlap_entry,
@ -353,10 +358,12 @@ class App(QtCore.QObject):
"excellon_drillz": -0.1,
"excellon_travelz": 0.1,
"excellon_feedrate": 3.0,
"excellon_spindlespeed": None,
"geometry_plot": True,
"geometry_cutz": -0.002,
"geometry_travelz": 0.1,
"geometry_feedrate": 3.0,
"geometry_spindlespeed": None,
"geometry_cnctooldia": 0.016,
"geometry_painttooldia": 0.07,
"geometry_paintoverlap": 0.15,

View File

@ -586,7 +586,7 @@ class ExcellonOptionsGroupUI(OptionsGroupUI):
"in RPM (optional)"
)
grid1.addWidget(spdlabel, 3, 0)
self.spindlespeed_entry = LengthEntry()
self.spindlespeed_entry = IntEntry(allow_empty=True)
grid1.addWidget(self.spindlespeed_entry, 3, 1)
@ -662,7 +662,7 @@ class GeometryOptionsGroupUI(OptionsGroupUI):
"in RPM (optional)"
)
grid1.addWidget(spdlabel, 4, 0)
self.cncspindlespeed_entry = LengthEntry()
self.cncspindlespeed_entry = IntEntry(allow_empty=True)
grid1.addWidget(self.cncspindlespeed_entry, 4, 1)
## Paint area

View File

@ -609,7 +609,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon):
"tooldia": 0.1,
"toolchange": False,
"toolchangez": 1.0,
"spindlespeed": ""
"spindlespeed": None
})
# TODO: Document this.
@ -834,12 +834,14 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob):
ui_type = CNCObjectUI
def __init__(self, name, units="in", kind="generic", z_move=0.1,
feedrate=3.0, z_cut=-0.002, tooldia=0.0,spindlespeed=None):
feedrate=3.0, z_cut=-0.002, tooldia=0.0,
spindlespeed=None):
FlatCAMApp.App.log.debug("Creating CNCJob object...")
CNCjob.__init__(self, units=units, kind=kind, z_move=z_move,
feedrate=feedrate, z_cut=z_cut, tooldia=tooldia, spindlespeed=spindlespeed)
feedrate=feedrate, z_cut=z_cut, tooldia=tooldia,
spindlespeed=spindlespeed)
FlatCAMObj.__init__(self, name)
@ -980,7 +982,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
"cutz": -0.002,
"travelz": 0.1,
"feedrate": 5.0,
"spindlespeed": "",
"spindlespeed": None,
"cnctooldia": 0.4 / 25.4,
"painttooldia": 0.0625,
"paintoverlap": 0.15,
@ -1095,7 +1097,8 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
self.generatecncjob()
def generatecncjob(self, z_cut=None, z_move=None,
feedrate=None, tooldia=None, outname=None, spindlespeed=None):
feedrate=None, tooldia=None, outname=None,
spindlespeed=None):
"""
Creates a CNCJob out of this Geometry object.
@ -1115,11 +1118,16 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
tooldia = tooldia if tooldia is not None else self.options["cnctooldia"]
# To allow default value to be "" (optional in gui) and translate to None
if not isinstance(spindlespeed, int):
if isinstance(self.options["spindlespeed"], int):
spindlespeed = self.options["spindlespeed"]
else:
spindlespeed = None
# if not isinstance(spindlespeed, int):
# if isinstance(self.options["spindlespeed"], int) or \
# isinstance(self.options["spindlespeed"], float):
# spindlespeed = int(self.options["spindlespeed"])
# else:
# spindlespeed = None
if spindlespeed is None:
# int or None.
spindlespeed = self.options['spindlespeed']
# Object initialization function for app.new_object()
# RUNNING ON SEPARATE THREAD!

View File

@ -121,17 +121,30 @@ class FloatEntry(QtGui.QLineEdit):
return float(evaled)
def set_value(self, val):
self.setText("%.6f"%val)
self.setText("%.6f" % val)
class IntEntry(QtGui.QLineEdit):
def __init__(self, parent=None):
def __init__(self, parent=None, allow_empty=False, empty_val=None):
super(IntEntry, self).__init__(parent)
self.allow_empty = allow_empty
self.empty_val = empty_val
def get_value(self):
if self.allow_empty:
if str(self.text()) == "":
return self.empty_val
return int(self.text())
def set_value(self, val):
if val == self.empty_val and self.allow_empty:
self.setText(QtCore.QString(""))
return
self.setText(QtCore.QString(str(val)))

View File

@ -278,7 +278,7 @@ class GeometryObjectUI(ObjectUI):
"in RPM (optional)"
)
grid1.addWidget(spdlabel, 4, 0)
self.cncspindlespeed_entry = LengthEntry()
self.cncspindlespeed_entry = IntEntry(allow_empty=True)
grid1.addWidget(self.cncspindlespeed_entry, 4, 1)
self.generate_cnc_button = QtGui.QPushButton('Generate')
@ -365,7 +365,9 @@ class ExcellonObjectUI(ObjectUI):
"""
def __init__(self, parent=None):
ObjectUI.__init__(self, title='Excellon Object', icon_file='share/drill32.png', parent=parent)
ObjectUI.__init__(self, title='Excellon Object',
icon_file='share/drill32.png',
parent=parent)
#### Plot options ####
@ -463,7 +465,7 @@ class ExcellonObjectUI(ObjectUI):
"in RPM (optional)"
)
grid1.addWidget(spdlabel, 5, 0)
self.spindlespeed_entry = LengthEntry()
self.spindlespeed_entry = IntEntry(allow_empty=True)
grid1.addWidget(self.spindlespeed_entry, 5, 1)
choose_tools_label = QtGui.QLabel(