Implemented issue #137
This commit is contained in:
parent
51d6216361
commit
bc524684ab
|
@ -181,6 +181,7 @@ class App(QtCore.QObject):
|
|||
"gerber_isotooldia": self.defaults_form.gerber_group.iso_tool_dia_entry,
|
||||
"gerber_isopasses": self.defaults_form.gerber_group.iso_width_entry,
|
||||
"gerber_isooverlap": self.defaults_form.gerber_group.iso_overlap_entry,
|
||||
"gerber_combine_passes": self.defaults_form.gerber_group.combine_passes_cb,
|
||||
"gerber_cutouttooldia": self.defaults_form.gerber_group.cutout_tooldia_entry,
|
||||
"gerber_cutoutmargin": self.defaults_form.gerber_group.cutout_margin_entry,
|
||||
"gerber_cutoutgapsize": self.defaults_form.gerber_group.cutout_gap_entry,
|
||||
|
@ -296,6 +297,7 @@ class App(QtCore.QObject):
|
|||
"gerber_isotooldia": self.options_form.gerber_group.iso_tool_dia_entry,
|
||||
"gerber_isopasses": self.options_form.gerber_group.iso_width_entry,
|
||||
"gerber_isooverlap": self.options_form.gerber_group.iso_overlap_entry,
|
||||
"gerber_combine_passes": self.options_form.gerber_group.combine_passes_cb,
|
||||
"gerber_cutouttooldia": self.options_form.gerber_group.cutout_tooldia_entry,
|
||||
"gerber_cutoutmargin": self.options_form.gerber_group.cutout_margin_entry,
|
||||
"gerber_cutoutgapsize": self.options_form.gerber_group.cutout_gap_entry,
|
||||
|
@ -332,6 +334,7 @@ class App(QtCore.QObject):
|
|||
"gerber_isotooldia": 0.016,
|
||||
"gerber_isopasses": 1,
|
||||
"gerber_isooverlap": 0.15,
|
||||
"gerber_combine_passes": True,
|
||||
"gerber_cutouttooldia": 0.07,
|
||||
"gerber_cutoutmargin": 0.1,
|
||||
"gerber_cutoutgapsize": 0.15,
|
||||
|
@ -2098,7 +2101,8 @@ class App(QtCore.QObject):
|
|||
types = {'dia': float,
|
||||
'passes': int,
|
||||
'overlap': float,
|
||||
'outname': str}
|
||||
'outname': str,
|
||||
'combine': int}
|
||||
|
||||
for key in kwa:
|
||||
if key not in types:
|
||||
|
@ -2394,10 +2398,11 @@ class App(QtCore.QObject):
|
|||
'isolate': {
|
||||
'fcn': isolate,
|
||||
'help': "Creates isolation routing geometry for the given Gerber.\n" +
|
||||
"> isolate <name> [-dia <d>] [-passes <p>] [-overlap <o>]\n" +
|
||||
"> isolate <name> [-dia <d>] [-passes <p>] [-overlap <o>] [-combine 0|1]\n" +
|
||||
" name: Name of the object\n"
|
||||
" dia: Tool diameter\n passes: # of tool width\n" +
|
||||
" overlap: Fraction of tool diameter to overlap passes"
|
||||
" overlap: Fraction of tool diameter to overlap passes" +
|
||||
" combine: combine all passes into one geometry"
|
||||
},
|
||||
'cutout': {
|
||||
'fcn': cutout,
|
||||
|
|
|
@ -406,6 +406,12 @@ class GerberOptionsGroupUI(OptionsGroupUI):
|
|||
self.iso_overlap_entry = FloatEntry()
|
||||
grid1.addWidget(self.iso_overlap_entry, 2, 1)
|
||||
|
||||
self.combine_passes_cb = FCCheckBox(label='Combine Passes')
|
||||
self.combine_passes_cb.setToolTip(
|
||||
"Combine all passes into one object"
|
||||
)
|
||||
grid1.addWidget(self.combine_passes_cb, 3, 0)
|
||||
|
||||
## Board cuttout
|
||||
self.board_cutout_label = QtGui.QLabel("<b>Board cutout:</b>")
|
||||
self.board_cutout_label.setToolTip(
|
||||
|
|
|
@ -262,6 +262,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
|||
"isotooldia": 0.016,
|
||||
"isopasses": 1,
|
||||
"isooverlap": 0.15,
|
||||
"combine_passes": True,
|
||||
"cutouttooldia": 0.07,
|
||||
"cutoutmargin": 0.2,
|
||||
"cutoutgapsize": 0.15,
|
||||
|
@ -298,6 +299,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
|||
"isotooldia": self.ui.iso_tool_dia_entry,
|
||||
"isopasses": self.ui.iso_width_entry,
|
||||
"isooverlap": self.ui.iso_overlap_entry,
|
||||
"combine_passes":self.ui.combine_passes_cb,
|
||||
"cutouttooldia": self.ui.cutout_tooldia_entry,
|
||||
"cutoutmargin": self.ui.cutout_margin_entry,
|
||||
"cutoutgapsize": self.ui.cutout_gap_entry,
|
||||
|
@ -415,7 +417,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
|||
# TODO: Do something if this is None. Offer changing name?
|
||||
self.app.new_object("geometry", follow_name, follow_init)
|
||||
|
||||
def isolate(self, dia=None, passes=None, overlap=None, outname=None):
|
||||
def isolate(self, dia=None, passes=None, overlap=None, outname=None, combine=None):
|
||||
"""
|
||||
Creates an isolation routing geometry object in the project.
|
||||
|
||||
|
@ -425,20 +427,40 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
|||
:param outname: Base name of the output object
|
||||
:return: None
|
||||
"""
|
||||
|
||||
if dia is None:
|
||||
dia = self.options["isotooldia"]
|
||||
if passes is None:
|
||||
passes = int(self.options["isopasses"])
|
||||
if overlap is None:
|
||||
overlap = self.options["isooverlap"] * dia
|
||||
overlap = self.options["isooverlap"]
|
||||
if combine is None:
|
||||
combine = self.options["combine_passes"]
|
||||
else:
|
||||
combine = bool(combine)
|
||||
|
||||
base_name = self.options["name"] + "_iso"
|
||||
base_name = outname or base_name
|
||||
|
||||
if (combine):
|
||||
iso_name = base_name
|
||||
|
||||
# TODO: This is ugly. Create way to pass data into init function.
|
||||
def iso_init(geo_obj, app_obj):
|
||||
# Propagate options
|
||||
geo_obj.options["cnctooldia"] = self.options["isotooldia"]
|
||||
geo_obj.solid_geometry = []
|
||||
for i in range(passes):
|
||||
offset = (2 * i + 1) / 2.0 * dia - i * overlap * dia
|
||||
geo_obj.solid_geometry.append(self.isolation_geometry(offset))
|
||||
app_obj.info("Isolation geometry created: %s" % geo_obj.options["name"])
|
||||
|
||||
# TODO: Do something if this is None. Offer changing name?
|
||||
self.app.new_object("geometry", iso_name, iso_init)
|
||||
|
||||
else:
|
||||
for i in range(passes):
|
||||
|
||||
offset = (2 * i + 1) / 2.0 * dia - i * overlap
|
||||
offset = (2 * i + 1) / 2.0 * dia - i * overlap * dia
|
||||
if passes > 1:
|
||||
iso_name = base_name + str(i + 1)
|
||||
else:
|
||||
|
@ -448,7 +470,6 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
|||
def iso_init(geo_obj, app_obj):
|
||||
# Propagate options
|
||||
geo_obj.options["cnctooldia"] = self.options["isotooldia"]
|
||||
|
||||
geo_obj.solid_geometry = self.isolation_geometry(offset)
|
||||
app_obj.info("Isolation geometry created: %s" % geo_obj.options["name"])
|
||||
|
||||
|
|
|
@ -560,6 +560,14 @@ class GerberObjectUI(ObjectUI):
|
|||
self.iso_overlap_entry = FloatEntry()
|
||||
grid1.addWidget(self.iso_overlap_entry, 2, 1)
|
||||
|
||||
# combine all passes CB
|
||||
self.combine_passes_cb = FCCheckBox(label='Combine Passes')
|
||||
self.combine_passes_cb.setToolTip(
|
||||
"Combine all passes into one object"
|
||||
)
|
||||
grid1.addWidget(self.combine_passes_cb, 3, 0)
|
||||
|
||||
|
||||
self.generate_iso_button = QtGui.QPushButton('Generate Geometry')
|
||||
self.generate_iso_button.setToolTip(
|
||||
"Create the Geometry Object\n"
|
||||
|
|
Loading…
Reference in New Issue