Просмотр исходного кода

- made the objects offset (therefore the Move Tool) show progress display

Marius Stanciu 6 лет назад
Родитель
Сommit
124abf78b4
3 измененных файлов с 75 добавлено и 0 удалено
  1. 20 0
      FlatCAMObj.py
  2. 1 0
      README.md
  3. 54 0
      camlib.py

+ 20 - 0
FlatCAMObj.py

@@ -5092,6 +5092,10 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
             ))
             ))
             return
             return
 
 
+        self.geo_len = 0
+        self.old_disp_number = 0
+        self.el_count = 0
+
         def translate_recursion(geom):
         def translate_recursion(geom):
             if type(geom) is list:
             if type(geom) is list:
                 geoms = list()
                 geoms = list()
@@ -5100,14 +5104,30 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
                 return geoms
                 return geoms
             else:
             else:
                 try:
                 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)
                     return affinity.translate(geom, xoff=dx, yoff=dy)
                 except AttributeError:
                 except AttributeError:
                     return geom
                     return geom
 
 
         if self.multigeo is True:
         if self.multigeo is True:
             for tool in self.tools:
             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'])
                 self.tools[tool]['solid_geometry'] = translate_recursion(self.tools[tool]['solid_geometry'])
         else:
         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.solid_geometry = translate_recursion(self.solid_geometry)
         self.app.inform.emit(_("[success] Geometry Offset done."))
         self.app.inform.emit(_("[success] Geometry Offset done."))
 
 

+ 1 - 0
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
 - 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
 - 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
 - updated POT file with the new strings
+- made the objects offset (therefore the Move Tool) show progress display
 
 
 5.09.2019
 5.09.2019
 
 

+ 54 - 0
camlib.py

@@ -112,6 +112,11 @@ class Geometry(object):
 
 
         self.geo_steps_per_circle = geo_steps_per_circle
         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:
         # if geo_steps_per_circle is None:
         #     geo_steps_per_circle = int(Geometry.defaults["geo_steps_per_circle"])
         #     geo_steps_per_circle = int(Geometry.defaults["geo_steps_per_circle"])
         # self.geo_steps_per_circle = 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."))
                                  "Probable you entered only one value in the Offset field."))
             return
             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):
         def offset_geom(obj):
             if type(obj) is list:
             if type(obj) is list:
                 new_obj = []
                 new_obj = []
@@ -3472,6 +3482,12 @@ class Gerber (Geometry):
                 return new_obj
                 return new_obj
             else:
             else:
                 try:
                 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)
                     return affinity.translate(obj, xoff=dx, yoff=dy)
                 except AttributeError:
                 except AttributeError:
                     return obj
                     return obj
@@ -4780,10 +4796,21 @@ class Excellon(Geometry):
                 except AttributeError:
                 except AttributeError:
                     return obj
                     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
         # Drills
         for drill in self.drills:
         for drill in self.drills:
             drill['point'] = affinity.translate(drill['point'], xoff=dx, yoff=dy)
             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
         # offset solid_geometry
         for tool in self.tools:
         for tool in self.tools:
             self.tools[tool]['solid_geometry'] = offset_geom(self.tools[tool]['solid_geometry'])
             self.tools[tool]['solid_geometry'] = offset_geom(self.tools[tool]['solid_geometry'])
@@ -7658,23 +7685,50 @@ class CNCjob(Geometry):
         if self.multitool is False:
         if self.multitool is False:
             # offset Gcode
             # offset Gcode
             self.gcode = offset_g(self.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
             # offset geometry
             for g in self.gcode_parsed:
             for g in self.gcode_parsed:
                 try:
                 try:
                     g['geom'] = affinity.translate(g['geom'], xoff=dx, yoff=dy)
                     g['geom'] = affinity.translate(g['geom'], xoff=dx, yoff=dy)
                 except AttributeError:
                 except AttributeError:
                     return g['geom']
                     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()
             self.create_geometry()
         else:
         else:
             for k, v in self.cnc_tools.items():
             for k, v in self.cnc_tools.items():
                 # offset Gcode
                 # offset Gcode
                 v['gcode'] = offset_g(v['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
                 # offset gcode_parsed
                 for g in v['gcode_parsed']:
                 for g in v['gcode_parsed']:
                     try:
                     try:
                         g['geom'] = affinity.translate(g['geom'], xoff=dx, yoff=dy)
                         g['geom'] = affinity.translate(g['geom'], xoff=dx, yoff=dy)
                     except AttributeError:
                     except AttributeError:
                         return g['geom']
                         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']])
                 v['solid_geometry'] = cascaded_union([geo['geom'] for geo in v['gcode_parsed']])
 
 
     def mirror(self, axis, point):
     def mirror(self, axis, point):