Просмотр исходного кода

- fixed the FlatCAMGerber.merge() function
- added a new menu entry for the Gerber Join function: Edit -> Conversions -> "Join Gerber(s) to Gerber" allowing joining Gerber objects into a final Gerber object

Marius Stanciu 7 лет назад
Родитель
Сommit
37e7c8167d
5 измененных файлов с 210 добавлено и 173 удалено
  1. 76 60
      FlatCAMApp.py
  2. 114 96
      FlatCAMGUI.py
  3. 2 2
      README.md
  4. 10 8
      flatcamTools/ToolNonCopperClear.py
  5. 8 7
      flatcamTools/ToolPaint.py

+ 76 - 60
FlatCAMApp.py

@@ -354,6 +354,7 @@ class App(QtCore.QObject):
             "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,
@@ -363,16 +364,9 @@ class App(QtCore.QObject):
             "geometry_feedrate_z": self.geometry_defaults_form.geometry_group.cncplunge_entry,
             "geometry_feedrate_rapid": self.geometry_defaults_form.geometry_group.cncfeedrate_rapid_entry,
             "geometry_cnctooldia": self.geometry_defaults_form.geometry_group.cnctooldia_entry,
-            "geometry_painttooldia": self.geometry_defaults_form.geometry_group.painttooldia_entry,
             "geometry_spindlespeed": self.geometry_defaults_form.geometry_group.cncspindlespeed_entry,
             "geometry_dwell": self.geometry_defaults_form.geometry_group.dwell_cb,
             "geometry_dwelltime": self.geometry_defaults_form.geometry_group.dwelltime_entry,
-            "geometry_paintoverlap": self.geometry_defaults_form.geometry_group.paintoverlap_entry,
-            "geometry_paintmargin": self.geometry_defaults_form.geometry_group.paintmargin_entry,
-            "geometry_paintmethod": self.geometry_defaults_form.geometry_group.paintmethod_combo,
-            "geometry_selectmethod": self.geometry_defaults_form.geometry_group.selectmethod_combo,
-            "geometry_pathconnect": self.geometry_defaults_form.geometry_group.pathconnect_cb,
-            "geometry_paintcontour": self.geometry_defaults_form.geometry_group.contour_cb,
             "geometry_ppname_g": self.geometry_defaults_form.geometry_group.pp_geometry_name_cb,
             "geometry_toolchange": self.geometry_defaults_form.geometry_group.toolchange_cb,
             "geometry_toolchangez": self.geometry_defaults_form.geometry_group.toolchangez_entry,
@@ -383,6 +377,7 @@ class App(QtCore.QObject):
             "geometry_depthperpass": self.geometry_defaults_form.geometry_group.depthperpass_entry,
             "geometry_extracut": self.geometry_defaults_form.geometry_group.extracut_cb,
             "geometry_circle_steps": self.geometry_defaults_form.geometry_group.circle_steps_entry,
+
             "cncjob_plot": self.cncjob_defaults_form.cncjob_group.plot_cb,
             "cncjob_tooldia": self.cncjob_defaults_form.cncjob_group.tooldia_entry,
             "cncjob_coords_decimals": self.cncjob_defaults_form.cncjob_group.coords_dec_entry,
@@ -402,7 +397,15 @@ class App(QtCore.QObject):
             "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
+            "tools_gaps_rect": self.tools_defaults_form.tools_cutout_group.gaps_radio,
+
+            "tools_painttooldia": self.tools_defaults_form.tools_paint_group.painttooldia_entry,
+            "tools_paintoverlap": self.tools_defaults_form.tools_paint_group.paintoverlap_entry,
+            "tools_paintmargin": self.tools_defaults_form.tools_paint_group.paintmargin_entry,
+            "tools_paintmethod": self.tools_defaults_form.tools_paint_group.paintmethod_combo,
+            "tools_selectmethod": self.tools_defaults_form.tools_paint_group.selectmethod_combo,
+            "tools_pathconnect": self.tools_defaults_form.tools_paint_group.pathconnect_cb,
+            "tools_paintcontour": self.tools_defaults_form.tools_paint_group.contour_cb
         }
         # loads postprocessors
         self.postprocessors = load_postprocessors(self)
@@ -439,6 +442,35 @@ class App(QtCore.QObject):
             "global_workspaceT": "A4P",
             "global_toolbar_view": 31,
 
+            "global_background_timeout": 300000,  # Default value is 5 minutes
+            "global_verbose_error_level": 0,  # Shell verbosity 0 = default
+            # (python trace only for unknown errors),
+            # 1 = show trace(show trace allways),
+            # 2 = (For the future).
+
+            # Persistence
+            "global_last_folder": None,
+            "global_last_save_folder": None,
+
+            # Default window geometry
+            "global_def_win_x": 100,
+            "global_def_win_y": 100,
+            "global_def_win_w": 1024,
+            "global_def_win_h": 650,
+
+            # Constants...
+            "global_defaults_save_period_ms": 20000,  # Time between default saves.
+            "global_shell_shape": [500, 300],  # Shape of the shell in pixels.
+            "global_shell_at_startup": False,  # Show the shell at startup.
+            "global_recent_limit": 10,  # Max. items in recent list.
+            "fit_key": '1',
+            "zoom_out_key": '2',
+            "zoom_in_key": '3',
+            "grid_toggle_key": 'G',
+            "zoom_ratio": 1.5,
+            "global_point_clipboard_format": "(%.4f, %.4f)",
+            "global_zdownrate": None,
+
             "gerber_plot": True,
             "gerber_solid": True,
             "gerber_multicolored": False,
@@ -448,14 +480,15 @@ class App(QtCore.QObject):
 
             "gerber_combine_passes": False,
             "gerber_milling_type": "cl",
-            "gerber_noncoppermargin": 0.0,
+            "gerber_noncoppermargin": 0.1,
             "gerber_noncopperrounded": False,
-            "gerber_bboxmargin": 0.0,
+            "gerber_bboxmargin": 0.1,
             "gerber_bboxrounded": False,
             "gerber_circle_steps": 64,
+            "gerber_use_buffer_for_union": True,
 
             "excellon_plot": True,
-            "excellon_solid": False,
+            "excellon_solid": True,
             "excellon_format_upper_in": 2,
             "excellon_format_lower_in": 4,
             "excellon_format_upper_mm": 3,
@@ -499,13 +532,6 @@ class App(QtCore.QObject):
             "geometry_spindlespeed": None,
             "geometry_dwell": False,
             "geometry_dwelltime": 1,
-            "geometry_painttooldia": 0.07,
-            "geometry_paintoverlap": 0.15,
-            "geometry_paintmargin": 0.0,
-            "geometry_paintmethod": "seed",
-            "geometry_selectmethod": "single",
-            "geometry_pathconnect": True,
-            "geometry_paintcontour": True,
             "geometry_ppname_g": 'default',
             "geometry_depthperpass": 0.002,
             "geometry_multidepth": False,
@@ -522,45 +548,25 @@ class App(QtCore.QObject):
 
             "tools_ncctools": "1.0, 0.5",
             "tools_nccoverlap": 0.4,
-            "tools_nccmargin": 1,
+            "tools_nccmargin": 0.1,
             "tools_nccmethod": "seed",
             "tools_nccconnect": True,
             "tools_ncccontour": True,
             "tools_nccrest": False,
-            "tools_cutouttooldia": 0.07,
+
+            "tools_cutouttooldia": 0.1,
             "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),
-                                       # 1 = show trace(show trace allways),
-                                       # 2 = (For the future).
-
-            # Persistence
-            "global_last_folder": None,
-            "global_last_save_folder": None,
+            "tools_painttooldia": 0.07,
+            "tools_paintoverlap": 0.15,
+            "tools_paintmargin": 0.0,
+            "tools_paintmethod": "seed",
+            "tools_selectmethod": "single",
+            "tools_pathconnect": True,
+            "tools_paintcontour": True
 
-            # Default window geometry
-            "global_def_win_x": 100,
-            "global_def_win_y": 100,
-            "global_def_win_w": 1024,
-            "global_def_win_h": 650,
-
-            # Constants...
-            "global_defaults_save_period_ms": 20000,   # Time between default saves.
-            "global_shell_shape": [500, 300],          # Shape of the shell in pixels.
-            "global_shell_at_startup": False,          # Show the shell at startup.
-            "global_recent_limit": 10,                 # Max. items in recent list.
-            "fit_key": '1',
-            "zoom_out_key": '2',
-            "zoom_in_key": '3',
-            "grid_toggle_key": 'G',
-            "zoom_ratio": 1.5,
-            "global_point_clipboard_format": "(%.4f, %.4f)",
-            "global_zdownrate": None,
-            "gerber_use_buffer_for_union": True
         })
 
         ###############################
@@ -648,10 +654,6 @@ class App(QtCore.QObject):
             "geometry_dwell": self.geometry_options_form.geometry_group.dwell_cb,
             "geometry_dwelltime": self.geometry_options_form.geometry_group.dwelltime_entry,
             "geometry_cnctooldia": self.geometry_options_form.geometry_group.cnctooldia_entry,
-            "geometry_painttooldia": self.geometry_options_form.geometry_group.painttooldia_entry,
-            "geometry_paintoverlap": self.geometry_options_form.geometry_group.paintoverlap_entry,
-            "geometry_paintmargin": self.geometry_options_form.geometry_group.paintmargin_entry,
-            "geometry_selectmethod": self.geometry_options_form.geometry_group.selectmethod_combo,
             "geometry_ppname_g": self.geometry_options_form.geometry_group.pp_geometry_name_cb,
             "geometry_toolchange": self.geometry_options_form.geometry_group.toolchange_cb,
             "geometry_toolchangez": self.geometry_options_form.geometry_group.toolchangez_entry,
@@ -675,6 +677,14 @@ class App(QtCore.QObject):
             "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,
+
+            "tools_painttooldia": self.tools_options_form.tools_paint_group.painttooldia_entry,
+            "tools_paintoverlap": self.tools_options_form.tools_paint_group.paintoverlap_entry,
+            "tools_paintmargin": self.tools_options_form.tools_paint_group.paintmargin_entry,
+            "tools_paintmethod": self.tools_options_form.tools_paint_group.paintmethod_combo,
+            "tools_selectmethod": self.tools_options_form.tools_paint_group.selectmethod_combo,
+            "tools_pathconnect": self.tools_options_form.tools_paint_group.pathconnect_cb,
+            "tools_paintcontour": self.tools_options_form.tools_paint_group.contour_cb
         }
 
         for name in list(self.postprocessors.keys()):
@@ -687,6 +697,11 @@ class App(QtCore.QObject):
             "units": "IN",
             "global_gridx": 1.0,
             "global_gridy": 1.0,
+            "global_background_timeout": 300000,  # Default value is 5 minutes
+            "global_verbose_error_level": 0,  # Shell verbosity:
+            # 0 = default(python trace only for unknown errors),
+            # 1 = show trace(show trace allways), 2 = (For the future).
+
             "gerber_plot": True,
             "gerber_solid": True,
             "gerber_multicolored": False,
@@ -698,6 +713,7 @@ class App(QtCore.QObject):
             "gerber_noncopperrounded": False,
             "gerber_bboxmargin": 0.0,
             "gerber_bboxrounded": False,
+
             "excellon_plot": True,
             "excellon_solid": False,
             "excellon_format_upper_in": 2,
@@ -736,10 +752,6 @@ class App(QtCore.QObject):
             "geometry_dwell": True,
             "geometry_dwelltime": 1000,
             "geometry_cnctooldia": 0.016,
-            "geometry_painttooldia": 0.07,
-            "geometry_paintoverlap": 0.15,
-            "geometry_paintmargin": 0.0,
-            "geometry_selectmethod": "single",
             "geometry_toolchange": False,
             "geometry_toolchangez": 2.0,
             "geometry_toolchangexy": "0.0, 0.0",
@@ -763,10 +775,14 @@ class App(QtCore.QObject):
             "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),
-                                       # 1 = show trace(show trace allways), 2 = (For the future).
+            "tools_painttooldia": 0.07,
+            "tools_paintoverlap": 0.15,
+            "tools_paintmargin": 0.0,
+            "tools_paintmethod": "seed",
+            "tools_selectmethod": "single",
+            "tools_pathconnect": True,
+            "tools_paintcontour": True
+
         })
 
         self.options.update(self.defaults)  # Copy app defaults to project options

+ 114 - 96
FlatCAMGUI.py

@@ -960,10 +960,18 @@ class ToolsPreferencesUI(QtWidgets.QWidget):
 
         self.tools_ncc_group = ToolsNCCPrefGroupUI()
         self.tools_ncc_group.setFixedWidth(260)
+        self.tools_paint_group = ToolsPaintPrefGroupUI()
+        self.tools_paint_group.setFixedWidth(260)
+
         self.tools_cutout_group = ToolsCutoutPrefGroupUI()
         self.tools_cutout_group.setFixedWidth(260)
 
-        self.layout.addWidget(self.tools_ncc_group)
+        self.vlay = QtWidgets.QVBoxLayout()
+        self.vlay.addWidget(self.tools_ncc_group)
+        self.vlay.addWidget(self.tools_paint_group)
+
+        self.layout.addLayout(self.vlay)
+
         self.layout.addWidget(self.tools_cutout_group)
         self.layout.addStretch()
 
@@ -2187,101 +2195,6 @@ class GeometryPrefGroupUI(OptionsGroupUI):
         self.segy_entry = FCEntry()
         grid2.addWidget(self.segy_entry, 18, 1)
 
-        # ------------------------------
-        ## Paint area
-        # ------------------------------
-        self.paint_label = QtWidgets.QLabel('<b>Paint Area:</b>')
-        self.paint_label.setToolTip(
-            "Creates tool paths to cover the\n"
-            "whole area of a polygon (remove\n"
-            "all copper). You will be asked\n"
-            "to click on the desired polygon."
-        )
-        self.layout.addWidget(self.paint_label)
-
-        grid4 = QtWidgets.QGridLayout()
-        self.layout.addLayout(grid4)
-
-        # Tool dia
-        ptdlabel = QtWidgets.QLabel('Tool dia:')
-        ptdlabel.setToolTip(
-            "Diameter of the tool to\n"
-            "be used in the operation."
-        )
-        grid4.addWidget(ptdlabel, 0, 0)
-
-        self.painttooldia_entry = LengthEntry()
-        grid4.addWidget(self.painttooldia_entry, 0, 1)
-
-        # Overlap
-        ovlabel = QtWidgets.QLabel('Overlap:')
-        ovlabel.setToolTip(
-            "How much (fraction) of the tool\n"
-            "width to overlap each tool pass."
-        )
-        grid4.addWidget(ovlabel, 1, 0)
-        self.paintoverlap_entry = LengthEntry()
-        grid4.addWidget(self.paintoverlap_entry, 1, 1)
-
-        # Margin
-        marginlabel = QtWidgets.QLabel('Margin:')
-        marginlabel.setToolTip(
-            "Distance by which to avoid\n"
-            "the edges of the polygon to\n"
-            "be painted."
-        )
-        grid4.addWidget(marginlabel, 2, 0)
-        self.paintmargin_entry = LengthEntry()
-        grid4.addWidget(self.paintmargin_entry, 2, 1)
-
-        # Method
-        methodlabel = QtWidgets.QLabel('Method:')
-        methodlabel.setToolTip(
-            "Algorithm to paint the polygon:<BR>"
-            "<B>Standard</B>: Fixed step inwards.<BR>"
-            "<B>Seed-based</B>: Outwards from seed."
-        )
-        grid4.addWidget(methodlabel, 3, 0)
-        self.paintmethod_combo = RadioSet([
-            {"label": "Standard", "value": "standard"},
-            {"label": "Seed-based", "value": "seed"},
-            {"label": "Straight lines", "value": "lines"}
-        ], orientation='vertical', stretch=False)
-        grid4.addWidget(self.paintmethod_combo, 3, 1)
-
-        # Connect lines
-        pathconnectlabel = QtWidgets.QLabel("Connect:")
-        pathconnectlabel.setToolTip(
-            "Draw lines between resulting\n"
-            "segments to minimize tool lifts."
-        )
-        grid4.addWidget(pathconnectlabel, 4, 0)
-        self.pathconnect_cb = FCCheckBox()
-        grid4.addWidget(self.pathconnect_cb, 4, 1)
-
-        # Paint contour
-        contourlabel = QtWidgets.QLabel("Contour:")
-        contourlabel.setToolTip(
-            "Cut around the perimeter of the polygon\n"
-            "to trim rough edges."
-        )
-        grid4.addWidget(contourlabel, 5, 0)
-        self.contour_cb = FCCheckBox()
-        grid4.addWidget(self.contour_cb, 5, 1)
-
-        # Polygon selection
-        selectlabel = QtWidgets.QLabel('Selection:')
-        selectlabel.setToolTip(
-            "How to select the polygons to paint."
-        )
-        grid4.addWidget(selectlabel, 6, 0)
-        self.selectmethod_combo = RadioSet([
-            {"label": "Single", "value": "single"},
-            {"label": "All", "value": "all"},
-            # {"label": "Rectangle", "value": "rectangle"}
-        ])
-        grid4.addWidget(self.selectmethod_combo, 6, 1)
-
         self.layout.addStretch()
 
 
@@ -2543,6 +2456,111 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI):
         self.layout.addStretch()
 
 
+class ToolsPaintPrefGroupUI(OptionsGroupUI):
+    def __init__(self, parent=None):
+        # OptionsGroupUI.__init__(self, "Paint Area Tool Options", parent=parent)
+        super(ToolsPaintPrefGroupUI, self).__init__(self)
+
+        self.setTitle(str("Paint Area Tool Options"))
+
+        # ------------------------------
+        ## Paint area
+        # ------------------------------
+        self.paint_label = QtWidgets.QLabel('<b>Paint Area:</b>')
+        self.paint_label.setToolTip(
+            "Creates tool paths to cover the\n"
+            "whole area of a polygon (remove\n"
+            "all copper). You will be asked\n"
+            "to click on the desired polygon."
+        )
+        self.layout.addWidget(self.paint_label)
+
+        grid0 = QtWidgets.QGridLayout()
+        self.layout.addLayout(grid0)
+
+        # Tool dia
+        ptdlabel = QtWidgets.QLabel('Tool dia:')
+        ptdlabel.setToolTip(
+            "Diameter of the tool to\n"
+            "be used in the operation."
+        )
+        grid0.addWidget(ptdlabel, 0, 0)
+
+        self.painttooldia_entry = LengthEntry()
+        grid0.addWidget(self.painttooldia_entry, 0, 1)
+
+        # Overlap
+        ovlabel = QtWidgets.QLabel('Overlap:')
+        ovlabel.setToolTip(
+            "How much (fraction) of the tool\n"
+            "width to overlap each tool pass."
+        )
+        grid0.addWidget(ovlabel, 1, 0)
+        self.paintoverlap_entry = LengthEntry()
+        grid0.addWidget(self.paintoverlap_entry, 1, 1)
+
+        # Margin
+        marginlabel = QtWidgets.QLabel('Margin:')
+        marginlabel.setToolTip(
+            "Distance by which to avoid\n"
+            "the edges of the polygon to\n"
+            "be painted."
+        )
+        grid0.addWidget(marginlabel, 2, 0)
+        self.paintmargin_entry = LengthEntry()
+        grid0.addWidget(self.paintmargin_entry, 2, 1)
+
+        # Method
+        methodlabel = QtWidgets.QLabel('Method:')
+        methodlabel.setToolTip(
+            "Algorithm to paint the polygon:<BR>"
+            "<B>Standard</B>: Fixed step inwards.<BR>"
+            "<B>Seed-based</B>: Outwards from seed."
+        )
+        grid0.addWidget(methodlabel, 3, 0)
+        self.paintmethod_combo = RadioSet([
+            {"label": "Standard", "value": "standard"},
+            {"label": "Seed-based", "value": "seed"},
+            {"label": "Straight lines", "value": "lines"}
+        ], orientation='vertical', stretch=False)
+        grid0.addWidget(self.paintmethod_combo, 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.pathconnect_cb = FCCheckBox()
+        grid0.addWidget(self.pathconnect_cb, 4, 1)
+
+        # Paint contour
+        contourlabel = QtWidgets.QLabel("Contour:")
+        contourlabel.setToolTip(
+            "Cut around the perimeter of the polygon\n"
+            "to trim rough edges."
+        )
+        grid0.addWidget(contourlabel, 5, 0)
+        self.contour_cb = FCCheckBox()
+        grid0.addWidget(self.contour_cb, 5, 1)
+
+        # Polygon selection
+        selectlabel = QtWidgets.QLabel('Selection:')
+        selectlabel.setToolTip(
+            "How to select the polygons to paint."
+        )
+        grid0.addWidget(selectlabel, 6, 0)
+        self.selectmethod_combo = RadioSet([
+            {"label": "Single", "value": "single"},
+            {"label": "All", "value": "all"},
+            # {"label": "Rectangle", "value": "rectangle"}
+        ])
+        grid0.addWidget(self.selectmethod_combo, 6, 1)
+
+        self.layout.addStretch()
+
+
 class FlatCAMActivityView(QtWidgets.QWidget):
 
     def __init__(self, parent=None):

+ 2 - 2
README.md

@@ -13,7 +13,7 @@ CAD program, and create G-Code for Isolation routing.
 
 - fixed the FlatCAMGerber.merge() function
 - added a new menu entry for the Gerber Join function: Edit -> Conversions -> "Join Gerber(s) to Gerber" allowing joining Gerber objects into a final Gerber object
-
+- moved Paint Tool defaults from Geometry section to the Tools section in Edit -> Preferences
 
 27.01.2018
 
@@ -23,7 +23,7 @@ CAD program, and create G-Code for Isolation routing.
 - added options for trace segmentation that can be useful for auto-levelling (code snippet from Lei Zheng from a rejected pull request on FlatCAM https://bitbucket.org/realthunder/ )
 - 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
+- modified grbl_laser postprocessor file so it includes a Sxxxx command on the line with M03 (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

+ 10 - 8
flatcamTools/ToolNonCopperClear.py

@@ -263,7 +263,6 @@ class NonCopperClear(FlatCAMTool, Gerber):
         self.default_data.update({
             "name": '_ncc',
             "plot": self.app.defaults["geometry_plot"],
-            "tooldia": self.app.defaults["geometry_painttooldia"],
             "cutz": self.app.defaults["geometry_cutz"],
             "vtipdia": 0.1,
             "vtipangle": 30,
@@ -283,12 +282,15 @@ class NonCopperClear(FlatCAMTool, Gerber):
             "spindlespeed": self.app.defaults["geometry_spindlespeed"],
             "toolchangexy": self.app.defaults["geometry_toolchangexy"],
             "startz": self.app.defaults["geometry_startz"],
-            "paintmargin": self.app.defaults["geometry_paintmargin"],
-            "paintmethod": self.app.defaults["geometry_paintmethod"],
-            "selectmethod": self.app.defaults["geometry_selectmethod"],
-            "pathconnect": self.app.defaults["geometry_pathconnect"],
-            "paintcontour": self.app.defaults["geometry_paintcontour"],
-            "paintoverlap": self.app.defaults["geometry_paintoverlap"],
+
+            "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"],
+
             "nccoverlap": self.app.defaults["tools_nccoverlap"],
             "nccmargin": self.app.defaults["tools_nccmargin"],
             "nccmethod": self.app.defaults["tools_nccmethod"],
@@ -298,7 +300,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
         })
 
         try:
-            dias = [float(eval(dia)) for dia in self.app.defaults["gerber_ncctools"].split(",")]
+            dias = [float(eval(dia)) for dia in self.app.defaults["tools_ncctools"].split(",")]
         except:
             log.error("At least one tool diameter needed. Verify in Edit -> Preferences -> TOOLS -> NCC Tools.")
             return

+ 8 - 7
flatcamTools/ToolPaint.py

@@ -250,7 +250,6 @@ class ToolPaint(FlatCAMTool, Gerber):
         self.default_data.update({
             "name": '_paint',
             "plot": self.app.defaults["geometry_plot"],
-            "tooldia": self.app.defaults["geometry_painttooldia"],
             "cutz": self.app.defaults["geometry_cutz"],
             "vtipdia": 0.1,
             "vtipangle": 30,
@@ -270,12 +269,14 @@ class ToolPaint(FlatCAMTool, Gerber):
             "spindlespeed": self.app.defaults["geometry_spindlespeed"],
             "toolchangexy": self.app.defaults["geometry_toolchangexy"],
             "startz": self.app.defaults["geometry_startz"],
-            "paintmargin": self.app.defaults["geometry_paintmargin"],
-            "paintmethod": self.app.defaults["geometry_paintmethod"],
-            "selectmethod": self.app.defaults["geometry_selectmethod"],
-            "pathconnect": self.app.defaults["geometry_pathconnect"],
-            "paintcontour": self.app.defaults["geometry_paintcontour"],
-            "paintoverlap": self.app.defaults["geometry_paintoverlap"]
+
+            "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"]
         })
 
         self.tool_type_item_options = ["C1", "C2", "C3", "C4", "B", "V"]