diff --git a/FlatCAMApp.py b/FlatCAMApp.py index d92b0284..66a5a1e0 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -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, diff --git a/FlatCAMGUI.py b/FlatCAMGUI.py index 1e543694..6d981bff 100644 --- a/FlatCAMGUI.py +++ b/FlatCAMGUI.py @@ -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 diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 797e5cce..189eee69 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -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! diff --git a/GUIElements.py b/GUIElements.py index 3570e331..a16b3ce3 100644 --- a/GUIElements.py +++ b/GUIElements.py @@ -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))) diff --git a/ObjectUI.py b/ObjectUI.py index bb70f634..8bddb12c 100644 --- a/ObjectUI.py +++ b/ObjectUI.py @@ -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(