- fixed the Gerber object UI layout

- added ability to mark individual apertures in Gerber file using the Gerber Aperture Table
This commit is contained in:
Marius Stanciu
2019-02-25 16:28:32 +02:00
committed by Marius
parent a25fc1e88c
commit d43de2ea77
6 changed files with 273 additions and 104 deletions

View File

@@ -127,6 +127,8 @@ class GerberObjectUI(ObjectUI):
self.custom_box.addLayout(grid0)
self.plot_options_label = QtWidgets.QLabel("<b>Plot Options:</b>")
self.plot_options_label.setFixedWidth(90)
grid0.addWidget(self.plot_options_label, 0, 0)
# Solid CB
@@ -158,10 +160,12 @@ class GerberObjectUI(ObjectUI):
self.custom_box.addLayout(hlay_plot)
#### Gerber Apertures ####
self.apertures_table_label = QtWidgets.QLabel('<b>Apertures Table</b>')
self.apertures_table_label = QtWidgets.QLabel('<b>Apertures</b>')
self.apertures_table_label.setToolTip(
"Apertures in this Gerber object."
"Apertures Table containining this Gerber object apertures."
)
self.apertures_table_label.setFixedWidth(90)
hlay_plot.addWidget(self.apertures_table_label)
# Aperture Table Visibility CB
@@ -181,7 +185,7 @@ class GerberObjectUI(ObjectUI):
self.custom_box.addWidget(self.apertures_table)
self.apertures_table.setColumnCount(6)
self.apertures_table.setHorizontalHeaderLabels(['#', 'Code', 'Type', 'Size', 'Dim', 'P'])
self.apertures_table.setHorizontalHeaderLabels(['#', 'Code', 'Type', 'Size', 'Dim', 'M'])
self.apertures_table.setSortingEnabled(False)
self.apertures_table.horizontalHeaderItem(0).setToolTip(
@@ -197,16 +201,40 @@ class GerberObjectUI(ObjectUI):
" - (width, height) for R, O type.\n"
" - (dia, nVertices) for P type")
self.apertures_table.horizontalHeaderItem(5).setToolTip(
"Toggle display of the aperture instances.")
"Mark the aperture instances on canvas.")
# self.apertures_table.setColumnHidden(5, True)
#### Aperture Scale ####
self.scale_aperture_grid = QtWidgets.QGridLayout()
self.custom_box.addLayout(self.scale_aperture_grid)
# Factor
self.scale_aperture_label = QtWidgets.QLabel('<b>Factor:</b>')
self.scale_aperture_label.setToolTip(
"Change the size of the selected apertures.\n"
"Factor by which to multiply\n"
"geometric features of this object."
)
self.scale_aperture_label.setFixedWidth(90)
self.scale_aperture_grid.addWidget(self.scale_aperture_label, 0, 0)
self.scale_aperture_entry = FloatEntry2()
self.scale_aperture_entry.set_value(1.0)
self.scale_aperture_grid.addWidget(self.scale_aperture_entry, 0, 1)
# Scale Button
self.scale_aperture_button = QtWidgets.QPushButton('Scale')
self.scale_aperture_button.setToolTip(
"Perform scaling operation."
)
self.scale_aperture_button.setFixedWidth(40)
self.scale_aperture_grid.addWidget(self.scale_aperture_button, 0, 2)
# start with apertures table hidden
self.apertures_table.setVisible(False)
# hide the plot column. for now I can't plot individually the apertures without making the plot really ugly
self.apertures_table.setColumnHidden(5, True)
#
# self.empty_label = QtWidgets.QLabel('')
# self.custom_box.addWidget(self.empty_label)
self.scale_aperture_label.setVisible(False)
self.scale_aperture_entry.setVisible(False)
self.scale_aperture_button.setVisible(False)
# Isolation Routing
self.isolation_routing_label = QtWidgets.QLabel("<b>Isolation Routing:</b>")
@@ -226,6 +254,7 @@ class GerberObjectUI(ObjectUI):
"feature, use a negative value for\n"
"this parameter."
)
tdlabel.setFixedWidth(90)
grid1.addWidget(tdlabel, 0, 0)
self.iso_tool_dia_entry = LengthEntry()
grid1.addWidget(self.iso_tool_dia_entry, 0, 1)
@@ -235,6 +264,7 @@ class GerberObjectUI(ObjectUI):
"Width of the isolation gap in\n"
"number (integer) of tool widths."
)
passlabel.setFixedWidth(90)
grid1.addWidget(passlabel, 1, 0)
self.iso_width_entry = IntEntry()
grid1.addWidget(self.iso_width_entry, 1, 1)
@@ -245,6 +275,7 @@ class GerberObjectUI(ObjectUI):
"Example:\n"
"A value here of 0.25 means an overlap of 25% from the tool diameter found above."
)
overlabel.setFixedWidth(90)
grid1.addWidget(overlabel, 2, 0)
self.iso_overlap_entry = FloatEntry()
grid1.addWidget(self.iso_overlap_entry, 2, 1)
@@ -295,6 +326,15 @@ class GerberObjectUI(ObjectUI):
hlay_1 = QtWidgets.QHBoxLayout()
self.custom_box.addLayout(hlay_1)
self.generate_iso_button = QtWidgets.QPushButton('FULL Geo')
self.generate_iso_button.setToolTip(
"Create the Geometry Object\n"
"for isolation routing. It contains both\n"
"the interiors and exteriors geometry."
)
self.generate_iso_button.setFixedWidth(90)
hlay_1.addWidget(self.generate_iso_button)
hlay_1.addStretch()
self.generate_ext_iso_button = QtWidgets.QPushButton('Ext Geo')
@@ -303,7 +343,7 @@ class GerberObjectUI(ObjectUI):
"for isolation routing containing\n"
"only the exteriors geometry."
)
self.generate_ext_iso_button.setFixedWidth(60)
# self.generate_ext_iso_button.setFixedWidth(60)
hlay_1.addWidget(self.generate_ext_iso_button)
self.generate_int_iso_button = QtWidgets.QPushButton('Int Geo')
@@ -312,18 +352,9 @@ class GerberObjectUI(ObjectUI):
"for isolation routing containing\n"
"only the interiors geometry."
)
self.generate_int_iso_button.setFixedWidth(60)
# self.generate_int_iso_button.setFixedWidth(60)
hlay_1.addWidget(self.generate_int_iso_button)
self.generate_iso_button = QtWidgets.QPushButton('FULL Geo')
self.generate_iso_button.setToolTip(
"Create the Geometry Object\n"
"for isolation routing. It contains both\n"
"the interiors and exteriors geometry."
)
self.generate_iso_button.setFixedWidth(80)
hlay_1.addWidget(self.generate_iso_button)
# when the follow checkbox is checked then the exteriors and interiors isolation generation buttons
# are disabled as is doesn't make sense to have them enabled due of the nature of "follow"
self.ois_iso = OptionalInputSection(self.follow_cb,
@@ -333,11 +364,12 @@ class GerberObjectUI(ObjectUI):
self.custom_box.addLayout(grid2)
## Clear non-copper regions
self.clearcopper_label = QtWidgets.QLabel("<b>Clear non-copper:</b>")
self.clearcopper_label = QtWidgets.QLabel("<b>Clear N-copper:</b>")
self.clearcopper_label.setToolTip(
"Create a Geometry object with\n"
"toolpaths to cut all non-copper regions."
)
self.clearcopper_label.setFixedWidth(90)
grid2.addWidget(self.clearcopper_label, 0, 0)
self.generate_ncc_button = QtWidgets.QPushButton('NCC Tool')
@@ -385,15 +417,17 @@ class GerberObjectUI(ObjectUI):
"objects with this minimum\n"
"distance."
)
bmlabel.setFixedWidth(90)
grid4.addWidget(bmlabel, 0, 0)
self.noncopper_margin_entry = LengthEntry()
grid4.addWidget(self.noncopper_margin_entry, 0, 1)
# Rounded corners
self.noncopper_rounded_cb = FCCheckBox(label="Rounded corners")
self.noncopper_rounded_cb = FCCheckBox(label="Rounded Geo")
self.noncopper_rounded_cb.setToolTip(
"Resulting geometry will have rounded corners."
)
self.noncopper_rounded_cb.setFixedWidth(90)
grid4.addWidget(self.noncopper_rounded_cb, 1, 0)
self.generate_noncopper_button = QtWidgets.QPushButton('Generate Geo')
@@ -415,17 +449,19 @@ class GerberObjectUI(ObjectUI):
"Distance of the edges of the box\n"
"to the nearest polygon."
)
bbmargin.setFixedWidth(90)
grid5.addWidget(bbmargin, 0, 0)
self.bbmargin_entry = LengthEntry()
grid5.addWidget(self.bbmargin_entry, 0, 1)
self.bbrounded_cb = FCCheckBox(label="Rounded corners")
self.bbrounded_cb = FCCheckBox(label="Rounded Geo")
self.bbrounded_cb.setToolTip(
"If the bounding box is \n"
"to have rounded corners\n"
"their radius is equal to\n"
"the margin."
)
self.bbrounded_cb.setFixedWidth(90)
grid5.addWidget(self.bbrounded_cb, 1, 0)
self.generate_bb_button = QtWidgets.QPushButton('Generate Geo')