- 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:
84
ObjectUI.py
84
ObjectUI.py
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user