From ae302244a6ab27b323bff9f13fc2cd58baf3bf84 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 27 Nov 2020 02:14:59 +0200 Subject: [PATCH] - in Geometry Editor - simplification method is now threaded and optimized --- CHANGELOG.md | 1 + appEditors/AppGeoEditor.py | 33 ++++++++++++++++++++------------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f643277..cb6fde99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ CHANGELOG for FlatCAM beta - in Geometry Editor - added new information's (length, coordinates and vertex points number) for the geometric element selected in the Geometry Table - in Geometry Editor - added more parameters displayed for the geometric elements selected in the Geometry Table: is_valid, is_empty, is_ccw, is_simple, is_ring - in Geometry Editor - added a new feature: Simplification. It will greatly reduce the number of vertex points in a geometry element selected in the Geometry Table thus potentially greatly reducing the resulting GCode number of lines +- in Geometry Editor - simplification method is now threaded and optimized 26.11.2020 diff --git a/appEditors/AppGeoEditor.py b/appEditors/AppGeoEditor.py index baeda832..c6f8bc24 100644 --- a/appEditors/AppGeoEditor.py +++ b/appEditors/AppGeoEditor.py @@ -3871,22 +3871,29 @@ class AppGeoEditor(QtCore.QObject): tol = self.geo_tol_entry.get_value() selected_tree_items = self.tw.selectedItems() - for sel in selected_tree_items: - for obj_shape in self.storage.get_objects(): - try: - if id(obj_shape) == int(sel.text(0)): - selected_shapes.append(obj_shape) - selected_shapes_geos.append(obj_shape.geo.simplify(tolerance=tol)) - except ValueError: - pass - for shape in selected_shapes: - self.delete_shape(shape=shape) + def task_job(): + with self.app.proc_container.new('%s...' % _("Working")): + for sel in selected_tree_items: + for obj_shape in self.storage.get_objects(): + try: + if id(obj_shape) == int(sel.text(0)): + selected_shapes.append(obj_shape) + selected_shapes_geos.append(obj_shape.geo.simplify(tolerance=tol)) + except ValueError: + pass - for geo in selected_shapes_geos: - self.add_shape(DrawToolShape(geo)) + for shape in selected_shapes: + self.delete_shape(shape=shape) - self.build_ui_sig.emit() + for geo in selected_shapes_geos: + self.add_shape(DrawToolShape(geo), build_ui=False) + + self.plot_all() + + self.build_ui_sig.emit() + + self.app.worker_task.emit({'fcn': task_job, 'params': []}) def activate(self): # adjust the status of the menu entries related to the editor