- added a new feature for Gerber parsing: if the NO buffering is chosen in the Gerber Advanced Preferences there is now a checkbox to activate delayed buffering which will do the buffering in background allowing the user to work in between. I hope that this can be useful in case of large Gerber files.
This commit is contained in:
parent
c5c11efeed
commit
89d2de48da
|
@ -138,6 +138,7 @@ class PreferencesUIManager:
|
|||
# "gerber_aperture_buffer_factor": self.ui.gerber_defaults_form.gerber_adv_opt_group.buffer_aperture_entry,
|
||||
"gerber_follow": self.ui.gerber_defaults_form.gerber_adv_opt_group.follow_cb,
|
||||
"gerber_buffering": self.ui.gerber_defaults_form.gerber_adv_opt_group.buffering_radio,
|
||||
"gerber_delayed_buffering": self.ui.gerber_defaults_form.gerber_adv_opt_group.delayed_buffer_cb,
|
||||
"gerber_simplification": self.ui.gerber_defaults_form.gerber_adv_opt_group.simplify_cb,
|
||||
"gerber_simp_tolerance": self.ui.gerber_defaults_form.gerber_adv_opt_group.simplification_tol_spinner,
|
||||
|
||||
|
|
|
@ -76,6 +76,13 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
grid0.addWidget(buffering_label, 9, 0)
|
||||
grid0.addWidget(self.buffering_radio, 9, 1)
|
||||
|
||||
# Delayed Buffering
|
||||
self.delayed_buffer_cb = FCCheckBox(label=_('Delayed Buffering'))
|
||||
self.delayed_buffer_cb.setToolTip(
|
||||
_("When checked it will do the buffering in background.")
|
||||
)
|
||||
grid0.addWidget(self.delayed_buffer_cb, 10, 0, 1, 2)
|
||||
|
||||
# Simplification
|
||||
self.simplify_cb = FCCheckBox(label=_('Simplify'))
|
||||
self.simplify_cb.setToolTip(
|
||||
|
@ -83,7 +90,7 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
"loaded with simplification having a set tolerance.\n"
|
||||
"<<WARNING>>: Don't change this unless you know what you are doing !!!")
|
||||
)
|
||||
grid0.addWidget(self.simplify_cb, 10, 0, 1, 2)
|
||||
grid0.addWidget(self.simplify_cb, 11, 0, 1, 2)
|
||||
|
||||
# Simplification tolerance
|
||||
self.simplification_tol_label = QtWidgets.QLabel(_('Tolerance'))
|
||||
|
@ -95,8 +102,8 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
self.simplification_tol_spinner.setRange(0.00000, 0.01000)
|
||||
self.simplification_tol_spinner.setSingleStep(0.0001)
|
||||
|
||||
grid0.addWidget(self.simplification_tol_label, 11, 0)
|
||||
grid0.addWidget(self.simplification_tol_spinner, 11, 1)
|
||||
grid0.addWidget(self.simplification_tol_label, 12, 0)
|
||||
grid0.addWidget(self.simplification_tol_spinner, 12, 1)
|
||||
self.ois_simplif = OptionalInputSection(
|
||||
self.simplify_cb,
|
||||
[
|
||||
|
@ -105,3 +112,12 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI):
|
|||
logic=True)
|
||||
|
||||
self.layout.addStretch()
|
||||
|
||||
# signals
|
||||
self.buffering_radio.activated_custom.connect(self.on_buffering_change)
|
||||
|
||||
def on_buffering_change(self, val):
|
||||
if val == 'no':
|
||||
self.delayed_buffer_cb.setDisabled(False)
|
||||
else:
|
||||
self.delayed_buffer_cb.setDisabled(True)
|
|
@ -356,6 +356,10 @@ class AppObject(QtCore.QObject):
|
|||
log.debug("%f seconds adding object and plotting." % (t1 - t0))
|
||||
self.object_plotted.emit(t_obj)
|
||||
|
||||
if t_obj.kind == 'gerber' and self.app.defaults["gerber_delayed_buffering"] != 'full' and \
|
||||
self.app.defaults["gerber_delayed_buffering"]:
|
||||
t_obj.do_buffer_signal.emit()
|
||||
|
||||
# Send to worker
|
||||
# self.worker.add_task(worker_task, [self])
|
||||
if plot is True:
|
||||
|
|
|
@ -37,6 +37,8 @@ class GerberObject(FlatCAMObj, Gerber):
|
|||
optionChanged = QtCore.pyqtSignal(str)
|
||||
replotApertures = QtCore.pyqtSignal()
|
||||
|
||||
do_buffer_signal = QtCore.pyqtSignal()
|
||||
|
||||
ui_type = GerberObjectUI
|
||||
|
||||
@staticmethod
|
||||
|
@ -214,6 +216,8 @@ class GerberObject(FlatCAMObj, Gerber):
|
|||
self.ui.aperture_table_visibility_cb.stateChanged.connect(self.on_aperture_table_visibility_change)
|
||||
self.ui.follow_cb.stateChanged.connect(self.on_follow_cb_click)
|
||||
|
||||
self.do_buffer_signal.connect(self.on_generate_buffer)
|
||||
|
||||
# Show/Hide Advanced Options
|
||||
if self.app.defaults["global_app_level"] == 'b':
|
||||
self.ui.level.setText('<span style="color:green;"><b>%s</b></span>' % _('Basic'))
|
||||
|
@ -1490,7 +1494,7 @@ class GerberObject(FlatCAMObj, Gerber):
|
|||
Gerber.skew(self, angle_x=angle_x, angle_y=angle_y, point=point)
|
||||
self.replotApertures.emit()
|
||||
|
||||
def buffer(self, distance, join, factor=None):
|
||||
def buffer(self, distance, join=2, factor=None):
|
||||
Gerber.buffer(self, distance=distance, join=join, factor=factor)
|
||||
self.replotApertures.emit()
|
||||
|
||||
|
|
|
@ -1493,7 +1493,8 @@ class Gerber(Geometry):
|
|||
if self.app.defaults["gerber_buffering"] == 'full':
|
||||
new_poly = new_poly.buffer(0.00000001)
|
||||
new_poly = new_poly.buffer(-0.00000001)
|
||||
log.warning("Union(buffer) done.")
|
||||
log.warning("Union(buffer) done.")
|
||||
|
||||
else:
|
||||
log.debug("Union by union()...")
|
||||
new_poly = cascaded_union(poly_buffer)
|
||||
|
@ -2260,7 +2261,7 @@ class Gerber(Geometry):
|
|||
self.app.inform.emit('[success] %s' % _("Gerber Rotate done."))
|
||||
self.app.proc_container.new_text = ''
|
||||
|
||||
def buffer(self, distance, join, factor=None):
|
||||
def buffer(self, distance, join=2, factor=None):
|
||||
"""
|
||||
|
||||
:param distance: If 'factor' is True then distance is the factor
|
||||
|
|
|
@ -12,6 +12,7 @@ CHANGELOG for FlatCAM beta
|
|||
- updated Transform Tool to have a selection of possible references for the transformations that are now selectable in the GUI
|
||||
- Transform Tool - compacted the UI
|
||||
- minor issue in Paint Tool
|
||||
- added a new feature for Gerber parsing: if the NO buffering is chosen in the Gerber Advanced Preferences there is now a checkbox to activate delayed buffering which will do the buffering in background allowing the user to work in between. I hope that this can be useful in case of large Gerber files.
|
||||
|
||||
2.06.2020
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
from PyQt5 import QtWidgets, QtCore
|
||||
from io import StringIO
|
||||
|
||||
import numpy as np
|
||||
from numpy.linalg import solve, norm
|
||||
|
||||
import platform
|
||||
|
|
|
@ -183,6 +183,7 @@ class FlatCAMDefaults:
|
|||
"gerber_aperture_buffer_factor": 0.0,
|
||||
"gerber_follow": False,
|
||||
"gerber_buffering": "full",
|
||||
"gerber_delayed_buffering": True,
|
||||
"gerber_simplification": False,
|
||||
"gerber_simp_tolerance": 0.0005,
|
||||
|
||||
|
|
Loading…
Reference in New Issue