|
@@ -127,6 +127,8 @@ class GerberObjectUI(ObjectUI):
|
|
|
self.custom_box.addLayout(grid0)
|
|
self.custom_box.addLayout(grid0)
|
|
|
|
|
|
|
|
self.plot_options_label = QtWidgets.QLabel("<b>Plot Options:</b>")
|
|
self.plot_options_label = QtWidgets.QLabel("<b>Plot Options:</b>")
|
|
|
|
|
+ self.plot_options_label.setFixedWidth(90)
|
|
|
|
|
+
|
|
|
grid0.addWidget(self.plot_options_label, 0, 0)
|
|
grid0.addWidget(self.plot_options_label, 0, 0)
|
|
|
|
|
|
|
|
# Solid CB
|
|
# Solid CB
|
|
@@ -158,10 +160,12 @@ class GerberObjectUI(ObjectUI):
|
|
|
self.custom_box.addLayout(hlay_plot)
|
|
self.custom_box.addLayout(hlay_plot)
|
|
|
|
|
|
|
|
#### Gerber Apertures ####
|
|
#### 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(
|
|
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)
|
|
hlay_plot.addWidget(self.apertures_table_label)
|
|
|
|
|
|
|
|
# Aperture Table Visibility CB
|
|
# Aperture Table Visibility CB
|
|
@@ -181,7 +185,7 @@ class GerberObjectUI(ObjectUI):
|
|
|
self.custom_box.addWidget(self.apertures_table)
|
|
self.custom_box.addWidget(self.apertures_table)
|
|
|
|
|
|
|
|
self.apertures_table.setColumnCount(6)
|
|
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.setSortingEnabled(False)
|
|
|
|
|
|
|
|
self.apertures_table.horizontalHeaderItem(0).setToolTip(
|
|
self.apertures_table.horizontalHeaderItem(0).setToolTip(
|
|
@@ -197,16 +201,40 @@ class GerberObjectUI(ObjectUI):
|
|
|
" - (width, height) for R, O type.\n"
|
|
" - (width, height) for R, O type.\n"
|
|
|
" - (dia, nVertices) for P type")
|
|
" - (dia, nVertices) for P type")
|
|
|
self.apertures_table.horizontalHeaderItem(5).setToolTip(
|
|
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
|
|
# start with apertures table hidden
|
|
|
self.apertures_table.setVisible(False)
|
|
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
|
|
# Isolation Routing
|
|
|
self.isolation_routing_label = QtWidgets.QLabel("<b>Isolation Routing:</b>")
|
|
self.isolation_routing_label = QtWidgets.QLabel("<b>Isolation Routing:</b>")
|
|
@@ -226,6 +254,7 @@ class GerberObjectUI(ObjectUI):
|
|
|
"feature, use a negative value for\n"
|
|
"feature, use a negative value for\n"
|
|
|
"this parameter."
|
|
"this parameter."
|
|
|
)
|
|
)
|
|
|
|
|
+ tdlabel.setFixedWidth(90)
|
|
|
grid1.addWidget(tdlabel, 0, 0)
|
|
grid1.addWidget(tdlabel, 0, 0)
|
|
|
self.iso_tool_dia_entry = LengthEntry()
|
|
self.iso_tool_dia_entry = LengthEntry()
|
|
|
grid1.addWidget(self.iso_tool_dia_entry, 0, 1)
|
|
grid1.addWidget(self.iso_tool_dia_entry, 0, 1)
|
|
@@ -235,6 +264,7 @@ class GerberObjectUI(ObjectUI):
|
|
|
"Width of the isolation gap in\n"
|
|
"Width of the isolation gap in\n"
|
|
|
"number (integer) of tool widths."
|
|
"number (integer) of tool widths."
|
|
|
)
|
|
)
|
|
|
|
|
+ passlabel.setFixedWidth(90)
|
|
|
grid1.addWidget(passlabel, 1, 0)
|
|
grid1.addWidget(passlabel, 1, 0)
|
|
|
self.iso_width_entry = IntEntry()
|
|
self.iso_width_entry = IntEntry()
|
|
|
grid1.addWidget(self.iso_width_entry, 1, 1)
|
|
grid1.addWidget(self.iso_width_entry, 1, 1)
|
|
@@ -245,6 +275,7 @@ class GerberObjectUI(ObjectUI):
|
|
|
"Example:\n"
|
|
"Example:\n"
|
|
|
"A value here of 0.25 means an overlap of 25% from the tool diameter found above."
|
|
"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)
|
|
grid1.addWidget(overlabel, 2, 0)
|
|
|
self.iso_overlap_entry = FloatEntry()
|
|
self.iso_overlap_entry = FloatEntry()
|
|
|
grid1.addWidget(self.iso_overlap_entry, 2, 1)
|
|
grid1.addWidget(self.iso_overlap_entry, 2, 1)
|
|
@@ -295,6 +326,15 @@ class GerberObjectUI(ObjectUI):
|
|
|
hlay_1 = QtWidgets.QHBoxLayout()
|
|
hlay_1 = QtWidgets.QHBoxLayout()
|
|
|
self.custom_box.addLayout(hlay_1)
|
|
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()
|
|
hlay_1.addStretch()
|
|
|
|
|
|
|
|
self.generate_ext_iso_button = QtWidgets.QPushButton('Ext Geo')
|
|
self.generate_ext_iso_button = QtWidgets.QPushButton('Ext Geo')
|
|
@@ -303,7 +343,7 @@ class GerberObjectUI(ObjectUI):
|
|
|
"for isolation routing containing\n"
|
|
"for isolation routing containing\n"
|
|
|
"only the exteriors geometry."
|
|
"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)
|
|
hlay_1.addWidget(self.generate_ext_iso_button)
|
|
|
|
|
|
|
|
self.generate_int_iso_button = QtWidgets.QPushButton('Int Geo')
|
|
self.generate_int_iso_button = QtWidgets.QPushButton('Int Geo')
|
|
@@ -312,18 +352,9 @@ class GerberObjectUI(ObjectUI):
|
|
|
"for isolation routing containing\n"
|
|
"for isolation routing containing\n"
|
|
|
"only the interiors geometry."
|
|
"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)
|
|
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
|
|
# 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"
|
|
# 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,
|
|
self.ois_iso = OptionalInputSection(self.follow_cb,
|
|
@@ -333,11 +364,12 @@ class GerberObjectUI(ObjectUI):
|
|
|
self.custom_box.addLayout(grid2)
|
|
self.custom_box.addLayout(grid2)
|
|
|
|
|
|
|
|
## Clear non-copper regions
|
|
## 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(
|
|
self.clearcopper_label.setToolTip(
|
|
|
"Create a Geometry object with\n"
|
|
"Create a Geometry object with\n"
|
|
|
"toolpaths to cut all non-copper regions."
|
|
"toolpaths to cut all non-copper regions."
|
|
|
)
|
|
)
|
|
|
|
|
+ self.clearcopper_label.setFixedWidth(90)
|
|
|
grid2.addWidget(self.clearcopper_label, 0, 0)
|
|
grid2.addWidget(self.clearcopper_label, 0, 0)
|
|
|
|
|
|
|
|
self.generate_ncc_button = QtWidgets.QPushButton('NCC Tool')
|
|
self.generate_ncc_button = QtWidgets.QPushButton('NCC Tool')
|
|
@@ -385,15 +417,17 @@ class GerberObjectUI(ObjectUI):
|
|
|
"objects with this minimum\n"
|
|
"objects with this minimum\n"
|
|
|
"distance."
|
|
"distance."
|
|
|
)
|
|
)
|
|
|
|
|
+ bmlabel.setFixedWidth(90)
|
|
|
grid4.addWidget(bmlabel, 0, 0)
|
|
grid4.addWidget(bmlabel, 0, 0)
|
|
|
self.noncopper_margin_entry = LengthEntry()
|
|
self.noncopper_margin_entry = LengthEntry()
|
|
|
grid4.addWidget(self.noncopper_margin_entry, 0, 1)
|
|
grid4.addWidget(self.noncopper_margin_entry, 0, 1)
|
|
|
|
|
|
|
|
# Rounded corners
|
|
# Rounded corners
|
|
|
- self.noncopper_rounded_cb = FCCheckBox(label="Rounded corners")
|
|
|
|
|
|
|
+ self.noncopper_rounded_cb = FCCheckBox(label="Rounded Geo")
|
|
|
self.noncopper_rounded_cb.setToolTip(
|
|
self.noncopper_rounded_cb.setToolTip(
|
|
|
"Resulting geometry will have rounded corners."
|
|
"Resulting geometry will have rounded corners."
|
|
|
)
|
|
)
|
|
|
|
|
+ self.noncopper_rounded_cb.setFixedWidth(90)
|
|
|
grid4.addWidget(self.noncopper_rounded_cb, 1, 0)
|
|
grid4.addWidget(self.noncopper_rounded_cb, 1, 0)
|
|
|
|
|
|
|
|
self.generate_noncopper_button = QtWidgets.QPushButton('Generate Geo')
|
|
self.generate_noncopper_button = QtWidgets.QPushButton('Generate Geo')
|
|
@@ -415,17 +449,19 @@ class GerberObjectUI(ObjectUI):
|
|
|
"Distance of the edges of the box\n"
|
|
"Distance of the edges of the box\n"
|
|
|
"to the nearest polygon."
|
|
"to the nearest polygon."
|
|
|
)
|
|
)
|
|
|
|
|
+ bbmargin.setFixedWidth(90)
|
|
|
grid5.addWidget(bbmargin, 0, 0)
|
|
grid5.addWidget(bbmargin, 0, 0)
|
|
|
self.bbmargin_entry = LengthEntry()
|
|
self.bbmargin_entry = LengthEntry()
|
|
|
grid5.addWidget(self.bbmargin_entry, 0, 1)
|
|
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(
|
|
self.bbrounded_cb.setToolTip(
|
|
|
"If the bounding box is \n"
|
|
"If the bounding box is \n"
|
|
|
"to have rounded corners\n"
|
|
"to have rounded corners\n"
|
|
|
"their radius is equal to\n"
|
|
"their radius is equal to\n"
|
|
|
"the margin."
|
|
"the margin."
|
|
|
)
|
|
)
|
|
|
|
|
+ self.bbrounded_cb.setFixedWidth(90)
|
|
|
grid5.addWidget(self.bbrounded_cb, 1, 0)
|
|
grid5.addWidget(self.bbrounded_cb, 1, 0)
|
|
|
|
|
|
|
|
self.generate_bb_button = QtWidgets.QPushButton('Generate Geo')
|
|
self.generate_bb_button = QtWidgets.QPushButton('Generate Geo')
|