From c004c9082f9442ff7e123362f78324bd999a62c5 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 10 Feb 2020 04:00:34 +0200 Subject: [PATCH] - optimized the Paint and NCC Tools. When the Lines type of painting/clearing is used, the lines will try to arrange themselves on the direction that the lines length clearing the polygon are bigger --- README.md | 4 +++ camlib.py | 84 ++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 434c81bb..49619892 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +10.02.2020 + +- optimized the Paint and NCC Tools. When the Lines type of painting/clearing is used, the lines will try to arrange themselves on the direction that the lines length clearing the polygon are bigger + 8.02.2020 - added a new preprocessor for using laser on a Marlin 3D printer named 'Marlin_laser_use_Spindle_pin' diff --git a/camlib.py b/camlib.py index 2c62d018..165635b8 100644 --- a/camlib.py +++ b/camlib.py @@ -1445,37 +1445,71 @@ class Geometry(object): log.debug("camlib.Geometry.clear_polygon3() --> Could not buffer the Polygon") return None - # First line - try: - y = top - tooldia / 1.99999999 - while y > bot + tooldia / 1.999999999: - if self.app.abort_flag: - # graceful abort requested by the user - raise FlatCAMApp.GracefulException + # decide the direction of the lines + if abs(left - right) >= abs(top -bot): + # First line + try: + y = top - tooldia / 1.99999999 + while y > bot + tooldia / 1.999999999: + if self.app.abort_flag: + # graceful abort requested by the user + raise FlatCAMApp.GracefulException - # provide the app with a way to process the GUI events when in a blocking loop - QtWidgets.QApplication.processEvents() + # provide the app with a way to process the GUI events when in a blocking loop + QtWidgets.QApplication.processEvents() + line = LineString([(left, y), (right, y)]) + line = line.intersection(margin_poly) + lines_trimmed.append(line) + y -= tooldia * (1 - overlap) + if prog_plot: + self.plot_temp_shapes(line) + self.temp_shapes.redraw() + + # Last line + y = bot + tooldia / 2 line = LineString([(left, y), (right, y)]) line = line.intersection(margin_poly) - lines_trimmed.append(line) - y -= tooldia * (1 - overlap) - if prog_plot: - self.plot_temp_shapes(line) - self.temp_shapes.redraw() - # Last line - y = bot + tooldia / 2 - line = LineString([(left, y), (right, y)]) - line = line.intersection(margin_poly) + for ll in line: + lines_trimmed.append(ll) + if prog_plot: + self.plot_temp_shapes(line) + except Exception as e: + log.debug('camlib.Geometry.clear_polygon3() Processing poly --> %s' % str(e)) + return None + else: + # First line + try: + x = left + tooldia / 1.99999999 + while x < right - tooldia / 1.999999999: + if self.app.abort_flag: + # graceful abort requested by the user + raise FlatCAMApp.GracefulException - for ll in line: - lines_trimmed.append(ll) - if prog_plot: - self.plot_temp_shapes(line) - except Exception as e: - log.debug('camlib.Geometry.clear_polygon3() Processing poly --> %s' % str(e)) - return None + # provide the app with a way to process the GUI events when in a blocking loop + QtWidgets.QApplication.processEvents() + + line = LineString([(x, top), (x, bot)]) + line = line.intersection(margin_poly) + lines_trimmed.append(line) + x += tooldia * (1 - overlap) + if prog_plot: + self.plot_temp_shapes(line) + self.temp_shapes.redraw() + + # Last line + x = right + tooldia / 2 + line = LineString([(x, top), (x, bot)]) + line = line.intersection(margin_poly) + + for ll in line: + lines_trimmed.append(ll) + if prog_plot: + self.plot_temp_shapes(line) + except Exception as e: + log.debug('camlib.Geometry.clear_polygon3() Processing poly --> %s' % str(e)) + return None if prog_plot: self.temp_shapes.redraw()