diff --git a/CHANGELOG.md b/CHANGELOG.md index d6810309..23c604eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ CHANGELOG for FlatCAM beta - NCC Tool - now the tools can be reordered (if the order UI radio is set to 'no') - remade the UI in Paint Tool and the tools in tools table ca now be reordered (if the order UI radio is set to 'no') - some updates in NCC Tool using code from Paint Tool +- in Paint and NCC Tools made sure that using the key ESCAPE to cancel the tool will not create mouse events issues +- some updates in Tcl commands Paint and CopperClear data dicts + 13.06.2020 diff --git a/appDatabase.py b/appDatabase.py index 972b2ed8..d3174587 100644 --- a/appDatabase.py +++ b/appDatabase.py @@ -1621,19 +1621,19 @@ class ToolsDB2(QtWidgets.QWidget): self.grid3.addWidget(self.paintoverlap_entry, 1, 1) # Margin - marginlabel = QtWidgets.QLabel('%s:' % _('Margin')) + marginlabel = QtWidgets.QLabel('%s:' % _('Offset')) marginlabel.setToolTip( _("Distance by which to avoid\n" "the edges of the polygon to\n" "be painted.") ) - self.paintmargin_entry = FCDoubleSpinner() - self.paintmargin_entry.set_precision(self.decimals) - self.paintmargin_entry.set_range(-9999.9999, 9999.9999) - self.paintmargin_entry.setObjectName('gdb_p_margin') + self.paint_offset_entry = FCDoubleSpinner() + self.paint_offset_entry.set_precision(self.decimals) + self.paint_offset_entry.set_range(-9999.9999, 9999.9999) + self.paint_offset_entry.setObjectName('gdb_p_offset') self.grid3.addWidget(marginlabel, 2, 0) - self.grid3.addWidget(self.paintmargin_entry, 2, 1) + self.grid3.addWidget(self.paint_offset_entry, 2, 1) # Method methodlabel = QtWidgets.QLabel('%s:' % _('Method')) @@ -1899,7 +1899,7 @@ class ToolsDB2(QtWidgets.QWidget): # Paint "tools_paintoverlap": self.paintoverlap_entry, - "tools_paintmargin": self.paintmargin_entry, + "tools_paintoffset": self.paint_offset_entry, "tools_paintmethod": self.paintmethod_combo, "tools_pathconnect": self.pathconnect_cb, "tools_paintcontour": self.paintcontour_cb, @@ -1952,7 +1952,7 @@ class ToolsDB2(QtWidgets.QWidget): # Paint 'gdb_p_overlap': "tools_paintoverlap", - 'gdb_p_margin': "tools_paintmargin", + 'gdb_p_offset': "tools_paintoffset", 'gdb_p_method': "tools_paintmethod", 'gdb_p_connect': "tools_pathconnect", 'gdb_p_contour': "tools_paintcontour", @@ -2210,7 +2210,7 @@ class ToolsDB2(QtWidgets.QWidget): # Paint "tools_paintoverlap": float(self.app.defaults["tools_paintoverlap"]), - "tools_paintmargin": float(self.app.defaults["tools_paintmargin"]), + "tools_paintoffset": float(self.app.defaults["tools_paintoffset"]), "tools_paintmethod": self.app.defaults["tools_paintmethod"], "tools_pathconnect": self.app.defaults["tools_pathconnect"], "tools_paintcontour": self.app.defaults["tools_paintcontour"], @@ -2656,8 +2656,8 @@ class ToolsDB2(QtWidgets.QWidget): # Paint Tool elif wdg_name == "gdb_p_overlap": self.db_tool_dict[tool_id]['data']['tools_paintoverlap'] = val - elif wdg_name == "gdb_p_margin": - self.db_tool_dict[tool_id]['data']['tools_paintmargin'] = val + elif wdg_name == "gdb_p_offset": + self.db_tool_dict[tool_id]['data']['tools_paintoffset'] = val elif wdg_name == "gdb_p_method": self.db_tool_dict[tool_id]['data']['tools_paintmethod'] = val elif wdg_name == "gdb_p_connect": diff --git a/appEditors/AppGeoEditor.py b/appEditors/AppGeoEditor.py index 6f7ba9e6..fe572306 100644 --- a/appEditors/AppGeoEditor.py +++ b/appEditors/AppGeoEditor.py @@ -557,8 +557,8 @@ class PaintOptionsTool(AppTool): else: self.paintoverlap_entry.set_value(0.0) - if self.app.defaults["tools_paintmargin"]: - self.paintmargin_entry.set_value(self.app.defaults["tools_paintmargin"]) + if self.app.defaults["tools_paintoffset"]: + self.paintmargin_entry.set_value(self.app.defaults["tools_paintoffset"]) else: self.paintmargin_entry.set_value(0.0) diff --git a/appGUI/preferences/PreferencesUIManager.py b/appGUI/preferences/PreferencesUIManager.py index 1ebae577..20e206ed 100644 --- a/appGUI/preferences/PreferencesUIManager.py +++ b/appGUI/preferences/PreferencesUIManager.py @@ -391,7 +391,7 @@ class PreferencesUIManager: "tools_painttooldia": self.ui.tools_defaults_form.tools_paint_group.painttooldia_entry, "tools_paintorder": self.ui.tools_defaults_form.tools_paint_group.paint_order_radio, "tools_paintoverlap": self.ui.tools_defaults_form.tools_paint_group.paintoverlap_entry, - "tools_paintmargin": self.ui.tools_defaults_form.tools_paint_group.paintmargin_entry, + "tools_paintoffset": self.ui.tools_defaults_form.tools_paint_group.paintmargin_entry, "tools_paintmethod": self.ui.tools_defaults_form.tools_paint_group.paintmethod_combo, "tools_selectmethod": self.ui.tools_defaults_form.tools_paint_group.selectmethod_combo, "tools_paint_area_shape": self.ui.tools_defaults_form.tools_paint_group.area_shape_radio, diff --git a/appParsers/ParseHPGL2.py b/appParsers/ParseHPGL2.py index 200453b0..843e5d54 100644 --- a/appParsers/ParseHPGL2.py +++ b/appParsers/ParseHPGL2.py @@ -52,49 +52,69 @@ class HPGL2: self.default_data = {} self.default_data.update({ - "name": '_ncc', - "plot": self.app.defaults["geometry_plot"], - "cutz": self.app.defaults["geometry_cutz"], - "vtipdia": self.app.defaults["geometry_vtipdia"], - "vtipangle": self.app.defaults["geometry_vtipangle"], - "travelz": self.app.defaults["geometry_travelz"], - "feedrate": self.app.defaults["geometry_feedrate"], - "feedrate_z": self.app.defaults["geometry_feedrate_z"], - "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], - "dwell": self.app.defaults["geometry_dwell"], - "dwelltime": self.app.defaults["geometry_dwelltime"], - "multidepth": self.app.defaults["geometry_multidepth"], - "ppname_g": self.app.defaults["geometry_ppname_g"], - "depthperpass": self.app.defaults["geometry_depthperpass"], - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": self.app.defaults["geometry_extracut_length"], - "toolchange": self.app.defaults["geometry_toolchange"], - "toolchangez": self.app.defaults["geometry_toolchangez"], - "endz": self.app.defaults["geometry_endz"], - "endxy": self.app.defaults["geometry_endxy"], - "area_exclusion": self.app.defaults["geometry_area_exclusion"], - "area_shape": self.app.defaults["geometry_area_shape"], - "area_strategy": self.app.defaults["geometry_area_strategy"], - "area_overz": self.app.defaults["geometry_area_overz"], + "name": '_ncc', + "plot": self.app.defaults["geometry_plot"], + "cutz": self.app.defaults["geometry_cutz"], + "vtipdia": self.app.defaults["geometry_vtipdia"], + "vtipangle": self.app.defaults["geometry_vtipangle"], + "travelz": self.app.defaults["geometry_travelz"], + "feedrate": self.app.defaults["geometry_feedrate"], + "feedrate_z": self.app.defaults["geometry_feedrate_z"], + "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], + "dwell": self.app.defaults["geometry_dwell"], + "dwelltime": self.app.defaults["geometry_dwelltime"], + "multidepth": self.app.defaults["geometry_multidepth"], + "ppname_g": self.app.defaults["geometry_ppname_g"], + "depthperpass": self.app.defaults["geometry_depthperpass"], + "extracut": self.app.defaults["geometry_extracut"], + "extracut_length": self.app.defaults["geometry_extracut_length"], + "toolchange": self.app.defaults["geometry_toolchange"], + "toolchangez": self.app.defaults["geometry_toolchangez"], + "endz": self.app.defaults["geometry_endz"], + "endxy": self.app.defaults["geometry_endxy"], + "area_exclusion": self.app.defaults["geometry_area_exclusion"], + "area_shape": self.app.defaults["geometry_area_shape"], + "area_strategy": self.app.defaults["geometry_area_strategy"], + "area_overz": self.app.defaults["geometry_area_overz"], - "spindlespeed": self.app.defaults["geometry_spindlespeed"], - "toolchangexy": self.app.defaults["geometry_toolchangexy"], - "startz": self.app.defaults["geometry_startz"], + "spindlespeed": self.app.defaults["geometry_spindlespeed"], + "toolchangexy": self.app.defaults["geometry_toolchangexy"], + "startz": self.app.defaults["geometry_startz"], - "tooldia": self.app.defaults["tools_painttooldia"], - "paintmargin": self.app.defaults["tools_paintmargin"], - "paintmethod": self.app.defaults["tools_paintmethod"], - "selectmethod": self.app.defaults["tools_selectmethod"], - "pathconnect": self.app.defaults["tools_pathconnect"], - "paintcontour": self.app.defaults["tools_paintcontour"], - "paintoverlap": self.app.defaults["tools_paintoverlap"], + "tooldia": self.app.defaults["tools_painttooldia"], + "tools_paintoffset": self.app.defaults["tools_paintoffset"], + "tools_paintmethod": self.app.defaults["tools_paintmethod"], + "tools_selectmethod": self.app.defaults["tools_selectmethod"], + "tools_pathconnect": self.app.defaults["tools_pathconnect"], + "tools_paintcontour": self.app.defaults["tools_paintcontour"], + "tools_paintoverlap": self.app.defaults["tools_paintoverlap"], + "tools_paintrest": self.app.defaults["tools_paintrest"], - "nccoverlap": self.app.defaults["tools_nccoverlap"], - "nccmargin": self.app.defaults["tools_nccmargin"], - "nccmethod": self.app.defaults["tools_nccmethod"], - "nccconnect": self.app.defaults["tools_nccconnect"], - "ncccontour": self.app.defaults["tools_ncccontour"], - "nccrest": self.app.defaults["tools_nccrest"] + "tools_nccoperation": self.app.defaults["tools_nccoperation"], + "tools_nccmargin": self.app.defaults["tools_nccmargin"], + "tools_nccmethod": self.app.defaults["tools_nccmethod"], + "tools_nccconnect": self.app.defaults["tools_nccconnect"], + "tools_ncccontour": self.app.defaults["tools_ncccontour"], + "tools_nccoverlap": self.app.defaults["tools_nccoverlap"], + "tools_nccrest": self.app.defaults["tools_nccrest"], + "tools_nccref": self.app.defaults["tools_nccref"], + "tools_ncc_offset_choice": self.app.defaults["tools_ncc_offset_choice"], + "tools_ncc_offset_value": self.app.defaults["tools_ncc_offset_value"], + "tools_nccmilling_type": self.app.defaults["tools_nccmilling_type"], + + "tools_iso_passes": self.app.defaults["tools_iso_passes"], + "tools_iso_overlap": self.app.defaults["tools_iso_overlap"], + "tools_iso_milling_type": self.app.defaults["tools_iso_milling_type"], + "tools_iso_follow": self.app.defaults["tools_iso_follow"], + "tools_iso_isotype": self.app.defaults["tools_iso_isotype"], + + "tools_iso_rest": self.app.defaults["tools_iso_rest"], + "tools_iso_combine_passes": self.app.defaults["tools_iso_combine_passes"], + "tools_iso_isoexcept": self.app.defaults["tools_iso_isoexcept"], + "tools_iso_selection": self.app.defaults["tools_iso_selection"], + "tools_iso_poly_ints": self.app.defaults["tools_iso_poly_ints"], + "tools_iso_force": self.app.defaults["tools_iso_force"], + "tools_iso_area_shape": self.app.defaults["tools_iso_area_shape"] }) # will store the geometry here for compatibility reason diff --git a/appTools/ToolCutOut.py b/appTools/ToolCutOut.py index ab7b8b2e..4b3b7a47 100644 --- a/appTools/ToolCutOut.py +++ b/appTools/ToolCutOut.py @@ -527,7 +527,7 @@ class CutOut(AppTool): # Paint "tools_paintoverlap": float(self.app.defaults["tools_paintoverlap"]), - "tools_paintmargin": float(self.app.defaults["tools_paintmargin"]), + "tools_paintoffset": float(self.app.defaults["tools_paintoffset"]), "tools_paintmethod": self.app.defaults["tools_paintmethod"], "tools_pathconnect": self.app.defaults["tools_pathconnect"], "tools_paintcontour": self.app.defaults["tools_paintcontour"], diff --git a/appTools/ToolNCC.py b/appTools/ToolNCC.py index ba9f41d8..8a1338bd 100644 --- a/appTools/ToolNCC.py +++ b/appTools/ToolNCC.py @@ -106,9 +106,11 @@ class NonCopperClear(AppTool, Gerber): self.mm = None self.mr = None - self.kp = None + # disconnect flags + self.area_sel_disconnect_flag = False + # store here solid_geometry when there are tool with isolation job self.solid_geometry = [] @@ -186,10 +188,7 @@ class NonCopperClear(AppTool, Gerber): # all the tools are selected by default # self.ui.tools_table.selectColumn(0) - self.ui.tools_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) - for row in range(self.ui.tools_table.rowCount()): - self.ui.tools_table.selectRow(row) - self.ui.tools_table.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.ui.tools_table.selectAll() self.app.ui.notebook.setTabText(2, _("NCC Tool")) @@ -506,47 +505,47 @@ class NonCopperClear(AppTool, Gerber): # init the working variables self.default_data.clear() self.default_data = { - "name": '_ncc', - "plot": self.app.defaults["geometry_plot"], - "cutz": float(self.ui.cutz_entry.get_value()), - "vtipdia": float(self.ui.tipdia_entry.get_value()), - "vtipangle": float(self.ui.tipangle_entry.get_value()), - "travelz": self.app.defaults["geometry_travelz"], - "feedrate": self.app.defaults["geometry_feedrate"], - "feedrate_z": self.app.defaults["geometry_feedrate_z"], - "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], - "dwell": self.app.defaults["geometry_dwell"], - "dwelltime": self.app.defaults["geometry_dwelltime"], - "multidepth": self.app.defaults["geometry_multidepth"], - "ppname_g": self.app.defaults["geometry_ppname_g"], - "depthperpass": self.app.defaults["geometry_depthperpass"], - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": self.app.defaults["geometry_extracut_length"], - "toolchange": self.app.defaults["geometry_toolchange"], - "toolchangez": self.app.defaults["geometry_toolchangez"], - "endz": self.app.defaults["geometry_endz"], - "endxy": self.app.defaults["geometry_endxy"], + "name": '_ncc', + "plot": self.app.defaults["geometry_plot"], + "cutz": float(self.app.defaults["geometry_cutz"]), + "vtipdia": float(self.app.defaults["geometry_vtipdia"]), + "vtipangle": float(self.app.defaults["geometry_vtipangle"]), + "travelz": self.app.defaults["geometry_travelz"], + "feedrate": self.app.defaults["geometry_feedrate"], + "feedrate_z": self.app.defaults["geometry_feedrate_z"], + "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], + "dwell": self.app.defaults["geometry_dwell"], + "dwelltime": self.app.defaults["geometry_dwelltime"], + "multidepth": self.app.defaults["geometry_multidepth"], + "ppname_g": self.app.defaults["geometry_ppname_g"], + "depthperpass": self.app.defaults["geometry_depthperpass"], + "extracut": self.app.defaults["geometry_extracut"], + "extracut_length": self.app.defaults["geometry_extracut_length"], + "toolchange": self.app.defaults["geometry_toolchange"], + "toolchangez": self.app.defaults["geometry_toolchangez"], + "endz": self.app.defaults["geometry_endz"], + "endxy": self.app.defaults["geometry_endxy"], - "spindlespeed": self.app.defaults["geometry_spindlespeed"], - "toolchangexy": self.app.defaults["geometry_toolchangexy"], - "startz": self.app.defaults["geometry_startz"], + "spindlespeed": self.app.defaults["geometry_spindlespeed"], + "toolchangexy": self.app.defaults["geometry_toolchangexy"], + "startz": self.app.defaults["geometry_startz"], - "area_exclusion": self.app.defaults["geometry_area_exclusion"], - "area_shape": self.app.defaults["geometry_area_shape"], - "area_strategy": self.app.defaults["geometry_area_strategy"], - "area_overz": float(self.app.defaults["geometry_area_overz"]), + "area_exclusion": self.app.defaults["geometry_area_exclusion"], + "area_shape": self.app.defaults["geometry_area_shape"], + "area_strategy": self.app.defaults["geometry_area_strategy"], + "area_overz": float(self.app.defaults["geometry_area_overz"]), - "tools_nccoperation": self.app.defaults["tools_nccoperation"], - "tools_nccmargin": self.app.defaults["tools_nccmargin"], - "tools_nccmethod": self.app.defaults["tools_nccmethod"], - "tools_nccconnect": self.app.defaults["tools_nccconnect"], - "tools_ncccontour": self.app.defaults["tools_ncccontour"], - "tools_nccoverlap": self.app.defaults["tools_nccoverlap"], - "nccrest": self.app.defaults["tools_nccrest"], - "nccref": self.app.defaults["tools_nccref"], - "tools_ncc_offset_choice": self.app.defaults["tools_ncc_offset_choice"], - "tools_ncc_offset_value": self.app.defaults["tools_ncc_offset_value"], - "tools_nccmilling_type": self.app.defaults["tools_nccmilling_type"], + "tools_nccoperation": self.app.defaults["tools_nccoperation"], + "tools_nccmargin": self.app.defaults["tools_nccmargin"], + "tools_nccmethod": self.app.defaults["tools_nccmethod"], + "tools_nccconnect": self.app.defaults["tools_nccconnect"], + "tools_ncccontour": self.app.defaults["tools_ncccontour"], + "tools_nccoverlap": self.app.defaults["tools_nccoverlap"], + "tools_nccrest": self.app.defaults["tools_nccrest"], + "tools_nccref": self.app.defaults["tools_nccref"], + "tools_ncc_offset_choice": self.app.defaults["tools_ncc_offset_choice"], + "tools_ncc_offset_value": self.app.defaults["tools_ncc_offset_value"], + "tools_nccmilling_type": self.app.defaults["tools_nccmilling_type"] } try: @@ -1204,6 +1203,9 @@ class NonCopperClear(AppTool, Gerber): self.mm = self.app.plotcanvas.graph_event_connect('mouse_move', self.on_mouse_move) self.kp = self.app.plotcanvas.graph_event_connect('key_press', self.on_key_press) + # disconnect flags + self.area_sel_disconnect_flag = True + elif self.select_method == _("Reference Object"): self.bound_obj_name = self.ui.reference_combo.currentText() # Get source object. @@ -1327,6 +1329,9 @@ class NonCopperClear(AppTool, Gerber): self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', self.app.on_mouse_click_release_over_plot) + # disconnect flags + self.area_sel_disconnect_flag = False + if len(self.sel_rect) == 0: return @@ -1432,37 +1437,39 @@ class NonCopperClear(AppTool, Gerber): key = event.key if key == QtCore.Qt.Key_Escape or key == 'Escape': - if self.app.is_legacy is False: - self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release) - self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move) - self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press) - else: - self.app.plotcanvas.graph_event_disconnect(self.mr) - self.app.plotcanvas.graph_event_disconnect(self.mm) - self.app.plotcanvas.graph_event_disconnect(self.kp) - - try: - # restore the Grid snapping if it was active before - if self.grid_status_memory is True: - self.app.ui.grid_snap_btn.trigger() + if self.area_sel_disconnect_flag is True: if self.app.is_legacy is False: - self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_single_poly_mouse_release) + self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release) + self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move) self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press) else: self.app.plotcanvas.graph_event_disconnect(self.mr) + self.app.plotcanvas.graph_event_disconnect(self.mm) self.app.plotcanvas.graph_event_disconnect(self.kp) - self.app.tool_shapes.clear(update=True) - except Exception as e: - log.debug("ToolPaint.on_key_press() _2 --> %s" % str(e)) + try: + # restore the Grid snapping if it was active before + if self.grid_status_memory is True: + self.app.ui.grid_snap_btn.trigger() - self.app.mp = self.app.plotcanvas.graph_event_connect('mouse_press', - self.app.on_mouse_click_over_plot) - self.app.mm = self.app.plotcanvas.graph_event_connect('mouse_move', - self.app.on_mouse_move_over_plot) - self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', - self.app.on_mouse_click_release_over_plot) + if self.app.is_legacy is False: + self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_single_poly_mouse_release) + self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press) + else: + self.app.plotcanvas.graph_event_disconnect(self.mr) + self.app.plotcanvas.graph_event_disconnect(self.kp) + + self.app.tool_shapes.clear(update=True) + except Exception as e: + log.debug("ToolPaint.on_key_press() _2 --> %s" % str(e)) + + self.app.mp = self.app.plotcanvas.graph_event_connect('mouse_press', + self.app.on_mouse_click_over_plot) + self.app.mm = self.app.plotcanvas.graph_event_connect('mouse_move', + self.app.on_mouse_move_over_plot) + self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', + self.app.on_mouse_click_release_over_plot) self.points = [] self.poly_drawn = False diff --git a/appTools/ToolPaint.py b/appTools/ToolPaint.py index 378db3a3..6ecd75cc 100644 --- a/appTools/ToolPaint.py +++ b/appTools/ToolPaint.py @@ -85,6 +85,10 @@ class ToolPaint(AppTool, Gerber): self.mr = None self.kp = None + # disconnect flags + self.area_sel_disconnect_flag = False + self.poly_sel_disconnect_flag = False + self.sel_rect = [] # store here if the grid snapping is active @@ -100,7 +104,7 @@ class ToolPaint(AppTool, Gerber): self.form_fields = { "tools_paintoverlap": self.ui.paintoverlap_entry, - "tools_paintmargin": self.ui.paintmargin_entry, + "tools_paintoffset": self.ui.offset_entry, "tools_paintmethod": self.ui.paintmethod_combo, "tools_pathconnect": self.ui.pathconnect_cb, "tools_paintcontour": self.ui.paintcontour_cb, @@ -108,7 +112,7 @@ class ToolPaint(AppTool, Gerber): self.name2option = { 'p_overlap': "tools_paintoverlap", - 'p_margin': "tools_paintmargin", + 'p_offset': "tools_paintoffset", 'p_method': "tools_paintmethod", 'p_connect': "tools_pathconnect", 'p_contour': "tools_paintcontour", @@ -222,10 +226,7 @@ class ToolPaint(AppTool, Gerber): self.build_ui() # all the tools are selected by default - self.ui.tools_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) - for row in range(self.ui.tools_table.rowCount()): - self.ui.tools_table.selectRow(row) - self.ui.tools_table.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.ui.tools_table.selectAll() self.app.ui.notebook.setTabText(2, _("Paint Tool")) @@ -510,49 +511,49 @@ class ToolPaint(AppTool, Gerber): self.default_data.clear() self.default_data.update({ - "name": '_paint', - "plot": self.app.defaults["geometry_plot"], - "cutz": float(self.app.defaults["tools_paintcutz"],), - "vtipdia": float(self.app.defaults["tools_painttipdia"],), - "vtipangle": float(self.app.defaults["tools_painttipangle"],), - "travelz": float(self.app.defaults["geometry_travelz"]), - "feedrate": float(self.app.defaults["geometry_feedrate"]), - "feedrate_z": float(self.app.defaults["geometry_feedrate_z"]), - "feedrate_rapid": float(self.app.defaults["geometry_feedrate_rapid"]), - "dwell": self.app.defaults["geometry_dwell"], - "dwelltime": float(self.app.defaults["geometry_dwelltime"]), - "multidepth": self.app.defaults["geometry_multidepth"], - "ppname_g": self.app.defaults["geometry_ppname_g"], - "depthperpass": float(self.app.defaults["geometry_depthperpass"]), - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": self.app.defaults["geometry_extracut_length"], - "toolchange": self.app.defaults["geometry_toolchange"], - "toolchangez": float(self.app.defaults["geometry_toolchangez"]), - "endz": float(self.app.defaults["geometry_endz"]), - "endxy": self.app.defaults["geometry_endxy"], + "name": '_paint', + "plot": self.app.defaults["geometry_plot"], + "cutz": float(self.app.defaults["tools_paintcutz"]), + "vtipdia": float(self.app.defaults["tools_painttipdia"]), + "vtipangle": float(self.app.defaults["tools_painttipangle"]), + "travelz": float(self.app.defaults["geometry_travelz"]), + "feedrate": float(self.app.defaults["geometry_feedrate"]), + "feedrate_z": float(self.app.defaults["geometry_feedrate_z"]), + "feedrate_rapid": float(self.app.defaults["geometry_feedrate_rapid"]), + "dwell": self.app.defaults["geometry_dwell"], + "dwelltime": float(self.app.defaults["geometry_dwelltime"]), + "multidepth": self.app.defaults["geometry_multidepth"], + "ppname_g": self.app.defaults["geometry_ppname_g"], + "depthperpass": float(self.app.defaults["geometry_depthperpass"]), + "extracut": self.app.defaults["geometry_extracut"], + "extracut_length": self.app.defaults["geometry_extracut_length"], + "toolchange": self.app.defaults["geometry_toolchange"], + "toolchangez": float(self.app.defaults["geometry_toolchangez"]), + "endz": float(self.app.defaults["geometry_endz"]), + "endxy": self.app.defaults["geometry_endxy"], - "spindlespeed": self.app.defaults["geometry_spindlespeed"], - "toolchangexy": self.app.defaults["geometry_toolchangexy"], - "startz": self.app.defaults["geometry_startz"], + "spindlespeed": self.app.defaults["geometry_spindlespeed"], + "toolchangexy": self.app.defaults["geometry_toolchangexy"], + "startz": self.app.defaults["geometry_startz"], - "area_exclusion": self.app.defaults["geometry_area_exclusion"], - "area_shape": self.app.defaults["geometry_area_shape"], - "area_strategy": self.app.defaults["geometry_area_strategy"], - "area_overz": float(self.app.defaults["geometry_area_overz"]), + "area_exclusion": self.app.defaults["geometry_area_exclusion"], + "area_shape": self.app.defaults["geometry_area_shape"], + "area_strategy": self.app.defaults["geometry_area_strategy"], + "area_overz": float(self.app.defaults["geometry_area_overz"]), - "tooldia": self.app.defaults["tools_painttooldia"], - "tools_paintmargin": self.app.defaults["tools_paintmargin"], - "tools_paintmethod": self.app.defaults["tools_paintmethod"], - "tools_selectmethod": self.app.defaults["tools_selectmethod"], - "tools_pathconnect": self.app.defaults["tools_pathconnect"], - "tools_paintcontour": self.app.defaults["tools_paintcontour"], - "tools_paintoverlap": self.app.defaults["tools_paintoverlap"], - "tools_paintrest": self.app.defaults["tools_paintrest"], + "tooldia": self.app.defaults["tools_painttooldia"], + "tools_paintoffset": self.app.defaults["tools_paintoffset"], + "tools_paintmethod": self.app.defaults["tools_paintmethod"], + "tools_selectmethod": self.app.defaults["tools_selectmethod"], + "tools_pathconnect": self.app.defaults["tools_pathconnect"], + "tools_paintcontour": self.app.defaults["tools_paintcontour"], + "tools_paintoverlap": self.app.defaults["tools_paintoverlap"], + "tools_paintrest": self.app.defaults["tools_paintrest"], }) # ## Init the GUI interface self.ui.order_radio.set_value(self.app.defaults["tools_paintorder"]) - self.ui.paintmargin_entry.set_value(self.app.defaults["tools_paintmargin"]) + self.ui.offset_entry.set_value(self.app.defaults["tools_paintoffset"]) self.ui.paintmethod_combo.set_value(self.app.defaults["tools_paintmethod"]) self.ui.selectmethod_combo.set_value(self.app.defaults["tools_selectmethod"]) self.ui.area_shape_radio.set_value(self.app.defaults["tools_paint_area_shape"]) @@ -1026,6 +1027,9 @@ class ToolPaint(AppTool, Gerber): self.app.plotcanvas.graph_event_disconnect(self.app.mr) self.app.plotcanvas.graph_event_disconnect(self.app.mp) + # disconnect flags + self.poly_sel_disconnect_flag = True + elif self.select_method == _("Area Selection"): self.app.inform.emit('[WARNING_NOTCL] %s' % _("Click the start point of the paint area.")) @@ -1042,6 +1046,9 @@ class ToolPaint(AppTool, Gerber): self.mm = self.app.plotcanvas.graph_event_connect('mouse_move', self.on_mouse_move) self.kp = self.app.plotcanvas.graph_event_connect('key_press', self.on_key_press) + # disconnect flags + self.area_sel_disconnect_flag = True + elif self.select_method == _("Reference Object"): self.bound_obj_name = self.reference_combo.currentText() # Get source object. @@ -1127,6 +1134,9 @@ class ToolPaint(AppTool, Gerber): self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', self.app.on_mouse_click_release_over_plot) + # disconnect flags + self.poly_sel_disconnect_flag = False + self.app.tool_shapes.clear(update=True) if self.poly_dict: @@ -1250,6 +1260,9 @@ class ToolPaint(AppTool, Gerber): self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', self.app.on_mouse_click_release_over_plot) + # disconnect flags + self.area_sel_disconnect_flag = False + if len(self.sel_rect) == 0: return @@ -1360,41 +1373,47 @@ class ToolPaint(AppTool, Gerber): key = event.key if key == QtCore.Qt.Key_Escape or key == 'Escape': - try: - if self.app.is_legacy is False: - self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release) - self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move) - self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press) - else: - self.app.plotcanvas.graph_event_disconnect(self.mr) - self.app.plotcanvas.graph_event_disconnect(self.mm) - self.app.plotcanvas.graph_event_disconnect(self.kp) - except Exception as e: - log.debug("ToolPaint.on_key_press() _1 --> %s" % str(e)) + if self.area_sel_disconnect_flag is True: + try: + if self.app.is_legacy is False: + self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release) + self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move) + self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press) + else: + self.app.plotcanvas.graph_event_disconnect(self.mr) + self.app.plotcanvas.graph_event_disconnect(self.mm) + self.app.plotcanvas.graph_event_disconnect(self.kp) + except Exception as e: + log.debug("ToolPaint.on_key_press() _1 --> %s" % str(e)) - try: - # restore the Grid snapping if it was active before - if self.grid_status_memory is True: - self.app.ui.grid_snap_btn.trigger() + self.app.mp = self.app.plotcanvas.graph_event_connect('mouse_press', + self.app.on_mouse_click_over_plot) + self.app.mm = self.app.plotcanvas.graph_event_connect('mouse_move', + self.app.on_mouse_move_over_plot) + self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', + self.app.on_mouse_click_release_over_plot) - if self.app.is_legacy is False: - self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_single_poly_mouse_release) - self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press) - else: - self.app.plotcanvas.graph_event_disconnect(self.mr) - self.app.plotcanvas.graph_event_disconnect(self.kp) + if self.poly_sel_disconnect_flag is False: + try: + # restore the Grid snapping if it was active before + if self.grid_status_memory is True: + self.app.ui.grid_snap_btn.trigger() - self.app.tool_shapes.clear(update=True) - except Exception as e: - log.debug("ToolPaint.on_key_press() _2 --> %s" % str(e)) + if self.app.is_legacy is False: + self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_single_poly_mouse_release) + self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press) + else: + self.app.plotcanvas.graph_event_disconnect(self.mr) + self.app.plotcanvas.graph_event_disconnect(self.kp) - self.app.mp = self.app.plotcanvas.graph_event_connect('mouse_press', - self.app.on_mouse_click_over_plot) - self.app.mm = self.app.plotcanvas.graph_event_connect('mouse_move', - self.app.on_mouse_move_over_plot) - self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', - self.app.on_mouse_click_release_over_plot) + self.app.tool_shapes.clear(update=True) + except Exception as e: + log.debug("ToolPaint.on_key_press() _2 --> %s" % str(e)) + self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release', + self.app.on_mouse_click_release_over_plot) + self.app.mp = self.app.plotcanvas.graph_event_connect('mouse_press', + self.app.on_mouse_click_over_plot) self.points = [] self.poly_drawn = False self.poly_dict.clear() @@ -1643,9 +1662,8 @@ class ToolPaint(AppTool, Gerber): self.app.inform.emit('[ERROR_NOTCL] %s' % _('Geometry could not be painted completely')) return None - def paint_poly(self, obj, inside_pt=None, poly_list=None, tooldia=None, order=None, - method=None, outname=None, tools_storage=None, - plot=True, run_threaded=True): + def paint_poly(self, obj, inside_pt=None, poly_list=None, tooldia=None, order=None, method=None, outname=None, + tools_storage=None, plot=True, run_threaded=True): """ Paints a polygon selected by clicking on its interior or by having a point coordinates given @@ -1752,11 +1770,11 @@ class ToolPaint(AppTool, Gerber): conn = tools_storage[current_uid]['data']['tools_pathconnect'] cont = tools_storage[current_uid]['data']['tools_paintcontour'] - paint_margin = float(tools_storage[current_uid]['data']['tools_paintmargin']) + paint_offset = float(tools_storage[current_uid]['data']['tools_paintoffset']) poly_buf = [] for pol in polygon_list: - buffered_pol = pol.buffer(-paint_margin) + buffered_pol = pol.buffer(-paint_offset) if buffered_pol and not buffered_pol.is_empty: poly_buf.append(buffered_pol) @@ -1918,8 +1936,8 @@ class ToolPaint(AppTool, Gerber): else: job_thread(app_obj=self.app) - def paint_poly_all(self, obj, tooldia=None, order=None, method=None, outname=None, - tools_storage=None, plot=True, run_threaded=True): + def paint_poly_all(self, obj, tooldia=None, order=None, method=None, outname=None, tools_storage=None, plot=True, + run_threaded=True): """ Paints all polygons in this object. @@ -2069,11 +2087,11 @@ class ToolPaint(AppTool, Gerber): conn = tools_storage[current_uid]['data']['tools_pathconnect'] cont = tools_storage[current_uid]['data']['tools_paintcontour'] - paint_margin = float(tools_storage[current_uid]['data']['tools_paintmargin']) + paint_offset = float(tools_storage[current_uid]['data']['tools_paintoffset']) poly_buf = [] for pol in painted_area: pol = Polygon(pol) if not isinstance(pol, Polygon) else pol - buffered_pol = pol.buffer(-paint_margin) + buffered_pol = pol.buffer(-paint_offset) if buffered_pol and not buffered_pol.is_empty: poly_buf.append(buffered_pol) @@ -2264,11 +2282,11 @@ class ToolPaint(AppTool, Gerber): conn = tools_storage[current_uid]['data']['tools_pathconnect'] cont = tools_storage[current_uid]['data']['tools_paintcontour'] - paint_margin = float(tools_storage[current_uid]['data']['tools_paintmargin']) + paint_offset = float(tools_storage[current_uid]['data']['tools_paintoffset']) poly_buf = [] for pol in painted_area: pol = Polygon(pol) if not isinstance(pol, Polygon) else pol - buffered_pol = pol.buffer(-paint_margin) + buffered_pol = pol.buffer(-paint_offset) if buffered_pol and not buffered_pol.is_empty: poly_buf.append(buffered_pol) @@ -2573,12 +2591,12 @@ class ToolPaint(AppTool, Gerber): conn = tools_storage[current_uid]['data']['tools_pathconnect'] cont = tools_storage[current_uid]['data']['tools_paintcontour'] - paint_margin = float(tools_storage[current_uid]['data']['tools_paintmargin']) + paint_offset = float(tools_storage[current_uid]['data']['tools_paintoffset']) poly_buf = [] for pol in painted_area: pol = Polygon(pol) if not isinstance(pol, Polygon) else pol - buffered_pol = pol.buffer(-paint_margin) + buffered_pol = pol.buffer(-paint_offset) if buffered_pol and not buffered_pol.is_empty: poly_buf.append(buffered_pol) @@ -2754,12 +2772,12 @@ class ToolPaint(AppTool, Gerber): conn = tools_storage[current_uid]['data']['tools_pathconnect'] cont = tools_storage[current_uid]['data']['tools_paintcontour'] - paint_margin = float(tools_storage[current_uid]['data']['tools_paintmargin']) + paint_offset = float(tools_storage[current_uid]['data']['tools_paintoffset']) poly_buf = [] for pol in painted_area: pol = Polygon(pol) if not isinstance(pol, Polygon) else pol - buffered_pol = pol.buffer(-paint_margin) + buffered_pol = pol.buffer(-paint_offset) if buffered_pol and not buffered_pol.is_empty: poly_buf.append(buffered_pol) @@ -3535,19 +3553,19 @@ class PaintUI: grid4.addWidget(self.paintoverlap_entry, 1, 1) # Margin - marginlabel = QtWidgets.QLabel('%s:' % _('Margin')) + marginlabel = QtWidgets.QLabel('%s:' % _('Offset')) marginlabel.setToolTip( _("Distance by which to avoid\n" "the edges of the polygon to\n" "be painted.") ) - self.paintmargin_entry = FCDoubleSpinner(callback=self.confirmation_message) - self.paintmargin_entry.set_precision(self.decimals) - self.paintmargin_entry.set_range(-9999.9999, 9999.9999) - self.paintmargin_entry.setObjectName('p_margin') + self.offset_entry = FCDoubleSpinner(callback=self.confirmation_message) + self.offset_entry.set_precision(self.decimals) + self.offset_entry.set_range(-9999.9999, 9999.9999) + self.offset_entry.setObjectName('p_offset') grid4.addWidget(marginlabel, 2, 0) - grid4.addWidget(self.paintmargin_entry, 2, 1) + grid4.addWidget(self.offset_entry, 2, 1) # Method methodlabel = QtWidgets.QLabel('%s:' % _('Method')) diff --git a/app_Main.py b/app_Main.py index 5461af6a..f121de0a 100644 --- a/app_Main.py +++ b/app_Main.py @@ -4071,7 +4071,7 @@ class App(QtCore.QObject): 'cncjob_tooldia', - 'tools_paintmargin', 'tools_painttooldia', "tools_paintcutz", "tools_painttipdia", + 'tools_paintoffset', 'tools_painttooldia', "tools_paintcutz", "tools_painttipdia", "tools_paintnewdia", "tools_ncctools", "tools_nccmargin", "tools_ncccutz", "tools_ncctipdia", diff --git a/defaults.py b/defaults.py index 77eab633..43e5c777 100644 --- a/defaults.py +++ b/defaults.py @@ -460,7 +460,7 @@ class FlatCAMDefaults: "tools_painttooldia": 0.3, "tools_paintorder": 'rev', "tools_paintoverlap": 20, - "tools_paintmargin": 0.0, + "tools_paintoffset": 0.0, "tools_paintmethod": _("Seed"), "tools_selectmethod": _("All"), "tools_paint_area_shape": "square", diff --git a/tclCommands/TclCommandCopperClear.py b/tclCommands/TclCommandCopperClear.py index 33b0fcc4..8397bc78 100644 --- a/tclCommands/TclCommandCopperClear.py +++ b/tclCommands/TclCommandCopperClear.py @@ -194,42 +194,48 @@ class TclCommandCopperClear(TclCommand): # store here the default data for Geometry Data default_data = {} default_data.update({ - "name": outname, - "plot": False, - "cutz": self.app.defaults["geometry_cutz"], - "vtipdia": 0.1, - "vtipangle": 30, - "travelz": self.app.defaults["geometry_travelz"], - "feedrate": self.app.defaults["geometry_feedrate"], - "feedrate_z": self.app.defaults["geometry_feedrate_z"], - "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], - "dwell": self.app.defaults["geometry_dwell"], - "dwelltime": self.app.defaults["geometry_dwelltime"], - "multidepth": self.app.defaults["geometry_multidepth"], - "ppname_g": self.app.defaults["geometry_ppname_g"], - "depthperpass": self.app.defaults["geometry_depthperpass"], - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": self.app.defaults["geometry_extracut_length"], - "toolchange": self.app.defaults["geometry_toolchange"], - "toolchangez": self.app.defaults["geometry_toolchangez"], - "endz": self.app.defaults["geometry_endz"], - "endxy": self.app.defaults["geometry_endxy"], - "spindlespeed": self.app.defaults["geometry_spindlespeed"], - "toolchangexy": self.app.defaults["geometry_toolchangexy"], - "startz": self.app.defaults["geometry_startz"], + "name": outname, + "plot": False, + "cutz": self.app.defaults["geometry_cutz"], + "vtipdia": float(self.app.defaults["geometry_vtipdia"]), + "vtipangle": float(self.app.defaults["geometry_vtipangle"]), + "travelz": self.app.defaults["geometry_travelz"], + "feedrate": self.app.defaults["geometry_feedrate"], + "feedrate_z": self.app.defaults["geometry_feedrate_z"], + "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], + "dwell": self.app.defaults["geometry_dwell"], + "dwelltime": self.app.defaults["geometry_dwelltime"], + "multidepth": self.app.defaults["geometry_multidepth"], + "ppname_g": self.app.defaults["geometry_ppname_g"], + "depthperpass": self.app.defaults["geometry_depthperpass"], + "extracut": self.app.defaults["geometry_extracut"], + "extracut_length": self.app.defaults["geometry_extracut_length"], + "toolchange": self.app.defaults["geometry_toolchange"], + "toolchangez": self.app.defaults["geometry_toolchangez"], + "endz": self.app.defaults["geometry_endz"], + "endxy": self.app.defaults["geometry_endxy"], + "spindlespeed": self.app.defaults["geometry_spindlespeed"], + "toolchangexy": self.app.defaults["geometry_toolchangexy"], + "startz": self.app.defaults["geometry_startz"], - "area_exclusion": self.app.defaults["geometry_area_exclusion"], - "area_shape": self.app.defaults["geometry_area_shape"], - "area_strategy": self.app.defaults["geometry_area_strategy"], - "area_overz": float(self.app.defaults["geometry_area_overz"]), + "area_exclusion": self.app.defaults["geometry_area_exclusion"], + "area_shape": self.app.defaults["geometry_area_shape"], + "area_strategy": self.app.defaults["geometry_area_strategy"], + "area_overz": float(self.app.defaults["geometry_area_overz"]), - "tooldia": self.app.defaults["tools_painttooldia"], - "tools_nccmargin": margin, - "tools_nccmethod": method_data, - "tools_nccref": select, + "tooldia": self.app.defaults["tools_painttooldia"], + "tools_nccoperation": self.app.defaults["tools_nccoperation"], + + "tools_nccmargin": margin, + "tools_nccmethod": method_data, + "tools_nccref": select, "tools_nccconnect": connect, "tools_ncccontour": contour, - "tools_nccoverlap": overlap + "tools_nccoverlap": overlap, + + "tools_ncc_offset_choice": self.app.defaults["tools_ncc_offset_choice"], + "tools_ncc_offset_value": self.app.defaults["tools_ncc_offset_value"], + "tools_nccmilling_type": self.app.defaults["tools_nccmilling_type"] }) ncc_tools = {} @@ -238,13 +244,13 @@ class TclCommandCopperClear(TclCommand): tooluid += 1 ncc_tools.update({ int(tooluid): { - 'tooldia': float('%.*f' % (obj.decimals, tool)), - 'offset': 'Path', - 'offset_value': 0.0, - 'type': 'Iso', - 'tool_type': 'C1', - 'data': dict(default_data), - 'solid_geometry': [] + 'tooldia': float('%.*f' % (obj.decimals, tool)), + 'offset': 'Path', + 'offset_value': 0.0, + 'type': 'Iso', + 'tool_type': 'C1', + 'data': dict(default_data), + 'solid_geometry': [] } }) ncc_tools[int(tooluid)]['data']['tooldia'] = float('%.*f' % (obj.decimals, tool)) diff --git a/tclCommands/TclCommandPaint.py b/tclCommands/TclCommandPaint.py index 4ea0d958..660c872d 100644 --- a/tclCommands/TclCommandPaint.py +++ b/tclCommands/TclCommandPaint.py @@ -34,7 +34,7 @@ class TclCommandPaint(TclCommand): ('tooldia', str), ('overlap', float), ('order', str), - ('margin', float), + ('offset', float), ('method', str), ('connect', str), ('contour', str), @@ -59,7 +59,7 @@ class TclCommandPaint(TclCommand): 'WARNING: No space is allowed between tool diameters. E.g: correct: 0.5,1 / incorrect: 0.5, 1'), ('overlap', 'Percentage of tool diameter to overlap current pass over previous pass. Float [0, 99.9999]\n' 'E.g: for a 25% from tool diameter overlap use -overlap 25'), - ('margin', 'Bounding box margin. Float number.'), + ('offset', 'Distance from the polygon border where painting starts. Float number.'), ('order', 'Can have the values: "no", "fwd" and "rev". String.\n' 'It is useful when there are multiple tools in tooldia parameter.\n' '"no" -> the order used is the one provided.\n' @@ -75,8 +75,8 @@ class TclCommandPaint(TclCommand): 'WARNING: No spaces allowed in the value. Use dot decimals separator.'), ('outname', 'Name of the resulting Geometry object. String. No spaces.'), ]), - 'examples': ["paint obj_name -tooldia 0.3 -margin 0.1 -method 'seed' -all", - "paint obj_name -tooldia 0.3 -margin 0.1 -method 'seed' -single 3.3,2.0"] + 'examples': ["paint obj_name -tooldia 0.3 -offset 0.1 -method 'seed' -all", + "paint obj_name -tooldia 0.3 -offset 0.1 -method 'seed' -single 3.3,2.0"] } def execute(self, args, unnamed_args): @@ -114,10 +114,10 @@ class TclCommandPaint(TclCommand): else: order = str(self.app.defaults["tools_paintorder"]) - if 'margin' in args: - margin = float(args['margin']) + if 'offset' in args: + offset = float(args['offset']) else: - margin = float(self.app.defaults["tools_paintmargin"]) + offset = float(self.app.defaults["tools_paintoffset"]) if 'method' in args: method = args['method'] @@ -172,43 +172,43 @@ class TclCommandPaint(TclCommand): # store here the default data for Geometry Data default_data = {} default_data.update({ - "name": outname, - "plot": False, - "cutz": self.app.defaults["geometry_cutz"], - "vtipdia": 0.1, - "vtipangle": 30, - "travelz": self.app.defaults["geometry_travelz"], - "feedrate": self.app.defaults["geometry_feedrate"], - "feedrate_z": self.app.defaults["geometry_feedrate_z"], - "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], - "dwell": self.app.defaults["geometry_dwell"], - "dwelltime": self.app.defaults["geometry_dwelltime"], - "multidepth": self.app.defaults["geometry_multidepth"], - "ppname_g": self.app.defaults["geometry_ppname_g"], - "depthperpass": self.app.defaults["geometry_depthperpass"], - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": self.app.defaults["geometry_extracut_length"], - "toolchange": self.app.defaults["geometry_toolchange"], - "toolchangez": self.app.defaults["geometry_toolchangez"], - "endz": self.app.defaults["geometry_endz"], - "endxy": self.app.defaults["geometry_endxy"], + "name": outname, + "plot": False, + "cutz": self.app.defaults["geometry_cutz"], + "vtipdia": float(self.app.defaults["tools_painttipdia"]), + "vtipangle": float(self.app.defaults["tools_painttipangle"]), + "travelz": self.app.defaults["geometry_travelz"], + "feedrate": self.app.defaults["geometry_feedrate"], + "feedrate_z": self.app.defaults["geometry_feedrate_z"], + "feedrate_rapid": self.app.defaults["geometry_feedrate_rapid"], + "dwell": self.app.defaults["geometry_dwell"], + "dwelltime": self.app.defaults["geometry_dwelltime"], + "multidepth": self.app.defaults["geometry_multidepth"], + "ppname_g": self.app.defaults["geometry_ppname_g"], + "depthperpass": self.app.defaults["geometry_depthperpass"], + "extracut": self.app.defaults["geometry_extracut"], + "extracut_length": self.app.defaults["geometry_extracut_length"], + "toolchange": self.app.defaults["geometry_toolchange"], + "toolchangez": self.app.defaults["geometry_toolchangez"], + "endz": self.app.defaults["geometry_endz"], + "endxy": self.app.defaults["geometry_endxy"], - "spindlespeed": self.app.defaults["geometry_spindlespeed"], - "toolchangexy": self.app.defaults["geometry_toolchangexy"], - "startz": self.app.defaults["geometry_startz"], + "spindlespeed": self.app.defaults["geometry_spindlespeed"], + "toolchangexy": self.app.defaults["geometry_toolchangexy"], + "startz": self.app.defaults["geometry_startz"], - "area_exclusion": self.app.defaults["geometry_area_exclusion"], - "area_shape": self.app.defaults["geometry_area_shape"], - "area_strategy": self.app.defaults["geometry_area_strategy"], - "area_overz": float(self.app.defaults["geometry_area_overz"]), + "area_exclusion": self.app.defaults["geometry_area_exclusion"], + "area_shape": self.app.defaults["geometry_area_shape"], + "area_strategy": self.app.defaults["geometry_area_strategy"], + "area_overz": float(self.app.defaults["geometry_area_overz"]), - "tooldia": self.app.defaults["tools_painttooldia"], - "paintmargin": margin, - "paintmethod": method, - "selectmethod": select, - "pathconnect": connect, - "paintcontour": contour, - "paintoverlap": overlap + "tooldia": self.app.defaults["tools_painttooldia"], + "tools_paintoffset": offset, + "tools_paintmethod": method, + "tools_selectmethod": select, + "tools_pathconnect": connect, + "tools_paintcontour": contour, + "tools_paintoverlap": overlap }) paint_tools = {}