- some changes in the UI layout in Cutout Tool

This commit is contained in:
Marius Stanciu 2019-12-03 17:48:17 +02:00
parent 6d24a054b5
commit 8d45f77085
8 changed files with 15272 additions and 11640 deletions

View File

@ -16,6 +16,7 @@ CAD program, and create G-Code for Isolation routing.
- remade the Gerber Editor way to import an Gerber object into the editor in such a way to use the multiprocessing
- various small fixes
- fix for toggle grid lines updating canvas only after moving the mouse (hack, actually)
- some changes in the UI layout in Cutout Tool
2.12.2019

View File

@ -7,7 +7,7 @@
from PyQt5 import QtWidgets, QtGui, QtCore
from FlatCAMTool import FlatCAMTool
from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, RadioSet, FCComboBox
from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, RadioSet, FCComboBox, OptionalInputSection
from FlatCAMObj import FlatCAMGerber
from shapely.geometry import box, MultiPolygon, Polygon, LineString, LinearRing
@ -30,6 +30,12 @@ if '_' not in builtins.__dict__:
log = logging.getLogger('base')
settings = QtCore.QSettings("Open Source", "FlatCAM")
if settings.contains("machinist"):
machinist_setting = settings.value('machinist', type=int)
else:
machinist_setting = 0
class CutOut(FlatCAMTool):
@ -54,8 +60,10 @@ class CutOut(FlatCAMTool):
self.layout.addWidget(title_label)
# Form Layout
form_layout = QtWidgets.QFormLayout()
self.layout.addLayout(form_layout)
grid0 = QtWidgets.QGridLayout()
grid0.setColumnStretch(0, 0)
grid0.setColumnStretch(1, 1)
self.layout.addLayout(grid0)
# Type of object to be cutout
self.type_obj_combo = QtWidgets.QComboBox()
@ -77,7 +85,8 @@ class CutOut(FlatCAMTool):
"of objects that will populate the 'Object' combobox.")
)
self.type_obj_combo_label.setMinimumWidth(60)
form_layout.addRow(self.type_obj_combo_label, self.type_obj_combo)
grid0.addWidget(self.type_obj_combo_label, 0, 0)
grid0.addWidget(self.type_obj_combo, 0, 1)
# Object to be cutout
self.obj_combo = QtWidgets.QComboBox()
@ -89,7 +98,8 @@ class CutOut(FlatCAMTool):
self.object_label.setToolTip(
_("Object to be cutout. ")
)
form_layout.addRow(self.object_label, self.obj_combo)
grid0.addWidget(self.object_label, 1, 0)
grid0.addWidget(self.obj_combo, 1, 1)
# Object kind
self.kindlabel = QtWidgets.QLabel('%s:' % _('Obj kind'))
@ -103,7 +113,8 @@ class CutOut(FlatCAMTool):
{"label": _("Single"), "value": "single"},
{"label": _("Panel"), "value": "panel"},
])
form_layout.addRow(self.kindlabel, self.obj_kind_combo)
grid0.addWidget(self.kindlabel, 2, 0)
grid0.addWidget(self.obj_kind_combo, 2, 1)
# Tool Diameter
self.dia = FCDoubleSpinner()
@ -114,32 +125,82 @@ class CutOut(FlatCAMTool):
_("Diameter of the tool used to cutout\n"
"the PCB shape out of the surrounding material.")
)
form_layout.addRow(self.dia_label, self.dia)
grid0.addWidget(self.dia_label, 3, 0)
grid0.addWidget(self.dia, 3, 1)
# Cut Z
cutzlabel = QtWidgets.QLabel('%s:' % _('Cut Z'))
cutzlabel.setToolTip(
_(
"Cutting depth (negative)\n"
"below the copper surface."
)
)
self.cutz_entry = FCDoubleSpinner()
self.cutz_entry.set_precision(self.decimals)
if machinist_setting == 0:
self.cutz_entry.setRange(-9999.9999, -0.00001)
else:
self.cutz_entry.setRange(-9999.9999, 9999.9999)
self.cutz_entry.setSingleStep(0.1)
grid0.addWidget(cutzlabel, 4, 0)
grid0.addWidget(self.cutz_entry, 4, 1)
# Multi-pass
self.mpass_cb = FCCheckBox('%s:' % _("Multi-Depth"))
self.mpass_cb.setToolTip(
_(
"Use multiple passes to limit\n"
"the cut depth in each pass. Will\n"
"cut multiple times until Cut Z is\n"
"reached."
)
)
self.maxdepth_entry = FCDoubleSpinner()
self.maxdepth_entry.set_precision(self.decimals)
self.maxdepth_entry.setRange(0, 9999.9999)
self.maxdepth_entry.setSingleStep(0.1)
self.maxdepth_entry.setToolTip(
_(
"Depth of each pass (positive)."
)
)
self.ois_mpass_geo = OptionalInputSection(self.mpass_cb, [self.maxdepth_entry])
grid0.addWidget(self.mpass_cb, 5, 0)
grid0.addWidget(self.maxdepth_entry, 5, 1)
# Margin
self.margin = FCDoubleSpinner()
self.margin.set_precision(self.decimals)
self.margin_label = QtWidgets.QLabel('%s:' % _("Margin:"))
self.margin_label = QtWidgets.QLabel('%s:' % _("Margin"))
self.margin_label.setToolTip(
_("Margin over bounds. A positive value here\n"
"will make the cutout of the PCB further from\n"
"the actual PCB border")
)
form_layout.addRow(self.margin_label, self.margin)
grid0.addWidget(self.margin_label, 6, 0)
grid0.addWidget(self.margin, 6, 1)
# Gapsize
self.gapsize = FCDoubleSpinner()
self.gapsize.set_precision(self.decimals)
self.gapsize_label = QtWidgets.QLabel('%s:' % _("Gap size:"))
self.gapsize_label = QtWidgets.QLabel('%s:' % _("Gap size"))
self.gapsize_label.setToolTip(
_("The size of the bridge gaps in the cutout\n"
"used to keep the board connected to\n"
"the surrounding material (the one \n"
"from which the PCB is cutout).")
)
form_layout.addRow(self.gapsize_label, self.gapsize)
grid0.addWidget(self.gapsize_label, 7, 0)
grid0.addWidget(self.gapsize, 7, 1)
# How gaps wil be rendered:
# lr - left + right
@ -150,13 +211,13 @@ class CutOut(FlatCAMTool):
# 8 - 2*left + 2*right +2*top + 2*bottom
# Surrounding convex box shape
self.convex_box = FCCheckBox()
self.convex_box_label = QtWidgets.QLabel('%s:' % _("Convex Sh."))
self.convex_box_label.setToolTip(
self.convex_box = FCCheckBox('%s' % _("Convex Shape"))
# self.convex_box_label = QtWidgets.QLabel('%s' % _("Convex Sh."))
self.convex_box.setToolTip(
_("Create a convex shape surrounding the entire PCB.\n"
"Used only if the source object type is Gerber.")
)
form_layout.addRow(self.convex_box_label, self.convex_box)
grid0.addWidget(self.convex_box, 8, 0, 1, 2)
# Title2
title_param_label = QtWidgets.QLabel("<font size=4><b>%s</b></font>" % _('A. Automatic Bridge Gaps'))
@ -193,46 +254,34 @@ class CutOut(FlatCAMTool):
form_layout_2.addRow(gaps_label, self.gaps)
# Buttons
hlay = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay)
title_ff_label = QtWidgets.QLabel("<b>%s:</b>" % _('FreeForm'))
title_ff_label.setToolTip(
_("The cutout shape can be of ny shape.\n"
"Useful when the PCB has a non-rectangular shape.")
)
hlay.addWidget(title_ff_label)
hlay.addStretch()
self.ff_cutout_object_btn = QtWidgets.QPushButton(_("Generate Geo"))
self.ff_cutout_object_btn = QtWidgets.QPushButton(_("Generate Freeform Geometry"))
self.ff_cutout_object_btn.setToolTip(
_("Cutout the selected object.\n"
"The cutout shape can be of any shape.\n"
"Useful when the PCB has a non-rectangular shape.")
)
hlay.addWidget(self.ff_cutout_object_btn)
self.ff_cutout_object_btn.setStyleSheet("""
QPushButton
{
font-weight: bold;
}
""")
self.layout.addWidget(self.ff_cutout_object_btn)
hlay2 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay2)
title_rct_label = QtWidgets.QLabel("<b>%s:</b>" % _('Rectangular'))
title_rct_label.setToolTip(
_("The resulting cutout shape is\n"
"always a rectangle shape and it will be\n"
"the bounding box of the Object.")
)
hlay2.addWidget(title_rct_label)
hlay2.addStretch()
self.rect_cutout_object_btn = QtWidgets.QPushButton(_("Generate Geo"))
self.rect_cutout_object_btn = QtWidgets.QPushButton(_("Generate Rectangular Geometry"))
self.rect_cutout_object_btn.setToolTip(
_("Cutout the selected object.\n"
"The resulting cutout shape is\n"
"always a rectangle shape and it will be\n"
"the bounding box of the Object.")
)
hlay2.addWidget(self.rect_cutout_object_btn)
self.rect_cutout_object_btn.setStyleSheet("""
QPushButton
{
font-weight: bold;
}
""")
self.layout.addWidget(self.rect_cutout_object_btn)
# Title5
title_manual_label = QtWidgets.QLabel("<font size=4><b>%s</b></font>" % _('B. Manual Bridge Gaps'))
@ -253,51 +302,33 @@ class CutOut(FlatCAMTool):
self.man_object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
self.man_object_combo.setCurrentIndex(1)
self.man_object_label = QtWidgets.QLabel('%s:' % _("Geo Obj"))
self.man_object_label = QtWidgets.QLabel('%s:' % _("Geometry Object"))
self.man_object_label.setToolTip(
_("Geometry object used to create the manual cutout.")
)
self.man_object_label.setMinimumWidth(60)
# e_lab_0 = QtWidgets.QLabel('')
form_layout_3.addRow(self.man_object_label, self.man_object_combo)
form_layout_3.addRow(self.man_object_label)
form_layout_3.addRow(self.man_object_combo)
# form_layout_3.addRow(e_lab_0)
hlay3 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay3)
self.man_geo_label = QtWidgets.QLabel('%s:' % _("Manual Geo"))
self.man_geo_label.setToolTip(
_("If the object to be cutout is a Gerber\n"
"first create a Geometry that surrounds it,\n"
"to be used as the cutout, if one doesn't exist yet.\n"
"Select the source Gerber file in the top object combobox.")
)
hlay3.addWidget(self.man_geo_label)
hlay3.addStretch()
self.man_geo_creation_btn = QtWidgets.QPushButton(_("Generate Geo"))
self.man_geo_creation_btn = QtWidgets.QPushButton(_("Generate Manual Geometry"))
self.man_geo_creation_btn.setToolTip(
_("If the object to be cutout is a Gerber\n"
"first create a Geometry that surrounds it,\n"
"to be used as the cutout, if one doesn't exist yet.\n"
"Select the source Gerber file in the top object combobox.")
)
hlay3.addWidget(self.man_geo_creation_btn)
self.man_geo_creation_btn.setStyleSheet("""
QPushButton
{
font-weight: bold;
}
""")
self.layout.addWidget(self.man_geo_creation_btn)
hlay4 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay4)
self.man_bridge_gaps_label = QtWidgets.QLabel('%s:' % _("Manual Add Bridge Gaps"))
self.man_bridge_gaps_label.setToolTip(
_("Use the left mouse button (LMB) click\n"
"to create a bridge gap to separate the PCB from\n"
"the surrounding material.")
)
hlay4.addWidget(self.man_bridge_gaps_label)
hlay4.addStretch()
self.man_gaps_creation_btn = QtWidgets.QPushButton(_("Generate Gap"))
self.man_gaps_creation_btn = QtWidgets.QPushButton(_("Manual Add Bridge Gaps"))
self.man_gaps_creation_btn.setToolTip(
_("Use the left mouse button (LMB) click\n"
"to create a bridge gap to separate the PCB from\n"
@ -305,7 +336,13 @@ class CutOut(FlatCAMTool):
"The LMB click has to be done on the perimeter of\n"
"the Geometry object used as a cutout geometry.")
)
hlay4.addWidget(self.man_gaps_creation_btn)
self.man_gaps_creation_btn.setStyleSheet("""
QPushButton
{
font-weight: bold;
}
""")
self.layout.addWidget(self.man_gaps_creation_btn)
self.layout.addStretch()

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff