From 209683b2db62395b6dcd190faa34e8db096654e7 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 27 Mar 2019 12:26:19 +0200 Subject: [PATCH] - added new feature: user can delete apertures in Advanced mode and then create a new FlatCAM Gerber object --- FlatCAMObj.py | 20 ++++++++++++++++++++ README.md | 4 ++++ flatcamGUI/ObjectUI.py | 39 +++++++++++++++++++++++++++------------ 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index a0b02767..9a45c171 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -532,6 +532,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): self.ui.generate_noncopper_button.clicked.connect(self.on_generatenoncopper_button_click) self.ui.aperture_table_visibility_cb.stateChanged.connect(self.on_aperture_table_visibility_change) self.ui.follow_cb.stateChanged.connect(self.on_follow_cb_click) + self.ui.delete_aperture_button.clicked.connect(self.on_delete_aperture_click) self.ui.scale_aperture_button.clicked.connect(self.on_scale_aperture_click) self.ui.buffer_aperture_button.clicked.connect(self.on_buffer_aperture_click) self.ui.new_grb_button.clicked.connect(self.on_new_modified_gerber) @@ -999,6 +1000,8 @@ class FlatCAMGerber(FlatCAMObj, Gerber): def on_aperture_table_visibility_change(self): if self.ui.aperture_table_visibility_cb.isChecked(): self.ui.apertures_table.setVisible(True) + self.ui.delete_aperture_label.setVisible(True) + self.ui.delete_aperture_button.setVisible(True) self.ui.scale_aperture_label.setVisible(True) self.ui.scale_aperture_entry.setVisible(True) self.ui.scale_aperture_button.setVisible(True) @@ -1013,6 +1016,8 @@ class FlatCAMGerber(FlatCAMObj, Gerber): self.ui.mark_all_cb.setChecked(False) else: self.ui.apertures_table.setVisible(False) + self.ui.delete_aperture_label.setVisible(False) + self.ui.delete_aperture_button.setVisible(False) self.ui.scale_aperture_label.setVisible(False) self.ui.scale_aperture_entry.setVisible(False) self.ui.scale_aperture_button.setVisible(False) @@ -1030,6 +1035,21 @@ class FlatCAMGerber(FlatCAMObj, Gerber): self.ui.apertures_table.cellWidget(row, 5).set_value(False) self.clear_plot_apertures() + def on_delete_aperture_click(self, signal): + apid_to_del = [] + + # create a list of apertures to be deleted + for sel_item in self.ui.apertures_table.selectedItems(): + sel_row = sel_item.row() + apid_to_del.append(self.ui.apertures_table.item(sel_row, 1).text()) + + # actual aperture removal + for apid in apid_to_del: + if apid in self.apertures: + self.apertures.pop(apid) + if apid in self.aperture_macros: + self.apertures_macros.pop(apid) + def on_scale_aperture_click(self, signal): try: factor = self.ui.scale_aperture_entry.get_value() diff --git a/README.md b/README.md index 4142076e..a8f2aad2 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +27.03.2019 + +- added new feature: user can delete apertures in Advanced mode and then create a new FlatCAM Gerber object + 26.03.2019 - fixed an issue where the Geometry plot function protested that it does not have an parameter that is used by the CNCJob plot function. But both inherit from FaltCAMObj plot function which does not have that parameter so something may need to be changed. Until then I provided a phony keyboard parameter to make that function 'shut up' diff --git a/flatcamGUI/ObjectUI.py b/flatcamGUI/ObjectUI.py index dcfdd2a0..5bf05bf5 100644 --- a/flatcamGUI/ObjectUI.py +++ b/flatcamGUI/ObjectUI.py @@ -101,7 +101,7 @@ class ObjectUI(QtWidgets.QWidget): self.scale_button.setToolTip( _("Perform scaling operation.") ) - self.scale_button.setFixedWidth(50) + self.scale_button.setFixedWidth(70) self.scale_grid.addWidget(self.scale_button, 0, 2) #### Offset #### @@ -128,7 +128,7 @@ class ObjectUI(QtWidgets.QWidget): self.offset_button.setToolTip( _("Perform the offset operation.") ) - self.offset_button.setFixedWidth(50) + self.offset_button.setFixedWidth(70) self.offset_grid.addWidget(self.offset_button, 0, 2) layout.addStretch() @@ -244,10 +244,25 @@ class GerberObjectUI(ObjectUI): _("Mark the aperture instances on canvas.")) # self.apertures_table.setColumnHidden(5, True) - #### Aperture Scale #### + #### Aperture EDIT #### self.transform_aperture_grid = QtWidgets.QGridLayout() self.custom_box.addLayout(self.transform_aperture_grid) + # Delete Aperture + self.delete_aperture_label = QtWidgets.QLabel(_('Delete aperture:')) + self.delete_aperture_label.setToolTip( + _("Delete selected apertures.") + ) + self.delete_aperture_label.setFixedWidth(90) + self.transform_aperture_grid.addWidget(self.delete_aperture_label, 0, 0) + + self.delete_aperture_button = QtWidgets.QPushButton(_('Delete')) + self.delete_aperture_button.setToolTip( + _("Delete selected apertures.") + ) + self.delete_aperture_button.setFixedWidth(70) + self.transform_aperture_grid.addWidget(self.delete_aperture_button, 0, 2) + # Scale Aperture Factor self.scale_aperture_label = QtWidgets.QLabel(_('Scale Factor:')) self.scale_aperture_label.setToolTip( @@ -256,18 +271,18 @@ class GerberObjectUI(ObjectUI): "geometric features of this object.") ) self.scale_aperture_label.setFixedWidth(90) - self.transform_aperture_grid.addWidget(self.scale_aperture_label, 0, 0) + self.transform_aperture_grid.addWidget(self.scale_aperture_label, 1, 0) self.scale_aperture_entry = FloatEntry2() - self.transform_aperture_grid.addWidget(self.scale_aperture_entry, 0, 1) + self.transform_aperture_grid.addWidget(self.scale_aperture_entry, 1, 1) # Scale Button self.scale_aperture_button = QtWidgets.QPushButton(_('Scale')) self.scale_aperture_button.setToolTip( _("Perform scaling operation on the selected apertures.") ) - self.scale_aperture_button.setFixedWidth(50) - self.transform_aperture_grid.addWidget(self.scale_aperture_button, 0, 2) + self.scale_aperture_button.setFixedWidth(70) + self.transform_aperture_grid.addWidget(self.scale_aperture_button, 1, 2) # Buffer Aperture Factor self.buffer_aperture_label = QtWidgets.QLabel(_('Buffer Factor:')) @@ -277,18 +292,18 @@ class GerberObjectUI(ObjectUI): "geometric features of this object.") ) self.buffer_aperture_label.setFixedWidth(90) - self.transform_aperture_grid.addWidget(self.buffer_aperture_label, 1, 0) + self.transform_aperture_grid.addWidget(self.buffer_aperture_label, 2, 0) self.buffer_aperture_entry = FloatEntry2() - self.transform_aperture_grid.addWidget(self.buffer_aperture_entry, 1, 1) + self.transform_aperture_grid.addWidget(self.buffer_aperture_entry, 2, 1) # Buffer Button self.buffer_aperture_button = QtWidgets.QPushButton(_('Buffer')) self.buffer_aperture_button.setToolTip( _("Perform buffer operation on the selected apertures.") ) - self.buffer_aperture_button.setFixedWidth(50) - self.transform_aperture_grid.addWidget(self.buffer_aperture_button, 1, 2) + self.buffer_aperture_button.setFixedWidth(70) + self.transform_aperture_grid.addWidget(self.buffer_aperture_button, 2, 2) new_hlay = QtWidgets.QHBoxLayout() self.custom_box.addLayout(new_hlay) @@ -305,7 +320,7 @@ class GerberObjectUI(ObjectUI): self.new_grb_button.setToolTip( _("Will generate a new Gerber object from the changed apertures.\n" "This new object can then be isolated etc.")) - self.new_grb_button.setFixedWidth(50) + self.new_grb_button.setFixedWidth(70) new_hlay.addWidget(self.new_grb_button) # start with apertures table hidden