From 124abf78b49e63fb534183ab394e8a9d170b1c3a Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 6 Sep 2019 23:05:41 +0300 Subject: [PATCH] - made the objects offset (therefore the Move Tool) show progress display --- FlatCAMObj.py | 20 +++++++++++++++++++ README.md | 1 + camlib.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index ecc87990..68f3c05c 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -5092,6 +5092,10 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): )) return + self.geo_len = 0 + self.old_disp_number = 0 + self.el_count = 0 + def translate_recursion(geom): if type(geom) is list: geoms = list() @@ -5100,14 +5104,30 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): return geoms else: try: + self.el_count += 1 + disp_number = int(np.interp(self.el_count, [0, self.geo_len], [0, 99])) + if self.old_disp_number < disp_number <= 100: + self.app.proc_container.update_view_text(' %d%%' % disp_number) + self.old_disp_number = disp_number + return affinity.translate(geom, xoff=dx, yoff=dy) except AttributeError: return geom if self.multigeo is True: for tool in self.tools: + # variables to display the percentage of work done + self.geo_len = len(self.tools[tool]['solid_geometry']) + self.old_disp_number = 0 + self.el_count = 0 + self.tools[tool]['solid_geometry'] = translate_recursion(self.tools[tool]['solid_geometry']) else: + # variables to display the percentage of work done + self.geo_len = len(self.solid_geometry) + self.old_disp_number = 0 + self.el_count = 0 + self.solid_geometry = translate_recursion(self.solid_geometry) self.app.inform.emit(_("[success] Geometry Offset done.")) diff --git a/README.md b/README.md index 66c2aed5..a11029b2 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ CAD program, and create G-Code for Isolation routing. - modified all the FlatCAM tools strings to the new format in which the status is no longer included in the translated strings to make it easier for the future translations - more customization for the progress display in case of NCC Tool, Paint Tool and for the Gcode generation - updated POT file with the new strings +- made the objects offset (therefore the Move Tool) show progress display 5.09.2019 diff --git a/camlib.py b/camlib.py index 6af88ca3..1a494444 100644 --- a/camlib.py +++ b/camlib.py @@ -112,6 +112,11 @@ class Geometry(object): self.geo_steps_per_circle = geo_steps_per_circle + # variables to display the percentage of work done + self.geo_len = 0 + self.old_disp_number = 0 + self.el_count = 0 + # if geo_steps_per_circle is None: # geo_steps_per_circle = int(Geometry.defaults["geo_steps_per_circle"]) # self.geo_steps_per_circle = geo_steps_per_circle @@ -3464,6 +3469,11 @@ class Gerber (Geometry): "Probable you entered only one value in the Offset field.")) return + # variables to display the percentage of work done + self.geo_len = len(self.solid_geometry) + self.old_disp_number = 0 + self.el_count = 0 + def offset_geom(obj): if type(obj) is list: new_obj = [] @@ -3472,6 +3482,12 @@ class Gerber (Geometry): return new_obj else: try: + self.el_count += 1 + disp_number = int(np.interp(self.el_count, [0, self.geo_len], [0, 99])) + if self.old_disp_number < disp_number <= 100: + self.app.proc_container.update_view_text(' %d%%' % disp_number) + self.old_disp_number = disp_number + return affinity.translate(obj, xoff=dx, yoff=dy) except AttributeError: return obj @@ -4780,10 +4796,21 @@ class Excellon(Geometry): except AttributeError: return obj + # variables to display the percentage of work done + self.geo_len = len(self.drills) + self.old_disp_number = 0 + self.el_count = 0 + # Drills for drill in self.drills: drill['point'] = affinity.translate(drill['point'], xoff=dx, yoff=dy) + self.el_count += 1 + disp_number = int(np.interp(self.el_count, [0, self.geo_len], [0, 99])) + if self.old_disp_number < disp_number <= 100: + self.app.proc_container.update_view_text(' %d%%' % disp_number) + self.old_disp_number = disp_number + # offset solid_geometry for tool in self.tools: self.tools[tool]['solid_geometry'] = offset_geom(self.tools[tool]['solid_geometry']) @@ -7658,23 +7685,50 @@ class CNCjob(Geometry): if self.multitool is False: # offset Gcode self.gcode = offset_g(self.gcode) + + # variables to display the percentage of work done + self.geo_len = len(self.gcode_parsed) + self.old_disp_number = 0 + self.el_count = 0 + # offset geometry for g in self.gcode_parsed: try: g['geom'] = affinity.translate(g['geom'], xoff=dx, yoff=dy) except AttributeError: return g['geom'] + + self.el_count += 1 + disp_number = int(np.interp(self.el_count, [0, self.geo_len], [0, 99])) + if self.old_disp_number < disp_number <= 100: + self.app.proc_container.update_view_text(' %d%%' % disp_number) + self.old_disp_number = disp_number + self.create_geometry() else: for k, v in self.cnc_tools.items(): # offset Gcode v['gcode'] = offset_g(v['gcode']) + + # variables to display the percentage of work done + self.geo_len = len(v['gcode_parsed']) + self.old_disp_number = 0 + self.el_count = 0 + # offset gcode_parsed for g in v['gcode_parsed']: try: g['geom'] = affinity.translate(g['geom'], xoff=dx, yoff=dy) except AttributeError: return g['geom'] + + self.el_count += 1 + disp_number = int(np.interp(self.el_count, [0, self.geo_len], [0, 99])) + if self.old_disp_number < disp_number <= 100: + self.app.proc_container.update_view_text(' %d%%' % disp_number) + self.old_disp_number = disp_number + + # for the bounding box v['solid_geometry'] = cascaded_union([geo['geom'] for geo in v['gcode_parsed']]) def mirror(self, axis, point):