From d843cf7da7bb482eda9389903eae3932cdc1f3f9 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 8 Dec 2020 00:14:49 +0200 Subject: [PATCH] - Geometry object - work in upgrade of the data structure --- CHANGELOG.md | 4 + appDatabase.py | 16 +- appEditors/AppGeoEditor.py | 2 +- appGUI/preferences/PreferencesUIManager.py | 2 +- appObjects/AppObject.py | 2 +- appObjects/FlatCAMExcellon.py | 4 +- appObjects/FlatCAMGeometry.py | 22 +- appObjects/FlatCAMGerber.py | 14 +- appParsers/ParseHPGL2.py | 2 +- appTools/ToolCutOut.py | 6 +- appTools/ToolDrilling.py | 3 +- appTools/ToolFollow.py | 16 +- appTools/ToolIsolation.py | 6 +- appTools/ToolMilling.py | 367 ++++++++------------- appTools/ToolNCC.py | 8 +- appTools/ToolPaint.py | 8 +- appTools/ToolPanelize.py | 4 +- app_Main.py | 14 +- camlib.py | 10 +- defaults.py | 86 ++--- tclCommands/TclCommandCncjob.py | 2 +- 21 files changed, 247 insertions(+), 351 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7104c6de..f1259c92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta ================================================= +7.12.2020 + +- Geometry object - work in upgrade of the data structure + 6.12.2020 - Milling Tool - working on the data structure diff --git a/appDatabase.py b/appDatabase.py index db7fd055..48aeb13d 100644 --- a/appDatabase.py +++ b/appDatabase.py @@ -1395,7 +1395,7 @@ class ToolsDB2(QtWidgets.QWidget): { tool_id: { 'name': 'new_tool' - 'tooldia': self.app.defaults["geometry_cnctooldia"] + 'tooldia': self.app.defaults["tools_mill_tooldia"] 'offset': 'Path' 'offset_value': 0.0 'type': 'Rough', @@ -2041,11 +2041,11 @@ class ToolsDB2(QtWidgets.QWidget): new_name = "new_tool_1" dict_elem = {'name': new_name} - if type(self.app.defaults["geometry_cnctooldia"]) == float: - dict_elem['tooldia'] = self.app.defaults["geometry_cnctooldia"] + if type(self.app.defaults["tools_mill_tooldia"]) == float: + dict_elem['tooldia'] = self.app.defaults["tools_mill_tooldia"] else: try: - tools_string = self.app.defaults["geometry_cnctooldia"].split(",") + tools_string = self.app.defaults["tools_mill_tooldia"].split(",") tools_diameters = [eval(a) for a in tools_string if a != ''] dict_elem['tooldia'] = tools_diameters[0] if tools_diameters else 0.0 except Exception as e: @@ -2751,7 +2751,7 @@ class ToolsDB2(QtWidgets.QWidget): # { # tool_id: { # 'name': 'new_tool' -# 'tooldia': self.app.defaults["geometry_cnctooldia"] +# 'tooldia': self.app.defaults["tools_mill_tooldia"] # 'offset': 'Path' # 'offset_value': 0.0 # 'type': 'Rough', @@ -3288,11 +3288,11 @@ class ToolsDB2(QtWidgets.QWidget): # # dict_elem = {} # dict_elem['name'] = 'new_tool' -# if type(self.app.defaults["geometry_cnctooldia"]) == float: -# dict_elem['tooldia'] = self.app.defaults["geometry_cnctooldia"] +# if type(self.app.defaults["tools_mill_tooldia"]) == float: +# dict_elem['tooldia'] = self.app.defaults["tools_mill_tooldia"] # else: # try: -# tools_string = self.app.defaults["geometry_cnctooldia"].split(",") +# tools_string = self.app.defaults["tools_mill_tooldia"].split(",") # tools_diameters = [eval(a) for a in tools_string if a != ''] # dict_elem['tooldia'] = tools_diameters[0] if tools_diameters else 0.0 # except Exception as e: diff --git a/appEditors/AppGeoEditor.py b/appEditors/AppGeoEditor.py index 2798a0b8..4345a932 100644 --- a/appEditors/AppGeoEditor.py +++ b/appEditors/AppGeoEditor.py @@ -5279,7 +5279,7 @@ class AppGeoEditor(QtCore.QObject): def update_options(self, obj): if self.paint_tooldia: - obj.options['cnctooldia'] = deepcopy(str(self.paint_tooldia)) + obj.options['tools_mill_tooldia'] = deepcopy(str(self.paint_tooldia)) self.paint_tooldia = None return True else: diff --git a/appGUI/preferences/PreferencesUIManager.py b/appGUI/preferences/PreferencesUIManager.py index 9c167349..175112e5 100644 --- a/appGUI/preferences/PreferencesUIManager.py +++ b/appGUI/preferences/PreferencesUIManager.py @@ -243,7 +243,7 @@ class PreferencesUIManager: "geometry_plot": self.ui.geometry_defaults_form.geometry_gen_group.plot_cb, "geometry_multicolored": self.ui.geometry_defaults_form.geometry_gen_group.multicolored_cb, "geometry_circle_steps": self.ui.geometry_defaults_form.geometry_gen_group.circle_steps_entry, - "geometry_cnctooldia": self.ui.geometry_defaults_form.geometry_gen_group.cnctooldia_entry, + "tools_mill_tooldia": self.ui.geometry_defaults_form.geometry_gen_group.cnctooldia_entry, "geometry_merge_fuse_tools": self.ui.geometry_defaults_form.geometry_gen_group.fuse_tools_cb, "geometry_plot_line": self.ui.geometry_defaults_form.geometry_gen_group.line_color_entry, "geometry_optimization_type": self.ui.geometry_defaults_form.geometry_gen_group.opt_algorithm_radio, diff --git a/appObjects/AppObject.py b/appObjects/AppObject.py index cd03cce9..9c6cab82 100644 --- a/appObjects/AppObject.py +++ b/appObjects/AppObject.py @@ -261,7 +261,7 @@ class AppObject(QtCore.QObject): new_obj.tools = { 1: { - 'tooldia': float(app.defaults["geometry_cnctooldia"]), + 'tooldia': float(app.defaults["tools_mill_tooldia"]), 'offset': 'Path', 'offset_value': 0.0, 'type': 'Rough', diff --git a/appObjects/FlatCAMExcellon.py b/appObjects/FlatCAMExcellon.py index 56ce16ac..7cdf93c6 100644 --- a/appObjects/FlatCAMExcellon.py +++ b/appObjects/FlatCAMExcellon.py @@ -910,7 +910,7 @@ class ExcellonObject(FlatCAMObj, Excellon): geo_obj.options['Tools_in_use'] = tool_table_items geo_obj.options['type'] = 'Excellon Geometry' - geo_obj.options["cnctooldia"] = str(tooldia) + geo_obj.options["tools_mill_tooldia"] = str(tooldia) geo_obj.options["multidepth"] = app_obj.defaults["geometry_multidepth"] geo_obj.solid_geometry = [] @@ -1010,7 +1010,7 @@ class ExcellonObject(FlatCAMObj, Excellon): geo_obj.options['Tools_in_use'] = tool_table_items geo_obj.options['type'] = 'Excellon Geometry' - geo_obj.options["cnctooldia"] = str(tooldia) + geo_obj.options["tools_mill_tooldia"] = str(tooldia) geo_obj.options["multidepth"] = app_obj.defaults["geometry_multidepth"] geo_obj.solid_geometry = [] diff --git a/appObjects/FlatCAMGeometry.py b/appObjects/FlatCAMGeometry.py index 44100566..5b89fa9b 100644 --- a/appObjects/FlatCAMGeometry.py +++ b/appObjects/FlatCAMGeometry.py @@ -90,14 +90,14 @@ class GeometryObject(FlatCAMObj, Geometry): "feedrate_probe": 3.0, }) - if "cnctooldia" not in self.options: - if type(self.app.defaults["geometry_cnctooldia"]) == float: - self.options["cnctooldia"] = self.app.defaults["geometry_cnctooldia"] + if "tools_mill_tooldia" not in self.options: + if type(self.app.defaults["tools_mill_tooldia"]) == float: + self.options["tools_mill_tooldia"] = self.app.defaults["tools_mill_tooldia"] else: try: - tools_string = self.app.defaults["geometry_cnctooldia"].split(",") + tools_string = self.app.defaults["tools_mill_tooldia"].split(",") tools_diameters = [eval(a) for a in tools_string if a != ''] - self.options["cnctooldia"] = tools_diameters[0] if tools_diameters else 0.0 + self.options["tools_mill_tooldia"] = tools_diameters[0] if tools_diameters else 0.0 except Exception as e: log.debug("FlatCAMObj.GeometryObject.init() --> %s" % str(e)) @@ -471,7 +471,7 @@ class GeometryObject(FlatCAMObj, Geometry): # "toolchangez": self.ui.toolchangez_entry, # "endz": self.ui.endz_entry, # "endxy": self.ui.endxy_entry, - # "cnctooldia": self.ui.addtool_entry, + # "tools_mill_tooldia": self.ui.addtool_entry, # "area_exclusion": self.ui.exclusion_cb, # "area_shape": self.ui.area_shape_radio, # "area_strategy": self.ui.strategy_radio, @@ -533,11 +533,11 @@ class GeometryObject(FlatCAMObj, Geometry): if def_key == opt_key: self.default_data[def_key] = deepcopy(opt_val) - if type(self.options["cnctooldia"]) == float: - tools_list = [self.options["cnctooldia"]] + if type(self.options["tools_mill_tooldia"]) == float: + tools_list = [self.options["tools_mill_tooldia"]] else: try: - temp_tools = self.options["cnctooldia"].split(",") + temp_tools = self.options["tools_mill_tooldia"].split(",") tools_list = [ float(eval(dia)) for dia in temp_tools if dia != '' ] @@ -2595,7 +2595,7 @@ class GeometryObject(FlatCAMObj, Geometry): :return: None """ - tooldia = dia if dia else float(self.options["cnctooldia"]) + tooldia = dia if dia else float(self.options["tools_mill_tooldia"]) outname = outname if outname is not None else self.options["name"] z_cut = z_cut if z_cut is not None else float(self.options["cutz"]) @@ -2974,7 +2974,7 @@ class GeometryObject(FlatCAMObj, Geometry): self.options['feedrate_z'] = float(self.options['feedrate_z']) * factor self.options['feedrate_rapid'] = float(self.options['feedrate_rapid']) * factor self.options['endz'] = float(self.options['endz']) * factor - # self.options['cnctooldia'] *= factor + # self.options['tools_mill_tooldia'] *= factor # self.options['painttooldia'] *= factor # self.options['paintmargin'] *= factor # self.options['paintoverlap'] *= factor diff --git a/appObjects/FlatCAMGerber.py b/appObjects/FlatCAMGerber.py index b6834710..844133f2 100644 --- a/appObjects/FlatCAMGerber.py +++ b/appObjects/FlatCAMGerber.py @@ -491,7 +491,7 @@ class GerberObject(FlatCAMObj, Gerber): def iso_init(geo_obj, app_obj): # Propagate options - geo_obj.options["cnctooldia"] = str(dia) + geo_obj.options["tools_mill_tooldia"] = str(dia) geo_obj.tool_type = self.app.defaults["tools_iso_tool_type"] geo_obj.solid_geometry = [] @@ -625,7 +625,7 @@ class GerberObject(FlatCAMObj, Gerber): def iso_init(geo_obj, app_obj): # Propagate options - geo_obj.options["cnctooldia"] = str(dia) + geo_obj.options["tools_mill_tooldia"] = str(dia) geo_obj.tool_type = self.app.defaults["tools_iso_tool_type"] # if milling type is climb then the move is counter-clockwise around features @@ -774,11 +774,11 @@ class GerberObject(FlatCAMObj, Gerber): follow_name = outname def follow_init(new_obj, app_obj): - if type(app_obj.defaults["geometry_cnctooldia"]) == float: - tools_list = [app_obj.defaults["geometry_cnctooldia"]] + if type(app_obj.defaults["tools_mill_tooldia"]) == float: + tools_list = [app_obj.defaults["tools_mill_tooldia"]] else: try: - temp_tools = app_obj.defaults["geometry_cnctooldia"].split(",") + temp_tools = app_obj.defaults["tools_mill_tooldia"].split(",") tools_list = [ float(eval(dia)) for dia in temp_tools if dia != '' ] @@ -788,10 +788,10 @@ class GerberObject(FlatCAMObj, Gerber): # Propagate options new_obj.multigeo = True - # new_obj.options["cnctooldia"] = str(self.app.defaults["tools_iso_tooldia"]) + # new_obj.options["tools_mill_tooldia"] = str(self.app.defaults["tools_iso_tooldia"]) new_obj.solid_geometry = deepcopy(self.follow_geometry) - new_obj.options["cnctooldia"] = app_obj.defaults["geometry_cnctooldia"] + new_obj.options["tools_mill_tooldia"] = app_obj.defaults["tools_mill_tooldia"] # store here the default data for Geometry Data default_data = {} diff --git a/appParsers/ParseHPGL2.py b/appParsers/ParseHPGL2.py index 1a73513c..80750e69 100644 --- a/appParsers/ParseHPGL2.py +++ b/appParsers/ParseHPGL2.py @@ -237,7 +237,7 @@ class HPGL2: 'tooldia': float('%.*f' % ( self.decimals, - float(self.app.defaults['geometry_cnctooldia']) + float(self.app.defaults['tools_mill_tooldia']) ) ), 'offset': 'Path', diff --git a/appTools/ToolCutOut.py b/appTools/ToolCutOut.py index d737432e..0007c0ff 100644 --- a/appTools/ToolCutOut.py +++ b/appTools/ToolCutOut.py @@ -922,7 +922,7 @@ class CutOut(AppTool): geo_obj.options['xmax'] = xmax geo_obj.options['ymax'] = ymax - geo_obj.options['cnctooldia'] = str(dia) + geo_obj.options['tools_mill_tooldia'] = str(dia) geo_obj.options['cutz'] = self.ui.cutz_entry.get_value() geo_obj.options['multidepth'] = self.ui.mpass_cb.get_value() geo_obj.options['depthperpass'] = self.ui.maxdepth_entry.get_value() @@ -1300,7 +1300,7 @@ class CutOut(AppTool): geo_obj.options['xmax'] = xmax geo_obj.options['ymax'] = ymax - geo_obj.options['cnctooldia'] = str(dia) + geo_obj.options['tools_mill_tooldia'] = str(dia) geo_obj.options['cutz'] = self.ui.cutz_entry.get_value() geo_obj.options['multidepth'] = self.ui.mpass_cb.get_value() geo_obj.options['depthperpass'] = self.ui.maxdepth_entry.get_value() @@ -1666,7 +1666,7 @@ class CutOut(AppTool): solid_geo.append(poly.exterior) geo_obj.solid_geometry = deepcopy(solid_geo) - geo_obj.options['cnctooldia'] = str(dia) + geo_obj.options['tools_mill_tooldia'] = str(dia) geo_obj.options['cutz'] = self.ui.cutz_entry.get_value() geo_obj.options['multidepth'] = self.ui.mpass_cb.get_value() geo_obj.options['depthperpass'] = self.ui.maxdepth_entry.get_value() diff --git a/appTools/ToolDrilling.py b/appTools/ToolDrilling.py index f52aac7a..c8463547 100644 --- a/appTools/ToolDrilling.py +++ b/appTools/ToolDrilling.py @@ -327,8 +327,7 @@ class ToolDrilling(AppTool, Excellon): # add tooltips for it in range(self.ui.pp_excellon_name_cb.count()): - self.ui.pp_excellon_name_cb.setItemData( - it, self.ui.pp_excellon_name_cb.itemText(it), QtCore.Qt.ToolTipRole) + self.ui.pp_excellon_name_cb.setItemData(it, self.ui.pp_excellon_name_cb.itemText(it), QtCore.Qt.ToolTipRole) app_mode = self.app.defaults["global_app_level"] # Show/Hide Advanced Options diff --git a/appTools/ToolFollow.py b/appTools/ToolFollow.py index 4cfb4034..770b3d74 100644 --- a/appTools/ToolFollow.py +++ b/appTools/ToolFollow.py @@ -215,11 +215,11 @@ class ToolFollow(AppTool, Gerber): """ def follow_init(new_obj, app_obj): - if type(app_obj.defaults["geometry_cnctooldia"]) == float: - tools_list = [app_obj.defaults["geometry_cnctooldia"]] + if type(app_obj.defaults["tools_mill_tooldia"]) == float: + tools_list = [app_obj.defaults["tools_mill_tooldia"]] else: try: - temp_tools = app_obj.defaults["geometry_cnctooldia"].split(",") + temp_tools = app_obj.defaults["tools_mill_tooldia"].split(",") tools_list = [ float(eval(dia)) for dia in temp_tools if dia != '' ] @@ -249,7 +249,7 @@ class ToolFollow(AppTool, Gerber): ] # Propagate options - new_obj.options["cnctooldia"] = app_obj.defaults["geometry_cnctooldia"] + new_obj.options["tools_mill_tooldia"] = app_obj.defaults["tools_mill_tooldia"] new_obj.solid_geometry = follow_geo new_obj.tools = { 1: { @@ -283,11 +283,11 @@ class ToolFollow(AppTool, Gerber): def follow_init(new_obj, app_obj): new_obj.multigeo = True - if type(app_obj.defaults["geometry_cnctooldia"]) == float: - tools_list = [app_obj.defaults["geometry_cnctooldia"]] + if type(app_obj.defaults["tools_mill_tooldia"]) == float: + tools_list = [app_obj.defaults["tools_mill_tooldia"]] else: try: - temp_tools = app_obj.defaults["geometry_cnctooldia"].split(",") + temp_tools = app_obj.defaults["tools_mill_tooldia"].split(",") tools_list = [ float(eval(dia)) for dia in temp_tools if dia != '' ] @@ -307,7 +307,7 @@ class ToolFollow(AppTool, Gerber): new_data[oname] = app_obj.options[opt_key] # Propagate options - new_obj.options["cnctooldia"] = app_obj.defaults["geometry_cnctooldia"] + new_obj.options["tools_mill_tooldia"] = app_obj.defaults["tools_mill_tooldia"] target_geo = unary_union(followed_obj.follow_geometry) area_follow = target_geo.intersection(deepcopy(unary_union(self.sel_rect))) diff --git a/appTools/ToolIsolation.py b/appTools/ToolIsolation.py index eece7006..2958946e 100644 --- a/appTools/ToolIsolation.py +++ b/appTools/ToolIsolation.py @@ -1694,7 +1694,7 @@ class ToolIsolation(AppTool, Gerber): def iso_init(geo_obj, fc_obj): # Propagate options - geo_obj.options["cnctooldia"] = str(tool_dia) + geo_obj.options["tools_mill_tooldia"] = str(tool_dia) geo_obj.solid_geometry = deepcopy(new_solid_geo) # ############################################################ @@ -1895,7 +1895,7 @@ class ToolIsolation(AppTool, Gerber): tools_storage.pop(tool, None) def iso_init(geo_obj, app_obj): - geo_obj.options["cnctooldia"] = str(tool_dia) + geo_obj.options["tools_mill_tooldia"] = str(tool_dia) geo_obj.tools = dict(tools_storage) geo_obj.solid_geometry = total_solid_geometry @@ -2083,7 +2083,7 @@ class ToolIsolation(AppTool, Gerber): tools_storage.pop(tool, None) def iso_init(geo_obj, app_obj): - geo_obj.options["cnctooldia"] = str(tool_dia) + geo_obj.options["tools_mill_tooldia"] = str(tool_dia) geo_obj.tools = dict(tools_storage) geo_obj.solid_geometry = total_solid_geometry diff --git a/appTools/ToolMilling.py b/appTools/ToolMilling.py index 10b7cb3c..127084be 100644 --- a/appTools/ToolMilling.py +++ b/appTools/ToolMilling.py @@ -132,9 +132,7 @@ class ToolMilling(AppTool, Excellon): self.poly_sel_disconnect_flag = False # updated in the self.set_tool_ui() - self.form_fields = { - "tools_mill_milling_type": self.ui.milling_type_radio, - } + self.form_fields = {} self.old_tool_dia = None self.poly_drawn = False @@ -284,59 +282,62 @@ class ToolMilling(AppTool, Excellon): self.form_fields.update({ # Excellon properties - "milling_type": self.ui.milling_type_radio, - "milling_dia": self.ui.mill_dia_entry, + "tools_mill_milling_type": self.ui.milling_type_radio, + "tools_mill_milling_dia": self.ui.mill_dia_entry, # Geometry properties - "cnctooldia": self.ui.addtool_entry, + "tools_mill_tooldia": self.ui.addtool_entry, "tools_mill_tool_type": self.ui.geo_tools_table.cellWidget(self.current_row, 2), - "offset_type": self.ui.offset_type_combo, - "offset": self.ui.offset_entry, + "tools_mill_offset_type": self.ui.offset_type_combo, + "tools_mill_offset": self.ui.offset_entry, - "job_type": self.ui.job_type_combo, - "polish_margin": self.ui.polish_margin_entry, - "polish_overlap": self.ui.polish_over_entry, - "polish_method": self.ui.polish_method_combo, + "tools_mill_job_type": self.ui.job_type_combo, + "tools_mill_polish_margin": self.ui.polish_margin_entry, + "tools_mill_polish_overlap": self.ui.polish_over_entry, + "tools_mill_polish_method": self.ui.polish_method_combo, - "vtipdia": self.ui.tipdia_entry, - "vtipangle": self.ui.tipangle_entry, + "tools_mill_vtipdia": self.ui.tipdia_entry, + "tools_mill_vtipangle": self.ui.tipangle_entry, - "cutz": self.ui.cutz_entry, - "multidepth": self.ui.mpass_cb, - "depthperpass": self.ui.maxdepth_entry, + "tools_mill_cutz": self.ui.cutz_entry, + "tools_mill_multidepth": self.ui.mpass_cb, + "tools_mill_depthperpass": self.ui.maxdepth_entry, - "travelz": self.ui.travelz_entry, - "feedrate": self.ui.xyfeedrate_entry, - "feedrate_z": self.ui.feedrate_z_entry, - "feedrate_rapid": self.ui.feedrate_rapid_entry, + "tools_mill_travelz": self.ui.travelz_entry, + "tools_mill_feedrate": self.ui.xyfeedrate_entry, + "tools_mill_feedrate_z": self.ui.feedrate_z_entry, + "tools_mill_feedrate_rapid": self.ui.feedrate_rapid_entry, - "extracut": self.ui.extracut_cb, - "extracut_length": self.ui.e_cut_entry, + "tools_mill_extracut": self.ui.extracut_cb, + "tools_mill_extracut_length": self.ui.e_cut_entry, - "spindlespeed": self.ui.spindlespeed_entry, - "dwell": self.ui.dwell_cb, - "dwelltime": self.ui.dwelltime_entry, + "tools_mill_spindlespeed": self.ui.spindlespeed_entry, + "tools_mill_dwell": self.ui.dwell_cb, + "tools_mill_dwelltime": self.ui.dwelltime_entry, - "toolchange": self.ui.toolchange_cb, - "toolchangez": self.ui.toolchangez_entry, + "tools_mill_toolchange": self.ui.toolchange_cb, + "tools_mill_toolchangez": self.ui.toolchangez_entry, - "endz": self.ui.endz_entry, - "endxy": self.ui.endxy_entry, + "tools_mill_endz": self.ui.endz_entry, + "tools_mill_endxy": self.ui.endxy_entry, - "z_pdepth": self.ui.pdepth_entry, - "feedrate_probe": self.ui.feedrate_probe_entry, - "ppname_g": self.ui.pp_geo_name_cb, + "tools_mill_z_pdepth": self.ui.pdepth_entry, + "tools_mill_feedrate_probe": self.ui.feedrate_probe_entry, + "tools_mill_ppname_g": self.ui.pp_geo_name_cb, # "gcode_type": self.ui.excellon_gcode_type_radio, - "area_exclusion": self.ui.exclusion_cb, - "area_shape": self.ui.area_shape_radio, - "area_strategy": self.ui.strategy_radio, - "area_overz": self.ui.over_z_entry, + "tools_mill_area_exclusion": self.ui.exclusion_cb, + "tools_mill_area_shape": self.ui.area_shape_radio, + "tools_mill_area_strategy": self.ui.strategy_radio, + "tools_mill_area_overz": self.ui.over_z_entry, }) # populate Geometry (milling) preprocessor combobox list for name in list(self.app.preprocessors.keys()): self.ui.pp_geo_name_cb.addItem(name) + # and add ToolTips (useful when names are too long) + for it in range(self.ui.pp_geo_name_cb.count()): + self.ui.pp_geo_name_cb.setItemData( it, self.ui.pp_geo_name_cb.itemText(it), QtCore.Qt.ToolTipRole) # Fill form fields self.to_form() @@ -379,62 +380,62 @@ class ToolMilling(AppTool, Excellon): "solid": False, "multicolored": False, - "tooldia": 0.1, + "tools_mill_tooldia": 0.1, - "offset_type": "Path", - "offset": 0.0, + "tools_mill_offset_type": "Path", + "tools_mill_offset": 0.0, - "milling_type": "drills", - "milling_dia": 0.04, + "tools_mill_milling_type": "drills", + "tools_mill_milling_dia": 0.04, - "job_type": 'Rough', - "polish_margin": 0.0, - "polish_overlap": 10, - "polish_method": _("Standard"), + "tools_mill_job_type": 'Rough', + "tools_mill_polish_margin": 0.0, + "tools_mill_polish_overlap": 10, + "tools_mill_polish_method": _("Standard"), "tools_mill_tool_type": 'C1', - "vtipdia": 0.1, - "vtipangle": 30, + "tools_mill_vtipdia": 0.1, + "tools_mill_vtipangle": 30, - "cutz": -0.1, - "multidepth": False, - "depthperpass": 0.7, + "tools_mill_cutz": -0.1, + "tools_mill_multidepth": False, + "tools_mill_depthperpass": 0.7, - "travelz": 0.1, - "feedrate": self.app.defaults["geometry_feedrate"], - "feedrate_z": 5.0, - "feedrate_rapid": 5.0, + "tools_mill_travelz": 0.1, + "tools_mill_feedrate": self.app.defaults["geometry_feedrate"], + "tools_mill_feedrate_z": 5.0, + "tools_mill_feedrate_rapid": 5.0, - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": self.app.defaults["geometry_extracut_length"], + "tools_mill_extracut": self.app.defaults["geometry_extracut"], + "tools_mill_extracut_length": self.app.defaults["geometry_extracut_length"], - "spindlespeed": 0, - "dwell": True, - "dwelltime": 1000, + "tools_mill_spindlespeed": 0, + "tools_mill_dwell": True, + "tools_mill_dwelltime": 1000, - "toolchange": False, - "toolchangez": 1.0, - "toolchangexy": "0.0, 0.0", + "tools_mill_toolchange": False, + "tools_mill_toolchangez": 1.0, + "tools_mill_toolchangexy": "0.0, 0.0", - "endz": 2.0, - "endxy": '', + "tools_mill_endz": 2.0, + "tools_mill_endxy": '', - "startz": None, + "tools_mill_startz": None, - "z_pdepth": -0.02, - "feedrate_probe": 3.0, - "ppname_g": self.app.defaults["geometry_ppname_g"], - "optimization_type": "B", + "tools_mill_z_pdepth": -0.02, + "tools_mill_feedrate_probe": 3.0, + "tools_mill_ppname_g": self.app.defaults["geometry_ppname_g"], + "tools_mill_optimization_type": "B", } # fill in self.default_data values from self.options - for opt_key, opt_val in self.app.options.items(): - if opt_key.find('tools_mill_') == 0: - self.default_data[opt_key] = deepcopy(opt_val) for opt_key, opt_val in self.app.options.items(): if opt_key.find('geometry_') == 0: oname = opt_key[len('geometry_'):] self.default_data[oname] = deepcopy(opt_val) + for opt_key, opt_val in self.app.options.items(): + if opt_key.find('tools_') == 0: + self.default_data[opt_key] = deepcopy(opt_val) self.obj_name = "" self.target_obj = None @@ -450,7 +451,7 @@ class ToolMilling(AppTool, Excellon): # ######################################## self.ui.target_radio.set_value("geo") - self.ui.addtool_entry.set_value(self.app.defaults["geometry_cnctooldia"]) + self.ui.addtool_entry.set_value(self.app.defaults["tools_mill_tooldia"]) self.on_object_changed() if self.target_obj: @@ -1337,7 +1338,7 @@ class ToolMilling(AppTool, Excellon): for k in self.form_fields: for option in storage: if option.startswith('tools_mill_'): - if k == option.replace('tools_mill_', ''): + if k == option: try: self.form_fields[k].set_value(storage[option]) except Exception: @@ -1370,8 +1371,9 @@ class ToolMilling(AppTool, Excellon): for storage_key in dict_storage: if storage_key in list(self.form_fields.keys()) and storage_key not in \ - ["toolchange", "toolchangez", "endxy", "endz", "ppname_g", "area_exclusion", - "area_shape", "area_strategy", "area_overz"]: + ["tools_mill_toolchange", "tools_mill_toolchangez", "tools_mill_endxy", "tools_mill_endz", + "tools_mill_ppname_g", "tools_mill_area_exclusion", + "tools_mill_area_shape", "tools_mill_area_strategy", "tools_mill_area_overz"]: try: # widgets in the tools table if storage_key == 'tools_mill_tool_type': @@ -1417,8 +1419,9 @@ class ToolMilling(AppTool, Excellon): self.current_row = t_table.currentRow() # those are the general parameters that are common to all tools - general_parameters = ["toolchange", "toolchangez", "endxy", "endz", "ppname_g", "area_exclusion", - "area_shape", "area_strategy", "area_overz"] + general_parameters = ["tools_mill_toolchange", "tools_mill_toolchangez", "tools_mill_endxy", "tools_mill_endz", + "tools_mill_ppname_g", "tools_mill_area_exclusion", + "tools_mill_area_shape", "tools_mill_area_strategy", "tools_mill_area_overz"] # update the tool specific parameters rows = sorted(set(index.row() for index in used_tools_table.selectedIndexes())) @@ -2118,12 +2121,12 @@ class ToolMilling(AppTool, Excellon): tooldia = float(self.options["tooldia"]) # Sort tools by diameter. items() -> [('name', diameter), ...] - # sorted_tools = sorted(list(self.tools.items()), key=lambda tl: tl[1]) # no longer works in Python3 + sorted_tools = sorted(list(self.tools.items()), key=lambda tl: tl[1]['tooldia']) - sort = [] - for k, v in self.tools.items(): - sort.append((k, v.get('tooldia'))) - sorted_tools = sorted(sort, key=lambda t1: t1[1]) + # sort = [] + # for k, v in self.tools.items(): + # sort.append((k, v.get('tooldia'))) + # sorted_tools = sorted(sort, key=lambda t1: t1[1]) if tools == "all": tools = [i[0] for i in sorted_tools] # List if ordered tool names. @@ -2168,7 +2171,7 @@ class ToolMilling(AppTool, Excellon): geo_obj.options['Tools_in_use'] = tool_table_items geo_obj.options['type'] = 'Excellon Geometry' - geo_obj.options["cnctooldia"] = str(tooldia) + geo_obj.options["tools_mill_tooldia"] = str(tooldia) geo_obj.options["multidepth"] = self.options["multidepth"] geo_obj.solid_geometry = [] @@ -2234,12 +2237,12 @@ class ToolMilling(AppTool, Excellon): tooldia = float(self.options["slot_tooldia"]) # Sort tools by diameter. items() -> [('name', diameter), ...] - # sorted_tools = sorted(list(self.tools.items()), key=lambda tl: tl[1]) # no longer works in Python3 - - sort = [] - for k, v in self.tools.items(): - sort.append((k, v.get('tooldia'))) - sorted_tools = sorted(sort, key=lambda t1: t1[1]) + sorted_tools = sorted(list(self.tools.items()), key=lambda tl: tl[1]['tooldia']) + # + # sort = [] + # for k, v in self.tools.items(): + # sort.append((k, v.get('tooldia'))) + # sorted_tools = sorted(sort, key=lambda t1: t1[1]) if tools == "all": tools = [i[0] for i in sorted_tools] # List if ordered tool names. @@ -2272,7 +2275,7 @@ class ToolMilling(AppTool, Excellon): geo_obj.options['Tools_in_use'] = tool_table_items geo_obj.options['type'] = 'Excellon Geometry' - geo_obj.options["cnctooldia"] = str(tooldia) + geo_obj.options["tools_mill_tooldia"] = str(tooldia) geo_obj.options["multidepth"] = self.options["multidepth"] geo_obj.solid_geometry = [] @@ -2558,11 +2561,12 @@ class ToolMilling(AppTool, Excellon): job_obj.cnc_tools.clear() job_obj.options['Tools_in_use'] = tools_in_use + job_obj.segx = segx if segx else float(self.app.defaults["geometry_segx"]) job_obj.segy = segy if segy else float(self.app.defaults["geometry_segy"]) - job_obj.z_pdepth = float(self.app.defaults["geometry_z_pdepth"]) - job_obj.feedrate_probe = float(self.app.defaults["geometry_feedrate_probe"]) + job_obj.z_pdepth = float(self.app.defaults["tools_mill_z_pdepth"]) + job_obj.feedrate_probe = float(self.app.defaults["tools_mill_feedrate_probe"]) total_gcode = '' for tooluid_key in list(tools_dict.keys()): @@ -2574,11 +2578,15 @@ class ToolMilling(AppTool, Excellon): 'tooldia': tooldia_val }) - if dia_cnc_dict['offset'] == 'in': + if "optimization_type" not in tools_dict[tooluid_key]['data']: + def_optimization_type = self.app.defaults["tools_mill_optimization_type"] + tools_dict[tooluid_key]['data']["tools_mill_optimization_type"] = def_optimization_type + + if dia_cnc_dict['data']['tools_mill_offset'] == 'in': tool_offset = -dia_cnc_dict['tooldia'] / 2 - elif dia_cnc_dict['offset'].lower() == 'out': + elif dia_cnc_dict['data']['tools_mill_offset'].lower() == 'out': tool_offset = dia_cnc_dict['tooldia'] / 2 - elif dia_cnc_dict['offset'].lower() == 'custom': + elif dia_cnc_dict['data']['tools_mill_offset'].lower() == 'custom': try: offset_value = float(self.ui.offset_entry.get_value()) except ValueError: @@ -2603,27 +2611,27 @@ class ToolMilling(AppTool, Excellon): 'offset_value': tool_offset }) - z_cut = tools_dict[tooluid_key]['data']["cutz"] - z_move = tools_dict[tooluid_key]['data']["travelz"] - feedrate = tools_dict[tooluid_key]['data']["feedrate"] - feedrate_z = tools_dict[tooluid_key]['data']["feedrate_z"] - feedrate_rapid = tools_dict[tooluid_key]['data']["feedrate_rapid"] - multidepth = tools_dict[tooluid_key]['data']["multidepth"] - extracut = tools_dict[tooluid_key]['data']["extracut"] - extracut_length = tools_dict[tooluid_key]['data']["extracut_length"] - depthpercut = tools_dict[tooluid_key]['data']["depthperpass"] - toolchange = tools_dict[tooluid_key]['data']["toolchange"] - toolchangez = tools_dict[tooluid_key]['data']["toolchangez"] - toolchangexy = tools_dict[tooluid_key]['data']["toolchangexy"] - startz = tools_dict[tooluid_key]['data']["startz"] - endz = tools_dict[tooluid_key]['data']["endz"] - endxy = self.options["endxy"] - spindlespeed = tools_dict[tooluid_key]['data']["spindlespeed"] - dwell = tools_dict[tooluid_key]['data']["dwell"] - dwelltime = tools_dict[tooluid_key]['data']["dwelltime"] - pp_geometry_name = tools_dict[tooluid_key]['data']["ppname_g"] + z_cut = tools_dict[tooluid_key]['data']["tools_mill_cutz"] + z_move = tools_dict[tooluid_key]['data']["tools_mill_travelz"] + feedrate = tools_dict[tooluid_key]['data']["tools_mill_feedrate"] + feedrate_z = tools_dict[tooluid_key]['data']["tools_mill_feedrate_z"] + feedrate_rapid = tools_dict[tooluid_key]['data']["tools_mill_feedrate_rapid"] + multidepth = tools_dict[tooluid_key]['data']["tools_mill_multidepth"] + extracut = tools_dict[tooluid_key]['data']["tools_mill_extracut"] + extracut_length = tools_dict[tooluid_key]['data']["tools_mill_extracut_length"] + depthpercut = tools_dict[tooluid_key]['data']["tools_mill_depthperpass"] + toolchange = tools_dict[tooluid_key]['data']["tools_mill_toolchange"] + toolchangez = tools_dict[tooluid_key]['data']["tools_mill_toolchangez"] + toolchangexy = tools_dict[tooluid_key]['data']["tools_mill_toolchangexy"] + startz = tools_dict[tooluid_key]['data']["tools_mill_startz"] + endz = tools_dict[tooluid_key]['data']["tools_mill_endz"] + endxy = self.options["tools_mill_endxy"] + spindlespeed = tools_dict[tooluid_key]['data']["tools_mill_spindlespeed"] + dwell = tools_dict[tooluid_key]['data']["tools_mill_dwell"] + dwelltime = tools_dict[tooluid_key]['data']["tools_mill_dwelltime"] + pp_geometry_name = tools_dict[tooluid_key]['data']["tools_mill_ppname_g"] - spindledir = self.app.defaults['geometry_spindledir'] + spindledir = self.app.defaults['tools_mill__spindledir'] tool_solid_geometry = self.solid_geometry job_obj.coords_decimals = self.app.defaults["cncjob_coords_decimals"] @@ -2712,8 +2720,8 @@ class ToolMilling(AppTool, Excellon): new_obj.segx = segx if segx else float(self.app.defaults["geometry_segx"]) new_obj.segy = segy if segy else float(self.app.defaults["geometry_segy"]) - new_obj.z_pdepth = float(self.app.defaults["geometry_z_pdepth"]) - new_obj.feedrate_probe = float(self.app.defaults["geometry_feedrate_probe"]) + new_obj.z_pdepth = float(self.app.defaults["tools_mill_z_pdepth"]) + new_obj.feedrate_probe = float(self.app.defaults["tools_mill_feedrate_probe"]) # make sure that trying to make a CNCJob from an empty file is not creating an app crash if not self.target_obj.solid_geometry: @@ -2737,8 +2745,8 @@ class ToolMilling(AppTool, Excellon): }) if "optimization_type" not in tools_dict[tooluid_key]['data']: - def_optimization_type = self.app.defaults["geometry_optimization_type"] - tools_dict[tooluid_key]['data']["optimization_type"] = def_optimization_type + def_optimization_type = self.app.defaults["tools_mill_optimization_type"] + tools_dict[tooluid_key]['data']["tools_mill_optimization_type"] = def_optimization_type # ##################################################################################################### # ############################ COMMON Parameters ###################################################### @@ -2768,7 +2776,7 @@ class ToolMilling(AppTool, Excellon): tools_dict[tooluid_key]['data']['ppname_g'] = self.ui.pp_geo_name_cb.get_value() # Offset calculation - offset_type = dia_cnc_dict['offset'].lower() + offset_type = dia_cnc_dict['tools_mill_offset_type'].lower() if offset_type == 'in': tool_offset = -tooldia_val / 2 elif offset_type == 'out': @@ -2966,121 +2974,6 @@ class ToolMilling(AppTool, Excellon): self.ui.endz_label.show() self.ui.endz_entry.show() - def on_cnc_button_click(self): - self.obj_name = self.ui.object_combo.currentText() - - # Get source object. - try: - self.target_obj = self.app.collection.get_by_name(self.obj_name) - except Exception as e: - self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Could not retrieve object"), str(self.obj_name))) - return "Could not retrieve object: %s with error: %s" % (self.obj_name, str(e)) - - if self.target_obj is None: - self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Object not found"), str(self.obj_name))) - return - - # Get the tools from the list - tools = self.get_selected_tools_list() - - if len(tools) == 0: - # if there is a single tool in the table (remember that the last 2 rows are for totals and do not count in - # tool number) it means that there are 3 rows (1 tool and 2 totals). - # in this case regardless of the selection status of that tool, use it. - if self.ui.tools_table.rowCount() == 3: - tools.append(self.ui.tools_table.item(0, 0).text()) - else: - self.app.inform.emit('[ERROR_NOTCL] %s' % - _("Please select one or more tools from the list and try again.")) - return - - xmin = self.options['xmin'] - ymin = self.options['ymin'] - xmax = self.options['xmax'] - ymax = self.options['ymax'] - - job_name = self.options["name"] + "_cnc" - pp_excellon_name = self.options["ppname_e"] - - # Object initialization function for app.app_obj.new_object() - def job_init(job_obj, app_obj): - assert job_obj.kind == 'cncjob', "Initializer expected a CNCJobObject, got %s" % type(job_obj) - - app_obj.inform.emit(_("Generating CNCJob...")) - - # get the tool_table items in a list of row items - tool_table_items = self.get_selected_tools_table_items() - # insert an information only element in the front - tool_table_items.insert(0, [_("Tool_nr"), _("Diameter"), _("Drills_Nr"), _("Slots_Nr")]) - - # ## Add properties to the object - - job_obj.origin_kind = 'excellon' - - job_obj.options['Tools_in_use'] = tool_table_items - job_obj.options['type'] = 'Excellon' - job_obj.options['ppname_e'] = pp_excellon_name - - job_obj.multidepth = self.options["multidepth"] - job_obj.z_depthpercut = self.options["depthperpass"] - - job_obj.z_move = float(self.options["travelz"]) - job_obj.feedrate = float(self.options["feedrate_z"]) - job_obj.z_feedrate = float(self.options["feedrate_z"]) - job_obj.feedrate_rapid = float(self.options["feedrate_rapid"]) - - job_obj.spindlespeed = float(self.options["spindlespeed"]) if self.options["spindlespeed"] != 0 else None - job_obj.spindledir = self.app.defaults['excellon_spindledir'] - job_obj.dwell = self.options["dwell"] - job_obj.dwelltime = float(self.options["dwelltime"]) - - job_obj.pp_excellon_name = pp_excellon_name - - job_obj.toolchange_xy_type = "excellon" - job_obj.coords_decimals = int(self.app.defaults["cncjob_coords_decimals"]) - job_obj.fr_decimals = int(self.app.defaults["cncjob_fr_decimals"]) - - job_obj.options['xmin'] = xmin - job_obj.options['ymin'] = ymin - job_obj.options['xmax'] = xmax - job_obj.options['ymax'] = ymax - - job_obj.z_pdepth = float(self.options["z_pdepth"]) - job_obj.feedrate_probe = float(self.options["feedrate_probe"]) - - job_obj.z_cut = float(self.options['cutz']) - job_obj.toolchange = self.options["toolchange"] - job_obj.xy_toolchange = self.app.defaults["excellon_toolchangexy"] - job_obj.z_toolchange = float(self.options["toolchangez"]) - job_obj.startz = float(self.options["startz"]) if self.options["startz"] else None - job_obj.endz = float(self.options["endz"]) - job_obj.xy_end = self.options["endxy"] - job_obj.excellon_optimization_type = self.app.defaults["excellon_optimization_type"] - - tools_csv = ','.join(tools) - ret_val = job_obj.generate_from_excellon_by_tool(self, tools_csv, use_ui=True) - - if ret_val == 'fail': - return 'fail' - - job_obj.gcode_parse() - job_obj.create_geometry() - - # To be run in separate thread - def job_thread(a_obj): - with self.app.proc_container.new('%s...' % _("Generating")): - a_obj.app_obj.new_object("cncjob", job_name, job_init) - - # Create promise for the new name. - self.app.collection.promise(job_name) - - # Send to worker - # self.app.worker.add_task(job_thread, [self.app]) - self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]}) - - def drilling_handler(self, obj): - pass - def on_plot_cb_click(self): self.target_obj.plot() diff --git a/appTools/ToolNCC.py b/appTools/ToolNCC.py index 10c93785..22031c4a 100644 --- a/appTools/ToolNCC.py +++ b/appTools/ToolNCC.py @@ -2426,7 +2426,7 @@ class NonCopperClear(AppTool, Gerber): except KeyError: tools_storage.pop(uid, None) - geo_obj.options["cnctooldia"] = str(tool) + geo_obj.options["tools_mill_tooldia"] = str(tool) geo_obj.multigeo = True geo_obj.tools = dict(tools_storage) @@ -2688,7 +2688,7 @@ class NonCopperClear(AppTool, Gerber): # area = unary_union(area) geo_obj.multigeo = True - geo_obj.options["cnctooldia"] = '0.0' + geo_obj.options["tools_mill_tooldia"] = '0.0' # clean the progressive plotted shapes if it was used if self.app.defaults["tools_ncc_plotting"] == 'progressive': @@ -3281,7 +3281,7 @@ class NonCopperClear(AppTool, Gerber): except KeyError: tools_storage.pop(uid, None) - geo_obj.options["cnctooldia"] = str(tool) + geo_obj.options["tools_mill_tooldia"] = str(tool) geo_obj.multigeo = True geo_obj.tools.clear() @@ -3681,7 +3681,7 @@ class NonCopperClear(AppTool, Gerber): log.debug("There are no geometries in the cleared polygon.") geo_obj.multigeo = True - geo_obj.options["cnctooldia"] = str(tool) + geo_obj.options["tools_mill_tooldia"] = str(tool) # check to see if geo_obj.tools is empty # it will be updated only if there is a solid_geometry for tools diff --git a/appTools/ToolPaint.py b/appTools/ToolPaint.py index ff2f17f9..1f3a31e4 100644 --- a/appTools/ToolPaint.py +++ b/appTools/ToolPaint.py @@ -765,8 +765,8 @@ class ToolPaint(AppTool, Gerber): tool_type = 'V' # look in database tools for db_tool, db_tool_val in tools_db_dict.items(): - offset = db_tool_val['offset'] - offset_val = db_tool_val['offset_value'] + offset = db_tool_val['data']['tools_mill_offset_type'] + offset_val = db_tool_val['data']['tools_mill_offset'] typ = db_tool_val['type'] tool_type = db_tool_val['tool_type'] @@ -1915,7 +1915,7 @@ class ToolPaint(AppTool, Gerber): if not tools_storage: return 'fail' - geo_obj.options["cnctooldia"] = str(tool_dia) + geo_obj.options["tools_mill_tooldia"] = str(tool_dia) # this will turn on the FlatCAMCNCJob plot for multiple tools geo_obj.multigeo = True geo_obj.multitool = True @@ -2143,7 +2143,7 @@ class ToolPaint(AppTool, Gerber): break geo_obj.multigeo = True - geo_obj.options["cnctooldia"] = '0.0' + geo_obj.options["tools_mill_tooldia"] = '0.0' # clean the progressive plotted shapes if it was used if self.app.defaults["tools_paint_plotting"] == 'progressive': diff --git a/appTools/ToolPanelize.py b/appTools/ToolPanelize.py index 8bddf383..e6db704a 100644 --- a/appTools/ToolPanelize.py +++ b/appTools/ToolPanelize.py @@ -665,7 +665,7 @@ class Panelize(AppTool): new_sgeo = [g['solid'] for g in new_obj.apertures[apid]['geometry'] if 'solid' in g] new_sgeo = unary_union(new_sgeo) new_obj.tools[new_tid] = { - 'tooldia': self.app.defaults["geometry_cnctooldia"], + 'tooldia': self.app.defaults["tools_mill_tooldia"], 'offset': 'Path', 'offset_value': 0.0, 'type': 'Rough', @@ -675,7 +675,7 @@ class Panelize(AppTool): } new_tid += 1 new_obj.tools[new_tid] = { - 'tooldia': self.app.defaults["geometry_cnctooldia"], + 'tooldia': self.app.defaults["tools_mill_tooldia"], 'offset': 'Path', 'offset_value': 0.0, 'type': 'Rough', diff --git a/app_Main.py b/app_Main.py index 24826ae0..eb98c863 100644 --- a/app_Main.py +++ b/app_Main.py @@ -4371,7 +4371,7 @@ class App(QtCore.QObject): def scale_defaults(self, sfactor, dimensions): for dim in dimensions: - if dim in ['geometry_cnctooldia', 'tools_ncc_tools', 'tools_solderpaste_tools', 'tools_iso_tooldia', + if dim in ['tools_mill_tooldia', 'tools_ncc_tools', 'tools_solderpaste_tools', 'tools_iso_tooldia', 'tools_paint_tooldia', 'tools_transform_ref_point', 'tools_cal_toolchange_xy', 'gerber_editor_newdim', 'tools_drill_toolchangexy', 'tools_drill_endxy', 'geometry_toolchangexy', 'geometry_endxy', 'tools_solderpaste_xy_toolchange']: @@ -4469,7 +4469,7 @@ class App(QtCore.QObject): # Geometry Object 'geometry_cutz', "geometry_depthperpass", 'geometry_travelz', 'geometry_feedrate', 'geometry_feedrate_rapid', "geometry_toolchangez", "geometry_feedrate_z", - "geometry_toolchangexy", 'geometry_cnctooldia', 'geometry_endz', 'geometry_endxy', + "geometry_toolchangexy", 'tools_mill_tooldia', 'geometry_endz', 'geometry_endxy', "geometry_extracut_length", "geometry_z_pdepth", "geometry_feedrate_probe", "geometry_startz", "geometry_segx", "geometry_segy", "geometry_area_overz", @@ -5521,11 +5521,11 @@ class App(QtCore.QObject): oname = opt_key[len('tools_cutout') + 1:] default_data[oname] = self.options[opt_key] - if type(self.defaults["geometry_cnctooldia"]) == float: - tools_diameters = [self.defaults["geometry_cnctooldia"]] + if type(self.defaults["tools_mill_tooldia"]) == float: + tools_diameters = [self.defaults["tools_mill_tooldia"]] else: try: - dias = str(self.defaults["geometry_cnctooldia"]).strip('[').strip(']') + dias = str(self.defaults["tools_mill_tooldia"]).strip('[').strip(']') tools_string = dias.split(",") tools_diameters = [eval(a) for a in tools_string if a != ''] except Exception as e: @@ -5555,7 +5555,7 @@ class App(QtCore.QObject): pass new_obj.options.update(deepcopy(default_data)) - new_obj.options["cnctooldia"] = tools_diameters[0] if tools_diameters else 0.0 + new_obj.options["tools_mill_tooldia"] = tools_diameters[0] if tools_diameters else 0.0 new_obj.tools = deepcopy(tools) for k in new_obj.tools: new_obj.tools[k]['solid_geometry'] = deepcopy(obj.solid_geometry) @@ -5571,7 +5571,7 @@ class App(QtCore.QObject): return 'fail' new_obj.options.update(deepcopy(default_data)) - new_obj.options["cnctooldia"] = tools_diameters[0] if tools_diameters else 0.0 + new_obj.options["tools_mill_tooldia"] = tools_diameters[0] if tools_diameters else 0.0 new_obj.tools = deepcopy(tools) for k in new_obj.tools: new_obj.tools[k]['solid_geometry'] = deepcopy(obj.solid_geometry) diff --git a/camlib.py b/camlib.py index 2f8dd8c4..46581d1f 100644 --- a/camlib.py +++ b/camlib.py @@ -1215,7 +1215,7 @@ class Geometry(object): if geos_text_f: self.solid_geometry = self.solid_geometry + geos_text_f - tooldia = float(self.app.defaults["geometry_cnctooldia"]) + tooldia = float(self.app.defaults["tools_mill_tooldia"]) tooldia = float('%.*f' % (self.decimals, tooldia)) new_data = {k: v for k, v in self.options.items()} @@ -1280,7 +1280,7 @@ class Geometry(object): else: # It's shapely geometry self.solid_geometry = [self.solid_geometry, geos] - tooldia = float(self.app.defaults["geometry_cnctooldia"]) + tooldia = float(self.app.defaults["tools_mill_tooldia"]) tooldia = float('%.*f' % (self.decimals, tooldia)) new_data = {k: v for k, v in self.options.items()} @@ -5665,11 +5665,11 @@ class CNCjob(Geometry): log.debug("%d paths" % len(flat_geometry)) default_dia = None - if isinstance(self.app.defaults["geometry_cnctooldia"], float): - default_dia = self.app.defaults["geometry_cnctooldia"] + if isinstance(self.app.defaults["tools_mill_tooldia"], float): + default_dia = self.app.defaults["tools_mill_tooldia"] else: try: - tools_string = self.app.defaults["geometry_cnctooldia"].split(",") + tools_string = self.app.defaults["tools_mill_tooldia"].split(",") tools_diameters = [eval(a) for a in tools_string if a != ''] default_dia = tools_diameters[0] if tools_diameters else 0.0 except Exception as e: diff --git a/defaults.py b/defaults.py index c5daf9ca..d7c2443f 100644 --- a/defaults.py +++ b/defaults.py @@ -297,56 +297,56 @@ class FlatCAMDefaults: "geometry_plot": True, "geometry_multicolored": False, "geometry_circle_steps": 64, - "geometry_cnctooldia": "2.4", "geometry_merge_fuse_tools": True, "geometry_plot_line": "#FF0000", - "geometry_optimization_type": 'R', - "geometry_search_time": 3, # Geometry Options - "geometry_cutz": -2.4, - "geometry_vtipdia": 0.1, - "geometry_vtipangle": 30, - "geometry_multidepth": False, - "geometry_depthperpass": 0.8, - "geometry_travelz": 2, - - "geometry_toolchange": False, - "geometry_toolchangez": 15.0, - "geometry_endz": 15.0, - "geometry_endxy": None, - - "geometry_feedrate": 120, - "geometry_feedrate_z": 60, - "geometry_spindlespeed": 0, - "geometry_dwell": False, - "geometry_dwelltime": 1, - "geometry_ppname_g": 'default', - - # Geometry Advanced Options - "geometry_toolchangexy": "0.0, 0.0", - "geometry_startz": None, - "geometry_feedrate_rapid": 1500, - "geometry_extracut": False, - "geometry_extracut_length": 0.1, - "geometry_z_pdepth": -0.02, - "geometry_f_plunge": False, - "geometry_spindledir": 'CW', - "geometry_feedrate_probe": 75, "geometry_segx": 0.0, "geometry_segy": 0.0, - "geometry_area_exclusion": False, - "geometry_area_shape": "polygon", - "geometry_area_strategy": "over", - "geometry_area_overz": 1.0, - "geometry_polish": False, - "geometry_polish_dia": 10.0, - "geometry_polish_pressure": -1.0, - "geometry_polish_travelz": 2.0, - "geometry_polish_margin": 0.0, - "geometry_polish_overlap": 5, - "geometry_polish_method": 0, + + # Geometry Options + "tools_mill_tooldia": "2.4", + "tools_mill_cutz": -2.4, + "tools_mill_vtipdia": 0.1, + "tools_mill_vtipangle": 30, + "tools_mill_multidepth": False, + "tools_mill_depthperpass": 0.8, + "tools_mill_travelz": 2, + + "tools_mill_toolchange": False, + "tools_mill_toolchangez": 15.0, + "tools_mill_endz": 15.0, + "tools_mill_endxy": None, + + "tools_mill_feedrate": 120, + "tools_mill_feedrate_z": 60, + "tools_mill_spindlespeed": 0, + "tools_mill_dwell": False, + "tools_mill_dwelltime": 1, + "tools_mill_ppname_g": 'default', + + # Geometry Advanced Options + "tools_mill_toolchangexy": "0.0, 0.0", + "tools_mill_startz": None, + "tools_mill_feedrate_rapid": 1500, + "tools_mill_extracut": False, + "tools_mill_extracut_length": 0.1, + "tools_mill_z_pdepth": -0.02, + "tools_mill_f_plunge": False, + "tools_mill_spindledir": 'CW', + "tools_mill_feedrate_probe": 75, + + "tools_mill_area_exclusion": False, + "tools_mill_area_shape": "polygon", + "tools_mill_area_strategy": "over", + "tools_mill_area_overz": 1.0, + "tools_mill_polish": False, + "tools_mill_polish_margin": 0.0, + "tools_mill_polish_overlap": 5, + "tools_mill_polish_method": 0, "tools_mill_milling_type": 'both', + "tools_mill_optimization_type": 'R', + "tools_mill_search_time": 3, # Geometry Editor "geometry_editor_sel_limit": 30, diff --git a/tclCommands/TclCommandCncjob.py b/tclCommands/TclCommandCncjob.py index a7102b93..e64bb551 100644 --- a/tclCommands/TclCommandCncjob.py +++ b/tclCommands/TclCommandCncjob.py @@ -128,7 +128,7 @@ class TclCommandCncjob(TclCommandSignaled): else: return - args["dia"] = args["dia"] if "dia" in args and args["dia"] else self.app.defaults["geometry_cnctooldia"] + args["dia"] = args["dia"] if "dia" in args and args["dia"] else self.app.defaults["tools_mill_tooldia"] args["z_cut"] = args["z_cut"] if "z_cut" in args and args["z_cut"] else self.app.defaults["geometry_cutz"] args["z_move"] = args["z_move"] if "z_move" in args and args["z_move"] else \