From 3d869279dcdab80493672a3a92f50d29d01a1490 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 19 Nov 2020 15:42:23 +0200 Subject: [PATCH] - in Geometry Properties UI restored the plot functionality --- CHANGELOG.md | 1 + appObjects/FlatCAMGeometry.py | 318 +++++++++++++++++----------------- 2 files changed, 161 insertions(+), 158 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49515c6b..5767a82d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ CHANGELOG for FlatCAM beta 19.11.2020 - cleaned up the Geometry Properties UI +- in Geometry Properties UI restored the plot functionality 17.11.2020 diff --git a/appObjects/FlatCAMGeometry.py b/appObjects/FlatCAMGeometry.py index 86600297..f532e6d0 100644 --- a/appObjects/FlatCAMGeometry.py +++ b/appObjects/FlatCAMGeometry.py @@ -142,8 +142,8 @@ class GeometryObject(FlatCAMObj, Geometry): # engine of FlatCAM. Most likely are generated by some of tools and are special cases of geometries. self.special_group = None - self.old_pp_state = self.app.defaults["geometry_multidepth"] - self.old_toolchangeg_state = self.app.defaults["geometry_toolchange"] + # self.old_pp_state = self.app.defaults["geometry_multidepth"] + # self.old_toolchangeg_state = self.app.defaults["geometry_toolchange"] self.units_found = self.app.defaults['units'] # this variable can be updated by the Object that generates the geometry @@ -328,6 +328,8 @@ class GeometryObject(FlatCAMObj, Geometry): else: self.ui.geo_tools_table.setColumnHidden(6, False) + self.ui_connect() + # self.set_tool_offset_visibility(selected_row) # ############################################################################################################# @@ -526,62 +528,62 @@ class GeometryObject(FlatCAMObj, Geometry): oname = opt_key[len('tools_mill') + 1:] self.default_data[oname] = self.app.options[opt_key] # fill in self.default_data values from self.options - # for def_key in self.default_data: - # for opt_key, opt_val in self.options.items(): - # if def_key == opt_key: - # self.default_data[def_key] = deepcopy(opt_val) + for def_key in self.default_data: + for opt_key, opt_val in self.options.items(): + if def_key == opt_key: + self.default_data[def_key] = deepcopy(opt_val) - # if type(self.options["cnctooldia"]) == float: - # tools_list = [self.options["cnctooldia"]] - # else: - # try: - # temp_tools = self.options["cnctooldia"].split(",") - # tools_list = [ - # float(eval(dia)) for dia in temp_tools if dia != '' - # ] - # except Exception as e: - # log.error("GeometryObject.set_ui() -> At least one tool diameter needed. " - # "Verify in Edit -> Preferences -> Geometry General -> Tool dia. %s" % str(e)) - # return + if type(self.options["cnctooldia"]) == float: + tools_list = [self.options["cnctooldia"]] + else: + try: + temp_tools = self.options["cnctooldia"].split(",") + tools_list = [ + float(eval(dia)) for dia in temp_tools if dia != '' + ] + except Exception as e: + log.error("GeometryObject.set_ui() -> At least one tool diameter needed. " + "Verify in Edit -> Preferences -> Geometry General -> Tool dia. %s" % str(e)) + return + + self.tooluid += 1 + + if not self.tools: + for toold in tools_list: + new_data = deepcopy(self.default_data) + self.tools.update({ + self.tooluid: { + 'tooldia': self.app.dec_format(float(toold), self.decimals), + 'offset': 'Path', + 'offset_value': 0.0, + 'type': 'Rough', + 'tool_type': self.tool_type, + 'data': new_data, + 'solid_geometry': self.solid_geometry + } + }) + self.tooluid += 1 + else: + # if self.tools is not empty then it can safely be assumed that it comes from an opened project. + # Because of the serialization the self.tools list on project save, the dict keys (members of self.tools + # are each a dict) are turned into strings so we rebuild the self.tools elements so the keys are + # again float type; dict's don't like having keys changed when iterated through therefore the need for the + # following convoluted way of changing the keys from string to float type + temp_tools = {} + for tooluid_key in self.tools: + val = deepcopy(self.tools[tooluid_key]) + new_key = deepcopy(int(tooluid_key)) + temp_tools[new_key] = val + + self.tools.clear() + self.tools = deepcopy(temp_tools) - # self.tooluid += 1 - # - # if not self.tools: - # for toold in tools_list: - # new_data = deepcopy(self.default_data) - # self.tools.update({ - # self.tooluid: { - # 'tooldia': self.app.dec_format(float(toold), self.decimals), - # 'offset': 'Path', - # 'offset_value': 0.0, - # 'type': 'Rough', - # 'tool_type': self.tool_type, - # 'data': new_data, - # 'solid_geometry': self.solid_geometry - # } - # }) - # self.tooluid += 1 - # else: - # # if self.tools is not empty then it can safely be assumed that it comes from an opened project. - # # Because of the serialization the self.tools list on project save, the dict keys (members of self.tools - # # are each a dict) are turned into strings so we rebuild the self.tools elements so the keys are - # # again float type; dict's don't like having keys changed when iterated through therefore the need for the - # # following convoluted way of changing the keys from string to float type - # temp_tools = {} - # for tooluid_key in self.tools: - # val = deepcopy(self.tools[tooluid_key]) - # new_key = deepcopy(int(tooluid_key)) - # temp_tools[new_key] = val - # - # self.tools.clear() - # self.tools = deepcopy(temp_tools) - # # self.ui.tool_offset_entry.hide() # self.ui.tool_offset_lbl.hide() # used to store the state of the mpass_cb if the selected preprocessor for geometry is hpgl - self.old_pp_state = self.default_data['multidepth'] - self.old_toolchangeg_state = self.default_data['toolchange'] + # self.old_pp_state = self.default_data['multidepth'] + # self.old_toolchangeg_state = self.default_data['toolchange'] if not isinstance(self.ui, GeometryObjectUI): log.debug("Expected a GeometryObjectUI, got %s" % type(self.ui)) @@ -1957,112 +1959,112 @@ class GeometryObject(FlatCAMObj, Geometry): item[0] = str(item[0]) return table_tools_items - def on_pp_changed(self): - current_pp = self.ui.pp_geometry_name_cb.get_value() - if current_pp == 'hpgl': - self.old_pp_state = self.ui.mpass_cb.get_value() - self.old_toolchangeg_state = self.ui.toolchangeg_cb.get_value() - - self.ui.mpass_cb.set_value(False) - self.ui.mpass_cb.setDisabled(True) - - self.ui.toolchangeg_cb.set_value(True) - self.ui.toolchangeg_cb.setDisabled(True) - else: - self.ui.mpass_cb.set_value(self.old_pp_state) - self.ui.mpass_cb.setDisabled(False) - - self.ui.toolchangeg_cb.set_value(self.old_toolchangeg_state) - self.ui.toolchangeg_cb.setDisabled(False) - - if "toolchange_probe" in current_pp.lower(): - self.ui.pdepth_entry.setVisible(True) - self.ui.pdepth_label.show() - - self.ui.feedrate_probe_entry.setVisible(True) - self.ui.feedrate_probe_label.show() - else: - self.ui.pdepth_entry.setVisible(False) - self.ui.pdepth_label.hide() - - self.ui.feedrate_probe_entry.setVisible(False) - self.ui.feedrate_probe_label.hide() - - if 'marlin' in current_pp.lower() or 'custom' in current_pp.lower(): - self.ui.fr_rapidlabel.show() - self.ui.feedrate_rapid_entry.show() - else: - self.ui.fr_rapidlabel.hide() - self.ui.feedrate_rapid_entry.hide() - - if 'laser' in current_pp.lower(): - self.ui.cutzlabel.hide() - self.ui.cutz_entry.hide() - try: - self.ui.mpass_cb.hide() - self.ui.maxdepth_entry.hide() - except AttributeError: - pass - - if 'marlin' in current_pp.lower(): - self.ui.travelzlabel.setText('%s:' % _("Focus Z")) - self.ui.endz_label.show() - self.ui.endz_entry.show() - else: - self.ui.travelzlabel.hide() - self.ui.travelz_entry.hide() - - self.ui.endz_label.hide() - self.ui.endz_entry.hide() - - try: - self.ui.frzlabel.hide() - self.ui.feedrate_z_entry.hide() - except AttributeError: - pass - - self.ui.dwell_cb.hide() - self.ui.dwelltime_entry.hide() - - self.ui.spindle_label.setText('%s:' % _("Laser Power")) - - try: - self.ui.tool_offset_label.hide() - self.ui.offset_entry.hide() - except AttributeError: - pass - else: - self.ui.cutzlabel.show() - self.ui.cutz_entry.show() - try: - self.ui.mpass_cb.show() - self.ui.maxdepth_entry.show() - except AttributeError: - pass - - self.ui.travelzlabel.setText('%s:' % _('Travel Z')) - - self.ui.travelzlabel.show() - self.ui.travelz_entry.show() - - self.ui.endz_label.show() - self.ui.endz_entry.show() - - try: - self.ui.frzlabel.show() - self.ui.feedrate_z_entry.show() - except AttributeError: - pass - self.ui.dwell_cb.show() - self.ui.dwelltime_entry.show() - - self.ui.spindle_label.setText('%s:' % _('Spindle speed')) - - try: - self.ui.tool_offset_lbl.show() - self.ui.offset_entry.show() - except AttributeError: - pass + # def on_pp_changed(self): + # current_pp = self.ui.pp_geometry_name_cb.get_value() + # if current_pp == 'hpgl': + # self.old_pp_state = self.ui.mpass_cb.get_value() + # self.old_toolchangeg_state = self.ui.toolchangeg_cb.get_value() + # + # self.ui.mpass_cb.set_value(False) + # self.ui.mpass_cb.setDisabled(True) + # + # self.ui.toolchangeg_cb.set_value(True) + # self.ui.toolchangeg_cb.setDisabled(True) + # else: + # self.ui.mpass_cb.set_value(self.old_pp_state) + # self.ui.mpass_cb.setDisabled(False) + # + # self.ui.toolchangeg_cb.set_value(self.old_toolchangeg_state) + # self.ui.toolchangeg_cb.setDisabled(False) + # + # if "toolchange_probe" in current_pp.lower(): + # self.ui.pdepth_entry.setVisible(True) + # self.ui.pdepth_label.show() + # + # self.ui.feedrate_probe_entry.setVisible(True) + # self.ui.feedrate_probe_label.show() + # else: + # self.ui.pdepth_entry.setVisible(False) + # self.ui.pdepth_label.hide() + # + # self.ui.feedrate_probe_entry.setVisible(False) + # self.ui.feedrate_probe_label.hide() + # + # if 'marlin' in current_pp.lower() or 'custom' in current_pp.lower(): + # self.ui.fr_rapidlabel.show() + # self.ui.feedrate_rapid_entry.show() + # else: + # self.ui.fr_rapidlabel.hide() + # self.ui.feedrate_rapid_entry.hide() + # + # if 'laser' in current_pp.lower(): + # self.ui.cutzlabel.hide() + # self.ui.cutz_entry.hide() + # try: + # self.ui.mpass_cb.hide() + # self.ui.maxdepth_entry.hide() + # except AttributeError: + # pass + # + # if 'marlin' in current_pp.lower(): + # self.ui.travelzlabel.setText('%s:' % _("Focus Z")) + # self.ui.endz_label.show() + # self.ui.endz_entry.show() + # else: + # self.ui.travelzlabel.hide() + # self.ui.travelz_entry.hide() + # + # self.ui.endz_label.hide() + # self.ui.endz_entry.hide() + # + # try: + # self.ui.frzlabel.hide() + # self.ui.feedrate_z_entry.hide() + # except AttributeError: + # pass + # + # self.ui.dwell_cb.hide() + # self.ui.dwelltime_entry.hide() + # + # self.ui.spindle_label.setText('%s:' % _("Laser Power")) + # + # try: + # self.ui.tool_offset_label.hide() + # self.ui.offset_entry.hide() + # except AttributeError: + # pass + # else: + # self.ui.cutzlabel.show() + # self.ui.cutz_entry.show() + # try: + # self.ui.mpass_cb.show() + # self.ui.maxdepth_entry.show() + # except AttributeError: + # pass + # + # self.ui.travelzlabel.setText('%s:' % _('Travel Z')) + # + # self.ui.travelzlabel.show() + # self.ui.travelz_entry.show() + # + # self.ui.endz_label.show() + # self.ui.endz_entry.show() + # + # try: + # self.ui.frzlabel.show() + # self.ui.feedrate_z_entry.show() + # except AttributeError: + # pass + # self.ui.dwell_cb.show() + # self.ui.dwelltime_entry.show() + # + # self.ui.spindle_label.setText('%s:' % _('Spindle speed')) + # + # try: + # self.ui.tool_offset_lbl.show() + # self.ui.offset_entry.show() + # except AttributeError: + # pass def on_generatecnc_button_click(self): log.debug("Generating CNCJob from Geometry ...")