diff --git a/FlatCAMApp.py b/FlatCAMApp.py
index 82f5a913..5fd18e02 100644
--- a/FlatCAMApp.py
+++ b/FlatCAMApp.py
@@ -288,6 +288,7 @@ class App(QtCore.QObject):
self.excellon_defaults_form = ExcellonPreferencesUI()
self.geometry_defaults_form = GeometryPreferencesUI()
self.cncjob_defaults_form = CNCJobPreferencesUI()
+ self.tools_defaults_form = ToolsPreferencesUI()
# when adding entries here read the comments in the method found bellow named:
# def new_object(self, kind, name, initialize, active=True, fit=True, plot=True)
@@ -318,50 +319,41 @@ class App(QtCore.QObject):
"gerber_isotooldia": self.gerber_defaults_form.gerber_group.iso_tool_dia_entry,
"gerber_isopasses": self.gerber_defaults_form.gerber_group.iso_width_entry,
"gerber_isooverlap": self.gerber_defaults_form.gerber_group.iso_overlap_entry,
- "gerber_ncctools": self.gerber_defaults_form.gerber_group.ncc_tool_dia_entry,
- "gerber_nccoverlap": self.gerber_defaults_form.gerber_group.ncc_overlap_entry,
- "gerber_nccmargin": self.gerber_defaults_form.gerber_group.ncc_margin_entry,
- "gerber_nccmethod": self.gerber_defaults_form.gerber_group.ncc_method_radio,
- "gerber_nccconnect": self.gerber_defaults_form.gerber_group.ncc_connect_cb,
- "gerber_ncccontour": self.gerber_defaults_form.gerber_group.ncc_contour_cb,
- "gerber_nccrest": self.gerber_defaults_form.gerber_group.ncc_rest_cb,
"gerber_combine_passes": self.gerber_defaults_form.gerber_group.combine_passes_cb,
"gerber_milling_type": self.gerber_defaults_form.gerber_group.milling_type_radio,
- "gerber_cutouttooldia": self.gerber_defaults_form.gerber_group.cutout_tooldia_entry,
- "gerber_cutoutmargin": self.gerber_defaults_form.gerber_group.cutout_margin_entry,
- "gerber_cutoutgapsize": self.gerber_defaults_form.gerber_group.cutout_gap_entry,
- "gerber_gaps": self.gerber_defaults_form.gerber_group.gaps_radio,
"gerber_noncoppermargin": self.gerber_defaults_form.gerber_group.noncopper_margin_entry,
"gerber_noncopperrounded": self.gerber_defaults_form.gerber_group.noncopper_rounded_cb,
"gerber_bboxmargin": self.gerber_defaults_form.gerber_group.bbmargin_entry,
"gerber_bboxrounded": self.gerber_defaults_form.gerber_group.bbrounded_cb,
"gerber_circle_steps": self.gerber_defaults_form.gerber_group.circle_steps_entry,
- "excellon_plot": self.excellon_defaults_form.excellon_group.plot_cb,
- "excellon_solid": self.excellon_defaults_form.excellon_group.solid_cb,
- "excellon_drillz": self.excellon_defaults_form.excellon_group.cutz_entry,
- "excellon_travelz": self.excellon_defaults_form.excellon_group.travelz_entry,
- "excellon_feedrate": self.excellon_defaults_form.excellon_group.feedrate_entry,
- "excellon_feedrate_rapid": self.excellon_defaults_form.excellon_group.feedrate_rapid_entry,
- "excellon_spindlespeed": self.excellon_defaults_form.excellon_group.spindlespeed_entry,
- "excellon_dwell": self.excellon_defaults_form.excellon_group.dwell_cb,
- "excellon_dwelltime": self.excellon_defaults_form.excellon_group.dwelltime_entry,
- "excellon_toolchange": self.excellon_defaults_form.excellon_group.toolchange_cb,
- "excellon_toolchangez": self.excellon_defaults_form.excellon_group.toolchangez_entry,
- "excellon_toolchangexy": self.excellon_defaults_form.excellon_group.toolchangexy_entry,
- "excellon_ppname_e": self.excellon_defaults_form.excellon_group.pp_excellon_name_cb,
- "excellon_startz": self.excellon_defaults_form.excellon_group.estartz_entry,
- "excellon_endz": self.excellon_defaults_form.excellon_group.eendz_entry,
- "excellon_tooldia": self.excellon_defaults_form.excellon_group.tooldia_entry,
- "excellon_slot_tooldia": self.excellon_defaults_form.excellon_group.slot_tooldia_entry,
- "excellon_format_upper_in": self.excellon_defaults_form.excellon_group.excellon_format_upper_in_entry,
- "excellon_format_lower_in": self.excellon_defaults_form.excellon_group.excellon_format_lower_in_entry,
- "excellon_format_upper_mm": self.excellon_defaults_form.excellon_group.excellon_format_upper_mm_entry,
- "excellon_format_lower_mm": self.excellon_defaults_form.excellon_group.excellon_format_lower_mm_entry,
- "excellon_zeros": self.excellon_defaults_form.excellon_group.excellon_zeros_radio,
- "excellon_units": self.excellon_defaults_form.excellon_group.excellon_units_radio,
- "excellon_optimization_type": self.excellon_defaults_form.excellon_group.excellon_optimization_radio,
- "excellon_gcode_type": self.excellon_defaults_form.excellon_group.excellon_gcode_type_radio,
+
+ "excellon_plot": self.excellon_defaults_form.excellon_gen_group.plot_cb,
+ "excellon_solid": self.excellon_defaults_form.excellon_gen_group.solid_cb,
+ "excellon_format_upper_in": self.excellon_defaults_form.excellon_gen_group.excellon_format_upper_in_entry,
+ "excellon_format_lower_in": self.excellon_defaults_form.excellon_gen_group.excellon_format_lower_in_entry,
+ "excellon_format_upper_mm": self.excellon_defaults_form.excellon_gen_group.excellon_format_upper_mm_entry,
+ "excellon_format_lower_mm": self.excellon_defaults_form.excellon_gen_group.excellon_format_lower_mm_entry,
+ "excellon_zeros": self.excellon_defaults_form.excellon_gen_group.excellon_zeros_radio,
+ "excellon_units": self.excellon_defaults_form.excellon_gen_group.excellon_units_radio,
+ "excellon_optimization_type": self.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio,
+
+ "excellon_drillz": self.excellon_defaults_form.excellon_opt_group.cutz_entry,
+ "excellon_travelz": self.excellon_defaults_form.excellon_opt_group.travelz_entry,
+ "excellon_feedrate": self.excellon_defaults_form.excellon_opt_group.feedrate_entry,
+ "excellon_feedrate_rapid": self.excellon_defaults_form.excellon_opt_group.feedrate_rapid_entry,
+ "excellon_spindlespeed": self.excellon_defaults_form.excellon_opt_group.spindlespeed_entry,
+ "excellon_dwell": self.excellon_defaults_form.excellon_opt_group.dwell_cb,
+ "excellon_dwelltime": self.excellon_defaults_form.excellon_opt_group.dwelltime_entry,
+ "excellon_toolchange": self.excellon_defaults_form.excellon_opt_group.toolchange_cb,
+ "excellon_toolchangez": self.excellon_defaults_form.excellon_opt_group.toolchangez_entry,
+ "excellon_toolchangexy": self.excellon_defaults_form.excellon_opt_group.toolchangexy_entry,
+ "excellon_ppname_e": self.excellon_defaults_form.excellon_opt_group.pp_excellon_name_cb,
+ "excellon_startz": self.excellon_defaults_form.excellon_opt_group.estartz_entry,
+ "excellon_endz": self.excellon_defaults_form.excellon_opt_group.eendz_entry,
+ "excellon_tooldia": self.excellon_defaults_form.excellon_opt_group.tooldia_entry,
+ "excellon_slot_tooldia": self.excellon_defaults_form.excellon_opt_group.slot_tooldia_entry,
+ "excellon_gcode_type": self.excellon_defaults_form.excellon_opt_group.excellon_gcode_type_radio,
"geometry_plot": self.geometry_defaults_form.geometry_group.plot_cb,
"geometry_segx": self.geometry_defaults_form.geometry_group.segx_entry,
"geometry_segy": self.geometry_defaults_form.geometry_group.segy_entry,
@@ -397,7 +389,20 @@ class App(QtCore.QObject):
"cncjob_fr_decimals": self.cncjob_defaults_form.cncjob_group.fr_dec_entry,
"cncjob_prepend": self.cncjob_defaults_form.cncjob_group.prepend_text,
"cncjob_append": self.cncjob_defaults_form.cncjob_group.append_text,
- "cncjob_steps_per_circle": self.cncjob_defaults_form.cncjob_group.steps_per_circle_entry
+ "cncjob_steps_per_circle": self.cncjob_defaults_form.cncjob_group.steps_per_circle_entry,
+
+ "tools_ncctools": self.tools_defaults_form.tools_ncc_group.ncc_tool_dia_entry,
+ "tools_nccoverlap": self.tools_defaults_form.tools_ncc_group.ncc_overlap_entry,
+ "tools_nccmargin": self.tools_defaults_form.tools_ncc_group.ncc_margin_entry,
+ "tools_nccmethod": self.tools_defaults_form.tools_ncc_group.ncc_method_radio,
+ "tools_nccconnect": self.tools_defaults_form.tools_ncc_group.ncc_connect_cb,
+ "tools_ncccontour": self.tools_defaults_form.tools_ncc_group.ncc_contour_cb,
+ "tools_nccrest": self.tools_defaults_form.tools_ncc_group.ncc_rest_cb,
+
+ "tools_cutouttooldia": self.tools_defaults_form.tools_cutout_group.cutout_tooldia_entry,
+ "tools_cutoutmargin": self.tools_defaults_form.tools_cutout_group.cutout_margin_entry,
+ "tools_cutoutgapsize": self.tools_defaults_form.tools_cutout_group.cutout_gap_entry,
+ "tools_gaps_rect": self.tools_defaults_form.tools_cutout_group.gaps_radio
}
# loads postprocessors
self.postprocessors = load_postprocessors(self)
@@ -407,7 +412,7 @@ class App(QtCore.QObject):
# HPGL postprocessor is only for Geometry objects therefore it should not be in the Excellon Preferences
if name == 'hpgl':
continue
- self.excellon_defaults_form.excellon_group.pp_excellon_name_cb.addItem(name)
+ self.excellon_defaults_form.excellon_opt_group.pp_excellon_name_cb.addItem(name)
self.defaults = LoudDict()
self.defaults.set_change_callback(self.on_defaults_dict_change) # When the dictionary changes.
@@ -440,20 +445,9 @@ class App(QtCore.QObject):
"gerber_isotooldia": 0.016,
"gerber_isopasses": 1,
"gerber_isooverlap": 0.15,
- "gerber_ncctools": "1.0, 0.5",
- "gerber_nccoverlap": 0.4,
- "gerber_nccmargin": 1,
- "gerber_nccmethod": "seed",
- "gerber_nccconnect": True,
- "gerber_ncccontour": True,
- "gerber_nccrest": False,
"gerber_combine_passes": False,
"gerber_milling_type": "cl",
- "gerber_cutouttooldia": 0.07,
- "gerber_cutoutmargin": 0.1,
- "gerber_cutoutgapsize": 0.15,
- "gerber_gaps": "4",
"gerber_noncoppermargin": 0.0,
"gerber_noncopperrounded": False,
"gerber_bboxmargin": 0.0,
@@ -462,6 +456,15 @@ class App(QtCore.QObject):
"excellon_plot": True,
"excellon_solid": False,
+ "excellon_format_upper_in": 2,
+ "excellon_format_lower_in": 4,
+ "excellon_format_upper_mm": 3,
+ "excellon_format_lower_mm": 3,
+ "excellon_zeros": "L",
+ "excellon_units": "INCH",
+ "excellon_optimization_type": 'B',
+ "excellon_search_time": 3,
+
"excellon_drillz": -0.1,
"excellon_travelz": 0.1,
"excellon_feedrate": 3.0,
@@ -477,14 +480,6 @@ class App(QtCore.QObject):
"excellon_startz": None,
"excellon_endz": 2.0,
"excellon_ppname_e": 'default',
- "excellon_format_upper_in": 2,
- "excellon_format_lower_in": 4,
- "excellon_format_upper_mm": 3,
- "excellon_format_lower_mm": 3,
- "excellon_zeros": "L",
- "excellon_units": "INCH",
- "excellon_optimization_type": 'B',
- "excellon_search_time": 3,
"excellon_gcode_type": "drills",
"geometry_plot": True,
@@ -524,6 +519,19 @@ class App(QtCore.QObject):
"cncjob_prepend": "",
"cncjob_append": "",
"cncjob_steps_per_circle": 64,
+
+ "tools_ncctools": "1.0, 0.5",
+ "tools_nccoverlap": 0.4,
+ "tools_nccmargin": 1,
+ "tools_nccmethod": "seed",
+ "tools_nccconnect": True,
+ "tools_ncccontour": True,
+ "tools_nccrest": False,
+ "tools_cutouttooldia": 0.07,
+ "tools_cutoutmargin": 0.1,
+ "tools_cutoutgapsize": 0.15,
+ "tools_gaps_rect": "4",
+
"global_background_timeout": 300000, # Default value is 5 minutes
"global_verbose_error_level": 0, # Shell verbosity 0 = default
# (python trace only for unknown errors),
@@ -585,6 +593,7 @@ class App(QtCore.QObject):
self.excellon_options_form = ExcellonPreferencesUI()
self.geometry_options_form = GeometryPreferencesUI()
self.cncjob_options_form = CNCJobPreferencesUI()
+ self.tools_options_form = ToolsPreferencesUI()
self.options_form_fields = {
"units": self.general_options_form.general_app_group.units_radio,
@@ -596,41 +605,37 @@ class App(QtCore.QObject):
"gerber_isotooldia": self.gerber_options_form.gerber_group.iso_tool_dia_entry,
"gerber_isopasses": self.gerber_options_form.gerber_group.iso_width_entry,
"gerber_isooverlap": self.gerber_options_form.gerber_group.iso_overlap_entry,
- "gerber_ncctools": self.gerber_options_form.gerber_group.ncc_tool_dia_entry,
- "gerber_nccoverlap": self.gerber_options_form.gerber_group.ncc_overlap_entry,
- "gerber_nccmargin": self.gerber_options_form.gerber_group.ncc_margin_entry,
"gerber_combine_passes": self.gerber_options_form.gerber_group.combine_passes_cb,
- "gerber_cutouttooldia": self.gerber_options_form.gerber_group.cutout_tooldia_entry,
- "gerber_cutoutmargin": self.gerber_options_form.gerber_group.cutout_margin_entry,
- "gerber_cutoutgapsize": self.gerber_options_form.gerber_group.cutout_gap_entry,
- "gerber_gaps": self.gerber_options_form.gerber_group.gaps_radio,
"gerber_noncoppermargin": self.gerber_options_form.gerber_group.noncopper_margin_entry,
"gerber_noncopperrounded": self.gerber_options_form.gerber_group.noncopper_rounded_cb,
"gerber_bboxmargin": self.gerber_options_form.gerber_group.bbmargin_entry,
"gerber_bboxrounded": self.gerber_options_form.gerber_group.bbrounded_cb,
- "excellon_plot": self.excellon_options_form.excellon_group.plot_cb,
- "excellon_solid": self.excellon_options_form.excellon_group.solid_cb,
- "excellon_drillz": self.excellon_options_form.excellon_group.cutz_entry,
- "excellon_travelz": self.excellon_options_form.excellon_group.travelz_entry,
- "excellon_feedrate": self.excellon_options_form.excellon_group.feedrate_entry,
- "excellon_feedrate_rapid": self.excellon_options_form.excellon_group.feedrate_rapid_entry,
- "excellon_spindlespeed": self.excellon_options_form.excellon_group.spindlespeed_entry,
- "excellon_dwell": self.excellon_options_form.excellon_group.dwell_cb,
- "excellon_dwelltime": self.excellon_options_form.excellon_group.dwelltime_entry,
- "excellon_toolchange": self.excellon_options_form.excellon_group.toolchange_cb,
- "excellon_toolchangez": self.excellon_options_form.excellon_group.toolchangez_entry,
- "excellon_toolchangexy": self.excellon_options_form.excellon_group.toolchangexy_entry,
- "excellon_tooldia": self.excellon_options_form.excellon_group.tooldia_entry,
- "excellon_ppname_e": self.excellon_options_form.excellon_group.pp_excellon_name_cb,
- "excellon_startz": self.excellon_options_form.excellon_group.estartz_entry,
- "excellon_endz": self.excellon_options_form.excellon_group.eendz_entry,
- "excellon_format_upper_in": self.excellon_options_form.excellon_group.excellon_format_upper_in_entry,
- "excellon_format_lower_in": self.excellon_options_form.excellon_group.excellon_format_lower_in_entry,
- "excellon_format_upper_mm": self.excellon_options_form.excellon_group.excellon_format_upper_mm_entry,
- "excellon_format_lower_mm": self.excellon_options_form.excellon_group.excellon_format_lower_mm_entry,
- "excellon_zeros": self.excellon_options_form.excellon_group.excellon_zeros_radio,
- "excellon_units": self.excellon_options_form.excellon_group.excellon_units_radio,
- "excellon_optimization_type": self.excellon_options_form.excellon_group.excellon_optimization_radio,
+
+ "excellon_plot": self.excellon_options_form.excellon_gen_group.plot_cb,
+ "excellon_solid": self.excellon_options_form.excellon_gen_group.solid_cb,
+ "excellon_format_upper_in": self.excellon_options_form.excellon_gen_group.excellon_format_upper_in_entry,
+ "excellon_format_lower_in": self.excellon_options_form.excellon_gen_group.excellon_format_lower_in_entry,
+ "excellon_format_upper_mm": self.excellon_options_form.excellon_gen_group.excellon_format_upper_mm_entry,
+ "excellon_format_lower_mm": self.excellon_options_form.excellon_gen_group.excellon_format_lower_mm_entry,
+ "excellon_zeros": self.excellon_options_form.excellon_gen_group.excellon_zeros_radio,
+ "excellon_units": self.excellon_options_form.excellon_gen_group.excellon_units_radio,
+ "excellon_optimization_type": self.excellon_options_form.excellon_gen_group.excellon_optimization_radio,
+
+ "excellon_drillz": self.excellon_options_form.excellon_opt_group.cutz_entry,
+ "excellon_travelz": self.excellon_options_form.excellon_opt_group.travelz_entry,
+ "excellon_feedrate": self.excellon_options_form.excellon_opt_group.feedrate_entry,
+ "excellon_feedrate_rapid": self.excellon_options_form.excellon_opt_group.feedrate_rapid_entry,
+ "excellon_spindlespeed": self.excellon_options_form.excellon_opt_group.spindlespeed_entry,
+ "excellon_dwell": self.excellon_options_form.excellon_opt_group.dwell_cb,
+ "excellon_dwelltime": self.excellon_options_form.excellon_opt_group.dwelltime_entry,
+ "excellon_toolchange": self.excellon_options_form.excellon_opt_group.toolchange_cb,
+ "excellon_toolchangez": self.excellon_options_form.excellon_opt_group.toolchangez_entry,
+ "excellon_toolchangexy": self.excellon_options_form.excellon_opt_group.toolchangexy_entry,
+ "excellon_tooldia": self.excellon_options_form.excellon_opt_group.tooldia_entry,
+ "excellon_ppname_e": self.excellon_options_form.excellon_opt_group.pp_excellon_name_cb,
+ "excellon_startz": self.excellon_options_form.excellon_opt_group.estartz_entry,
+ "excellon_endz": self.excellon_options_form.excellon_opt_group.eendz_entry,
+
"geometry_plot": self.geometry_options_form.geometry_group.plot_cb,
"geometry_segx": self.geometry_options_form.geometry_group.segx_entry,
"geometry_segy": self.geometry_options_form.geometry_group.segy_entry,
@@ -656,15 +661,25 @@ class App(QtCore.QObject):
"geometry_depthperpass": self.geometry_options_form.geometry_group.depthperpass_entry,
"geometry_multidepth": self.geometry_options_form.geometry_group.multidepth_cb,
"geometry_extracut": self.geometry_options_form.geometry_group.extracut_cb,
+
"cncjob_plot": self.cncjob_options_form.cncjob_group.plot_cb,
"cncjob_tooldia": self.cncjob_options_form.cncjob_group.tooldia_entry,
"cncjob_prepend": self.cncjob_options_form.cncjob_group.prepend_text,
- "cncjob_append": self.cncjob_options_form.cncjob_group.append_text
+ "cncjob_append": self.cncjob_options_form.cncjob_group.append_text,
+
+ "tools_ncctools": self.tools_options_form.tools_ncc_group.ncc_tool_dia_entry,
+ "tools_nccoverlap": self.tools_options_form.tools_ncc_group.ncc_overlap_entry,
+ "tools_nccmargin": self.tools_options_form.tools_ncc_group.ncc_margin_entry,
+
+ "tools_cutouttooldia": self.tools_options_form.tools_cutout_group.cutout_tooldia_entry,
+ "tools_cutoutmargin": self.tools_options_form.tools_cutout_group.cutout_margin_entry,
+ "tools_cutoutgapsize": self.tools_options_form.tools_cutout_group.cutout_gap_entry,
+ "tools_gaps": self.tools_options_form.tools_cutout_group.gaps_radio,
}
for name in list(self.postprocessors.keys()):
self.geometry_options_form.geometry_group.pp_geometry_name_cb.addItem(name)
- self.excellon_options_form.excellon_group.pp_excellon_name_cb.addItem(name)
+ self.excellon_options_form.excellon_opt_group.pp_excellon_name_cb.addItem(name)
self.options = LoudDict()
self.options.set_change_callback(self.on_options_dict_change)
@@ -678,20 +693,22 @@ class App(QtCore.QObject):
"gerber_isotooldia": 0.016,
"gerber_isopasses": 1,
"gerber_isooverlap": 0.15,
- "gerber_ncctools": "1.0, 0.5",
- "gerber_nccoverlap": 0.4,
- "gerber_nccmargin": 1,
"gerber_combine_passes": True,
- "gerber_cutouttooldia": 0.07,
- "gerber_cutoutmargin": 0.1,
- "gerber_cutoutgapsize": 0.15,
- "gerber_gaps": "4",
"gerber_noncoppermargin": 0.0,
"gerber_noncopperrounded": False,
"gerber_bboxmargin": 0.0,
"gerber_bboxrounded": False,
"excellon_plot": True,
"excellon_solid": False,
+ "excellon_format_upper_in": 2,
+ "excellon_format_lower_in": 4,
+ "excellon_format_upper_mm": 3,
+ "excellon_format_lower_mm": 3,
+ "excellon_units": 'INCH',
+ "excellon_optimization_type": 'B',
+ "excellon_search_time": 3,
+ "excellon_zeros": "L",
+
"excellon_drillz": -0.1,
"excellon_travelz": 0.1,
"excellon_feedrate": 3.0,
@@ -704,16 +721,9 @@ class App(QtCore.QObject):
"excellon_toolchangexy": "0.0, 0.0",
"excellon_tooldia": 0.016,
"excellon_ppname_e": 'default',
- "excellon_format_upper_in": 2,
- "excellon_format_lower_in": 4,
- "excellon_format_upper_mm": 3,
- "excellon_format_lower_mm": 3,
- "excellon_units": 'INCH',
- "excellon_optimization_type": 'B',
- "excellon_search_time": 3,
"excellon_startz": None,
"excellon_endz": 2.0,
- "excellon_zeros": "L",
+
"geometry_plot": True,
"geometry_segx": 0.0,
"geometry_segy": 0.0,
@@ -739,10 +749,20 @@ class App(QtCore.QObject):
"geometry_depthperpass": 0.002,
"geometry_multidepth": False,
"geometry_extracut": False,
+
"cncjob_plot": True,
"cncjob_tooldia": 0.016,
"cncjob_prepend": "",
"cncjob_append": "",
+
+ "tools_ncctools": "1.0, 0.5",
+ "tools_nccoverlap": 0.4,
+ "tools_nccmargin": 1,
+ "tools_cutouttooldia": 0.07,
+ "tools_cutoutmargin": 0.1,
+ "tools_cutoutgapsize": 0.15,
+ "tools_gaps": "4",
+
"global_background_timeout": 300000, # Default value is 5 minutes
"global_verbose_error_level": 0, # Shell verbosity:
# 0 = default(python trace only for unknown errors),
@@ -756,6 +776,7 @@ class App(QtCore.QObject):
self.exc_form = None
self.geo_form = None
self.cnc_form = None
+ self.tools_form = None
self.on_options_combo_change(0) # Will show the initial form
### Define OBJECT COLLECTION ###
@@ -1091,11 +1112,11 @@ class App(QtCore.QObject):
self.general_defaults_form.general_app_group.shell_startup_cb.clicked.connect(self.on_toggle_shell)
# Load the defaults values into the Excellon Format and Excellon Zeros fields
- self.excellon_defaults_form.excellon_group.excellon_defaults_button.clicked.connect(
+ self.excellon_defaults_form.excellon_opt_group.excellon_defaults_button.clicked.connect(
self.on_excellon_defaults_button)
# Load the defaults values into the Excellon Format and Excellon Zeros fields
- self.excellon_options_form.excellon_group.excellon_defaults_button.clicked.connect(
+ self.excellon_options_form.excellon_opt_group.excellon_defaults_button.clicked.connect(
self.on_excellon_options_button)
# this is a flag to signal to other tools that the ui tooltab is locked and not accessible
@@ -2540,9 +2561,9 @@ class App(QtCore.QObject):
return
# Options to scale
- dimensions = ['gerber_isotooldia', 'gerber_cutoutmargin', 'gerber_cutoutgapsize',
- 'gerber_noncoppermargin', 'gerber_bboxmargin','gerber_isooverlap','gerber_nccoverlap',
- 'gerber_nccmargin','gerber_cutouttooldia','gerber_cutoutgapsize','gerber_cutoutmargin',
+ dimensions = ['gerber_isotooldia', 'tools_cutoutmargin', 'tools_cutoutgapsize',
+ 'gerber_noncoppermargin', 'gerber_bboxmargin','gerber_isooverlap','tools_nccoverlap',
+ 'tools_nccmargin','tools_cutouttooldia','tools_cutoutgapsize',
'gerber_noncoppermargin','gerber_bboxmargin',
'excellon_drillz', "excellon_toolchangexy",
'excellon_travelz', 'excellon_feedrate', 'excellon_feedrate_rapid', 'excellon_toolchangez',
@@ -2675,12 +2696,14 @@ class App(QtCore.QObject):
self.exc_form = self.excellon_defaults_form
self.geo_form = self.geometry_defaults_form
self.cnc_form = self.cncjob_defaults_form
+ self.tools_form = self.tools_defaults_form
elif sel == 1:
self.gen_form = self.general_options_form
self.ger_form = self.gerber_options_form
self.exc_form = self.excellon_options_form
self.geo_form = self.geometry_options_form
self.cnc_form = self.cncjob_options_form
+ self.tools_form = self.tools_options_form
else:
return
@@ -2719,6 +2742,13 @@ class App(QtCore.QObject):
self.ui.cncjob_scroll_area.setWidget(self.cnc_form)
self.cnc_form.show()
+ try:
+ self.ui.tools_scroll_area.takeWidget()
+ except:
+ self.log.debug("Nothing to remove")
+ self.ui.tools_scroll_area.setWidget(self.tools_form)
+ self.tools_form.show()
+
self.log.debug("Finished GUI form initialization.")
# self.options2form()
diff --git a/FlatCAMGUI.py b/FlatCAMGUI.py
index 91e9cc89..016ebd9b 100644
--- a/FlatCAMGUI.py
+++ b/FlatCAMGUI.py
@@ -604,6 +604,15 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
self.cncjob_scroll_area = VerticalScrollArea()
self.cncjob_tab_lay.addWidget(self.cncjob_scroll_area)
+ self.tools_tab = QtWidgets.QWidget()
+ self.pref_tab_area.addTab(self.tools_tab, "TOOLS")
+ self.tools_tab_lay = QtWidgets.QVBoxLayout()
+ self.tools_tab_lay.setContentsMargins(2, 2, 2, 2)
+ self.tools_tab.setLayout(self.tools_tab_lay)
+
+ self.tools_scroll_area = VerticalScrollArea()
+ self.tools_tab_lay.addWidget(self.tools_scroll_area)
+
self.pref_tab_bottom_layout = QtWidgets.QHBoxLayout()
self.pref_tab_bottom_layout.setAlignment(QtCore.Qt.AlignVCenter)
self.pref_tab_layout.addLayout(self.pref_tab_bottom_layout)
@@ -911,12 +920,17 @@ class ExcellonPreferencesUI(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent=parent)
- self.layout = QtWidgets.QVBoxLayout()
+ self.layout = QtWidgets.QHBoxLayout()
self.setLayout(self.layout)
- self.excellon_group = ExcellonPrefGroupUI()
- self.excellon_group.setFixedWidth(260)
- self.layout.addWidget(self.excellon_group)
+ self.excellon_gen_group = ExcellonGenPrefGroupUI()
+ self.excellon_gen_group.setFixedWidth(260)
+ self.excellon_opt_group = ExcellonOptPrefGroupUI()
+ self.excellon_opt_group.setFixedWidth(260)
+
+ self.layout.addWidget(self.excellon_gen_group)
+ self.layout.addWidget(self.excellon_opt_group)
+ self.layout.addStretch()
class GeometryPreferencesUI(QtWidgets.QWidget):
@@ -931,6 +945,22 @@ class GeometryPreferencesUI(QtWidgets.QWidget):
self.layout.addWidget(self.geometry_group)
+class ToolsPreferencesUI(QtWidgets.QWidget):
+
+ def __init__(self, parent=None):
+ QtWidgets.QWidget.__init__(self, parent=parent)
+ self.layout = QtWidgets.QHBoxLayout()
+ self.setLayout(self.layout)
+
+ self.tools_ncc_group = ToolsNCCPrefGroupUI()
+ self.tools_ncc_group.setFixedWidth(260)
+ self.tools_cutout_group = ToolsCutoutPrefGroupUI()
+ self.tools_cutout_group.setFixedWidth(260)
+
+ self.layout.addWidget(self.tools_ncc_group)
+ self.layout.addWidget(self.tools_cutout_group)
+ self.layout.addStretch()
+
class CNCJobPreferencesUI(QtWidgets.QWidget):
def __init__(self, parent=None):
@@ -1345,7 +1375,7 @@ class GerberPrefGroupUI(OptionsGroupUI):
grid0.addWidget(self.solid_cb, 0, 1)
# Multicolored CB
- self.multicolored_cb = FCCheckBox(label='Multicolored')
+ self.multicolored_cb = FCCheckBox(label='M-Color')
self.multicolored_cb.setToolTip(
"Draw polygons in different colors."
)
@@ -1427,148 +1457,6 @@ class GerberPrefGroupUI(OptionsGroupUI):
)
self.layout.addWidget(self.clearcopper_label)
- grid5 = QtWidgets.QGridLayout()
- self.layout.addLayout(grid5)
- ncctdlabel = QtWidgets.QLabel('Tools dia:')
- ncctdlabel.setToolTip(
- "Diameters of the cutting tools, separated by ','"
- )
- grid5.addWidget(ncctdlabel, 0, 0)
- self.ncc_tool_dia_entry = FCEntry()
- grid5.addWidget(self.ncc_tool_dia_entry, 0, 1)
-
- nccoverlabel = QtWidgets.QLabel('Overlap:')
- nccoverlabel.setToolTip(
- "How much (fraction) of the tool width to overlap each tool pass.\n"
- "Example:\n"
- "A value here of 0.25 means 25% from the tool diameter found above.\n\n"
- "Adjust the value starting with lower values\n"
- "and increasing it if areas that should be cleared are still \n"
- "not cleared.\n"
- "Lower values = faster processing, faster execution on PCB.\n"
- "Higher values = slow processing and slow execution on CNC\n"
- "due of too many paths."
- )
- grid5.addWidget(nccoverlabel, 1, 0)
- self.ncc_overlap_entry = FloatEntry()
- grid5.addWidget(self.ncc_overlap_entry, 1, 1)
-
- nccmarginlabel = QtWidgets.QLabel('Margin:')
- nccmarginlabel.setToolTip(
- "Bounding box margin."
- )
- grid5.addWidget(nccmarginlabel, 2, 0)
- self.ncc_margin_entry = FloatEntry()
- grid5.addWidget(self.ncc_margin_entry, 2, 1)
-
- # Method
- methodlabel = QtWidgets.QLabel('Method:')
- methodlabel.setToolTip(
- "Algorithm for non-copper clearing:
"
- "Standard: Fixed step inwards.
"
- "Seed-based: Outwards from seed.
"
- "Line-based: Parallel lines."
- )
- grid5.addWidget(methodlabel, 3, 0)
- self.ncc_method_radio = RadioSet([
- {"label": "Standard", "value": "standard"},
- {"label": "Seed-based", "value": "seed"},
- {"label": "Straight lines", "value": "lines"}
- ], orientation='vertical', stretch=False)
- grid5.addWidget(self.ncc_method_radio, 3, 1)
-
- # Connect lines
- pathconnectlabel = QtWidgets.QLabel("Connect:")
- pathconnectlabel.setToolTip(
- "Draw lines between resulting\n"
- "segments to minimize tool lifts."
- )
- grid5.addWidget(pathconnectlabel, 4, 0)
- self.ncc_connect_cb = FCCheckBox()
- grid5.addWidget(self.ncc_connect_cb, 4, 1)
-
- contourlabel = QtWidgets.QLabel("Contour:")
- contourlabel.setToolTip(
- "Cut around the perimeter of the polygon\n"
- "to trim rough edges."
- )
- grid5.addWidget(contourlabel, 5, 0)
- self.ncc_contour_cb = FCCheckBox()
- grid5.addWidget(self.ncc_contour_cb, 5, 1)
-
- restlabel = QtWidgets.QLabel("Rest M.:")
- restlabel.setToolTip(
- "If checked, use 'rest machining'.\n"
- "Basically it will clear copper outside PCB features,\n"
- "using the biggest tool and continue with the next tools,\n"
- "from bigger to smaller, to clear areas of copper that\n"
- "could not be cleared by previous tool.\n"
- "If not checked, use the standard algorithm."
- )
- grid5.addWidget(restlabel, 6, 0)
- self.ncc_rest_cb = FCCheckBox()
- grid5.addWidget(self.ncc_rest_cb, 6, 1)
-
- ## Board cuttout
- self.board_cutout_label = QtWidgets.QLabel("Board cutout:")
- self.board_cutout_label.setToolTip(
- "Create toolpaths to cut around\n"
- "the PCB and separate it from\n"
- "the original board."
- )
- self.layout.addWidget(self.board_cutout_label)
-
- grid2 = QtWidgets.QGridLayout()
- self.layout.addLayout(grid2)
- tdclabel = QtWidgets.QLabel('Tool dia:')
- tdclabel.setToolTip(
- "Diameter of the cutting tool."
- )
- grid2.addWidget(tdclabel, 0, 0)
- self.cutout_tooldia_entry = LengthEntry()
- grid2.addWidget(self.cutout_tooldia_entry, 0, 1)
-
- marginlabel = QtWidgets.QLabel('Margin:')
- marginlabel.setToolTip(
- "Distance from objects at which\n"
- "to draw the cutout."
- )
- grid2.addWidget(marginlabel, 1, 0)
- self.cutout_margin_entry = LengthEntry()
- grid2.addWidget(self.cutout_margin_entry, 1, 1)
-
- gaplabel = QtWidgets.QLabel('Gap size:')
- gaplabel.setToolTip(
- "Size of the gaps in the toolpath\n"
- "that will remain to hold the\n"
- "board in place."
- )
- grid2.addWidget(gaplabel, 2, 0)
- self.cutout_gap_entry = LengthEntry()
- grid2.addWidget(self.cutout_gap_entry, 2, 1)
-
- gapslabel = QtWidgets.QLabel('Gaps:')
- gapslabel.setToolTip(
- "Where to place the gaps, Top/Bottom\n"
- "Left/Rigt, or on all 4 sides."
- )
- grid2.addWidget(gapslabel, 3, 0)
- self.gaps_radio = RadioSet([{'label': '2 (T/B)', 'value': 'tb'},
- {'label': '2 (L/R)', 'value': 'lr'},
- {'label': '4', 'value': '4'}])
- grid2.addWidget(self.gaps_radio, 3, 1)
-
- ## Non-copper regions
- self.noncopper_label = QtWidgets.QLabel("Non-copper regions:")
- self.noncopper_label.setToolTip(
- "Create polygons covering the\n"
- "areas without copper on the PCB.\n"
- "Equivalent to the inverse of this\n"
- "object. Can be used to remove all\n"
- "copper from a specified region."
- )
- self.layout.addWidget(self.noncopper_label)
-
grid3 = QtWidgets.QGridLayout()
self.layout.addLayout(grid3)
@@ -1619,13 +1507,13 @@ class GerberPrefGroupUI(OptionsGroupUI):
self.layout.addStretch()
-class ExcellonPrefGroupUI(OptionsGroupUI):
+class ExcellonGenPrefGroupUI(OptionsGroupUI):
def __init__(self, parent=None):
# OptionsGroupUI.__init__(self, "Excellon Options", parent=parent)
- super(ExcellonPrefGroupUI, self).__init__(self)
+ super(ExcellonGenPrefGroupUI, self).__init__(self)
- self.setTitle(str("Excellon Options"))
+ self.setTitle(str("Excellon General"))
# Plot options
self.plot_options_label = QtWidgets.QLabel("Plot Options:")
@@ -1741,7 +1629,7 @@ class ExcellonPrefGroupUI(OptionsGroupUI):
hlay3 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay3)
- self.excellon_zeros_label = QtWidgets.QLabel('Default Zeros Type:')
+ self.excellon_zeros_label = QtWidgets.QLabel('Default Zeros:')
self.excellon_zeros_label.setAlignment(QtCore.Qt.AlignLeft)
self.excellon_zeros_label.setToolTip(
"This sets the type of Excellon zeros.\n"
@@ -1769,7 +1657,7 @@ class ExcellonPrefGroupUI(OptionsGroupUI):
hlay4 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay4)
- self.excellon_units_label = QtWidgets.QLabel('Default Units Type:')
+ self.excellon_units_label = QtWidgets.QLabel('Default Units:')
self.excellon_units_label.setAlignment(QtCore.Qt.AlignLeft)
self.excellon_units_label.setToolTip(
"This sets the default units of Excellon files.\n"
@@ -1842,6 +1730,17 @@ class ExcellonPrefGroupUI(OptionsGroupUI):
self.excellon_optimization_label.setDisabled(True)
self.excellon_optimization_radio.setDisabled(True)
+ self.layout.addStretch()
+
+
+class ExcellonOptPrefGroupUI(OptionsGroupUI):
+
+ def __init__(self, parent=None):
+ # OptionsGroupUI.__init__(self, "Excellon Options", parent=parent)
+ super(ExcellonOptPrefGroupUI, self).__init__(self)
+
+ self.setTitle(str("Excellon Options"))
+
## Create CNC Job
self.cncjob_label = QtWidgets.QLabel('Create CNC Job')
self.cncjob_label.setToolTip(
@@ -2477,6 +2376,167 @@ class CNCJobPrefGroupUI(OptionsGroupUI):
self.layout.addLayout(grid0)
+class ToolsNCCPrefGroupUI(OptionsGroupUI):
+ def __init__(self, parent=None):
+ # OptionsGroupUI.__init__(self, "NCC Tool Options", parent=parent)
+ super(ToolsNCCPrefGroupUI, self).__init__(self)
+
+ self.setTitle(str("NCC Tool Options"))
+
+ ## Clear non-copper regions
+ self.clearcopper_label = QtWidgets.QLabel("Clear non-copper:")
+ self.clearcopper_label.setToolTip(
+ "Create a Geometry object with\n"
+ "toolpaths to cut all non-copper regions."
+ )
+ self.layout.addWidget(self.clearcopper_label)
+
+ grid0 = QtWidgets.QGridLayout()
+ self.layout.addLayout(grid0)
+
+ ncctdlabel = QtWidgets.QLabel('Tools dia:')
+ ncctdlabel.setToolTip(
+ "Diameters of the cutting tools, separated by ','"
+ )
+ grid0.addWidget(ncctdlabel, 0, 0)
+ self.ncc_tool_dia_entry = FCEntry()
+ grid0.addWidget(self.ncc_tool_dia_entry, 0, 1)
+
+ nccoverlabel = QtWidgets.QLabel('Overlap:')
+ nccoverlabel.setToolTip(
+ "How much (fraction) of the tool width to overlap each tool pass.\n"
+ "Example:\n"
+ "A value here of 0.25 means 25% from the tool diameter found above.\n\n"
+ "Adjust the value starting with lower values\n"
+ "and increasing it if areas that should be cleared are still \n"
+ "not cleared.\n"
+ "Lower values = faster processing, faster execution on PCB.\n"
+ "Higher values = slow processing and slow execution on CNC\n"
+ "due of too many paths."
+ )
+ grid0.addWidget(nccoverlabel, 1, 0)
+ self.ncc_overlap_entry = FloatEntry()
+ grid0.addWidget(self.ncc_overlap_entry, 1, 1)
+
+ nccmarginlabel = QtWidgets.QLabel('Margin:')
+ nccmarginlabel.setToolTip(
+ "Bounding box margin."
+ )
+ grid0.addWidget(nccmarginlabel, 2, 0)
+ self.ncc_margin_entry = FloatEntry()
+ grid0.addWidget(self.ncc_margin_entry, 2, 1)
+
+ # Method
+ methodlabel = QtWidgets.QLabel('Method:')
+ methodlabel.setToolTip(
+ "Algorithm for non-copper clearing:
"
+ "Standard: Fixed step inwards.
"
+ "Seed-based: Outwards from seed.
"
+ "Line-based: Parallel lines."
+ )
+ grid0.addWidget(methodlabel, 3, 0)
+ self.ncc_method_radio = RadioSet([
+ {"label": "Standard", "value": "standard"},
+ {"label": "Seed-based", "value": "seed"},
+ {"label": "Straight lines", "value": "lines"}
+ ], orientation='vertical', stretch=False)
+ grid0.addWidget(self.ncc_method_radio, 3, 1)
+
+ # Connect lines
+ pathconnectlabel = QtWidgets.QLabel("Connect:")
+ pathconnectlabel.setToolTip(
+ "Draw lines between resulting\n"
+ "segments to minimize tool lifts."
+ )
+ grid0.addWidget(pathconnectlabel, 4, 0)
+ self.ncc_connect_cb = FCCheckBox()
+ grid0.addWidget(self.ncc_connect_cb, 4, 1)
+
+ contourlabel = QtWidgets.QLabel("Contour:")
+ contourlabel.setToolTip(
+ "Cut around the perimeter of the polygon\n"
+ "to trim rough edges."
+ )
+ grid0.addWidget(contourlabel, 5, 0)
+ self.ncc_contour_cb = FCCheckBox()
+ grid0.addWidget(self.ncc_contour_cb, 5, 1)
+
+ restlabel = QtWidgets.QLabel("Rest M.:")
+ restlabel.setToolTip(
+ "If checked, use 'rest machining'.\n"
+ "Basically it will clear copper outside PCB features,\n"
+ "using the biggest tool and continue with the next tools,\n"
+ "from bigger to smaller, to clear areas of copper that\n"
+ "could not be cleared by previous tool.\n"
+ "If not checked, use the standard algorithm."
+ )
+ grid0.addWidget(restlabel, 6, 0)
+ self.ncc_rest_cb = FCCheckBox()
+ grid0.addWidget(self.ncc_rest_cb, 6, 1)
+
+ self.layout.addStretch()
+
+
+class ToolsCutoutPrefGroupUI(OptionsGroupUI):
+ def __init__(self, parent=None):
+ # OptionsGroupUI.__init__(self, "Cutout Tool Options", parent=parent)
+ super(ToolsCutoutPrefGroupUI, self).__init__(self)
+
+ self.setTitle(str("Cutout Tool Options"))
+
+ ## Board cuttout
+ self.board_cutout_label = QtWidgets.QLabel("Board cutout:")
+ self.board_cutout_label.setToolTip(
+ "Create toolpaths to cut around\n"
+ "the PCB and separate it from\n"
+ "the original board."
+ )
+ self.layout.addWidget(self.board_cutout_label)
+
+ grid0 = QtWidgets.QGridLayout()
+ self.layout.addLayout(grid0)
+
+ tdclabel = QtWidgets.QLabel('Tool dia:')
+ tdclabel.setToolTip(
+ "Diameter of the cutting tool."
+ )
+ grid0.addWidget(tdclabel, 0, 0)
+ self.cutout_tooldia_entry = LengthEntry()
+ grid0.addWidget(self.cutout_tooldia_entry, 0, 1)
+
+ marginlabel = QtWidgets.QLabel('Margin:')
+ marginlabel.setToolTip(
+ "Distance from objects at which\n"
+ "to draw the cutout."
+ )
+ grid0.addWidget(marginlabel, 1, 0)
+ self.cutout_margin_entry = LengthEntry()
+ grid0.addWidget(self.cutout_margin_entry, 1, 1)
+
+ gaplabel = QtWidgets.QLabel('Gap size:')
+ gaplabel.setToolTip(
+ "Size of the gaps in the toolpath\n"
+ "that will remain to hold the\n"
+ "board in place."
+ )
+ grid0.addWidget(gaplabel, 2, 0)
+ self.cutout_gap_entry = LengthEntry()
+ grid0.addWidget(self.cutout_gap_entry, 2, 1)
+
+ gapslabel = QtWidgets.QLabel('Gaps:')
+ gapslabel.setToolTip(
+ "Where to place the gaps, Top/Bottom\n"
+ "Left/Rigt, or on all 4 sides."
+ )
+ grid0.addWidget(gapslabel, 3, 0)
+ self.gaps_radio = RadioSet([{'label': '2 (T/B)', 'value': 'tb'},
+ {'label': '2 (L/R)', 'value': 'lr'},
+ {'label': '4', 'value': '4'}])
+ grid0.addWidget(self.gaps_radio, 3, 1)
+
+ self.layout.addStretch()
+
+
class FlatCAMActivityView(QtWidgets.QWidget):
def __init__(self, parent=None):
diff --git a/README.md b/README.md
index c00eb022..8ec6d495 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,8 @@ CAD program, and create G-Code for Isolation routing.
- added shortcut key 'L' for creating 'New Excellon'
- added shortcut key combo 'SHIFT+S' for Running a Script.
- modified grbl_laser postprocessor file so it includes a Sxxxx command on the line with M02 (laser active) whenever a value is enter in the Spindlespeed entry field
+- remade the EDIT -> PREFERENCES window, the Excellon and Gerber sections. Created a new section named TOOLS
+
26.01.2019
diff --git a/flatcamTools/ToolCutout.py b/flatcamTools/ToolCutout.py
index c7825b62..3a24a54c 100644
--- a/flatcamTools/ToolCutout.py
+++ b/flatcamTools/ToolCutout.py
@@ -146,8 +146,8 @@ class ToolCutout(FlatCAMTool):
"- one gap Left / one gap Right\n"
"- one gap on each of the 4 sides."
)
- self.gaps_rect_radio = RadioSet([{'label': 'T/B', 'value': 'tb'},
- {'label': 'L/R', 'value': 'lr'},
+ self.gaps_rect_radio = RadioSet([{'label': '2(T/B)', 'value': 'tb'},
+ {'label': '2(L/R)', 'value': 'lr'},
{'label': '4', 'value': '4'}])
form_layout_3.addRow(gapslabel_rect, self.gaps_rect_radio)
@@ -186,11 +186,19 @@ class ToolCutout(FlatCAMTool):
def run(self):
FlatCAMTool.run(self)
+ self.set_ui()
self.app.ui.notebook.setTabText(2, "Cutout Tool")
def install(self, icon=None, separator=None, **kwargs):
FlatCAMTool.install(self, icon, separator, shortcut='ALT+U', **kwargs)
+ def set_ui(self):
+ self.dia.set_value(float(self.app.defaults["tools_cutouttooldia"]))
+ self.margin.set_value(float(self.app.defaults["tools_cutoutmargin"]))
+ self.gapsize.set_value(float(self.app.defaults["tools_cutoutgapsize"]))
+ self.gaps.set_value(4)
+ self.gaps_rect_radio.set_value(str(self.app.defaults["tools_gaps_rect"]))
+
def on_freeform_cutout(self):
def subtract_rectangle(obj_, x0, y0, x1, y1):
diff --git a/flatcamTools/ToolNonCopperClear.py b/flatcamTools/ToolNonCopperClear.py
index 4782a7bd..a603ffe7 100644
--- a/flatcamTools/ToolNonCopperClear.py
+++ b/flatcamTools/ToolNonCopperClear.py
@@ -244,12 +244,12 @@ class NonCopperClear(FlatCAMTool, Gerber):
self.app.ui.notebook.setTabText(2, "NCC Tool")
def set_ui(self):
- self.ncc_overlap_entry.set_value(self.app.defaults["gerber_nccoverlap"])
- self.ncc_margin_entry.set_value(self.app.defaults["gerber_nccmargin"])
- self.ncc_method_radio.set_value(self.app.defaults["gerber_nccmethod"])
- self.ncc_connect_cb.set_value(self.app.defaults["gerber_nccconnect"])
- self.ncc_contour_cb.set_value(self.app.defaults["gerber_ncccontour"])
- self.ncc_rest_cb.set_value(self.app.defaults["gerber_nccrest"])
+ self.ncc_overlap_entry.set_value(self.app.defaults["tools_nccoverlap"])
+ self.ncc_margin_entry.set_value(self.app.defaults["tools_nccmargin"])
+ self.ncc_method_radio.set_value(self.app.defaults["tools_nccmethod"])
+ self.ncc_connect_cb.set_value(self.app.defaults["tools_nccconnect"])
+ self.ncc_contour_cb.set_value(self.app.defaults["tools_ncccontour"])
+ self.ncc_rest_cb.set_value(self.app.defaults["tools_nccrest"])
self.tools_table.setupContextMenu()
self.tools_table.addContextMenu(
@@ -289,18 +289,18 @@ class NonCopperClear(FlatCAMTool, Gerber):
"pathconnect": self.app.defaults["geometry_pathconnect"],
"paintcontour": self.app.defaults["geometry_paintcontour"],
"paintoverlap": self.app.defaults["geometry_paintoverlap"],
- "nccoverlap": self.app.defaults["gerber_nccoverlap"],
- "nccmargin": self.app.defaults["gerber_nccmargin"],
- "nccmethod": self.app.defaults["gerber_nccmethod"],
- "nccconnect": self.app.defaults["gerber_nccconnect"],
- "ncccontour": self.app.defaults["gerber_ncccontour"],
- "nccrest": self.app.defaults["gerber_nccrest"]
+ "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"]
})
try:
dias = [float(eval(dia)) for dia in self.app.defaults["gerber_ncctools"].split(",")]
except:
- log.error("At least one tool diameter needed. Verify in Edit -> Preferences -> Gerber Object -> NCC Tools.")
+ log.error("At least one tool diameter needed. Verify in Edit -> Preferences -> TOOLS -> NCC Tools.")
return
self.tooluid = 0
@@ -550,22 +550,22 @@ class NonCopperClear(FlatCAMTool, Gerber):
def on_ncc(self):
over = self.ncc_overlap_entry.get_value()
- over = over if over else self.app.defaults["gerber_nccoverlap"]
+ over = over if over else self.app.defaults["tools_nccoverlap"]
margin = self.ncc_margin_entry.get_value()
- margin = margin if margin else self.app.defaults["gerber_nccmargin"]
+ margin = margin if margin else self.app.defaults["tools_nccmargin"]
connect = self.ncc_connect_cb.get_value()
- connect = connect if connect else self.app.defaults["gerber_nccconnect"]
+ connect = connect if connect else self.app.defaults["tools_nccconnect"]
contour = self.ncc_contour_cb.get_value()
- contour = contour if contour else self.app.defaults["gerber_ncccontour"]
+ contour = contour if contour else self.app.defaults["tools_ncccontour"]
clearing_method = self.ncc_rest_cb.get_value()
- clearing_method = clearing_method if clearing_method else self.app.defaults["gerber_nccrest"]
+ clearing_method = clearing_method if clearing_method else self.app.defaults["tools_nccrest"]
pol_method = self.ncc_method_radio.get_value()
- pol_method = pol_method if pol_method else self.app.defaults["gerber_nccmethod"]
+ pol_method = pol_method if pol_method else self.app.defaults["tools_nccmethod"]
self.obj_name = self.object_combo.currentText()
# Get source object.