diff --git a/AppObjects/FlatCAMGerber.py b/AppObjects/FlatCAMGerber.py index ed68dcc7..c2ea8ce1 100644 --- a/AppObjects/FlatCAMGerber.py +++ b/AppObjects/FlatCAMGerber.py @@ -388,16 +388,25 @@ class GerberObject(FlatCAMObj, Gerber): except (TypeError, AttributeError): pass + @staticmethod + def buffer_handler(geo): + new_geo = geo + if isinstance(new_geo, list): + new_geo = MultiPolygon(new_geo) + + new_geo = new_geo.buffer(0.0000001) + new_geo = new_geo.buffer(-0.0000001) + + return new_geo + def on_generate_buffer(self): self.app.inform.emit('[WARNING_NOTCL] %s...' % _("Buffering solid geometry")) def buffer_task(): with self.app.proc_container.new('%s...' % _("Buffering")): - if isinstance(self.solid_geometry, list): - self.solid_geometry = MultiPolygon(self.solid_geometry) + output = self.app.pool.apply_async(self.buffer_handler, args=([self.solid_geometry])) + self.solid_geometry = output.get() - self.solid_geometry = self.solid_geometry.buffer(0.0000001) - self.solid_geometry = self.solid_geometry.buffer(-0.0000001) self.app.inform.emit('[success] %s.' % _("Done")) self.plot_single_object.emit() diff --git a/CHANGELOG.md b/CHANGELOG.md index e12674b8..becbfde0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ CHANGELOG for FlatCAM beta - 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. +- made the delayed Gerber buffering to use multiprocessing but I see not much performance increase 2.06.2020