Explorar el Código

- added progress display in status bar for generating CNCJob from Excellon objects

Marius Stanciu hace 6 años
padre
commit
48e9f4a260
Se han modificado 2 ficheros con 63 adiciones y 2 borrados
  1. 1 0
      README.md
  2. 62 2
      camlib.py

+ 1 - 0
README.md

@@ -16,6 +16,7 @@ CAD program, and create G-Code for Isolation routing.
 - added percentage display for work done in NCC Tool
 - added percentage display for work done in Paint Tool
 - some fixes and prepared the activity monitor area to receive updated texts
+- added progress display in status bar for generating CNCJob from Excellon objects
 
 5.09.2019
 

+ 62 - 2
camlib.py

@@ -5355,7 +5355,7 @@ class CNCjob(Geometry):
         measured_up_to_zero_distance = 0.0
         measured_lift_distance = 0.0
 
-        self.app.inform.emit(_("Starting G-Code..."))
+        self.app.inform.emit('%s...' % _("Starting G-Code"))
         current_platform = platform.architecture()[0]
         if current_platform == '64bit':
             if excellon_optimization_type == 'M':
@@ -5449,6 +5449,13 @@ class CNCjob(Geometry):
                             self.coordinates_type = self.app.defaults["cncjob_coords_type"]
                             if self.coordinates_type == "G90":
                                 # Drillling! for Absolute coordinates type G90
+                                # variables to display the percentage of work done
+                                geo_len = len(node_list)
+                                disp_number = 0
+                                old_disp_number = 0
+                                log.warning("Number of drills for which to generate GCode: %s" % str(geo_len))
+
+                                loc_nr = 0
                                 for k in node_list:
                                     locx = locations[k][0]
                                     locy = locations[k][1]
@@ -5469,6 +5476,19 @@ class CNCjob(Geometry):
                                     measured_distance += abs(distance_euclidian(locx, locy, self.oldx, self.oldy))
                                     self.oldx = locx
                                     self.oldy = locy
+
+                                    loc_nr += 1
+                                    disp_number = int(np.interp(loc_nr, [0, geo_len], [0, 99]))
+
+                                    if disp_number > old_disp_number and disp_number <= 100:
+                                        self.app.inform.emit(
+                                            '%s: %s. %s: %d%%' % (_("Starting G-Code for tool with diameter"),
+                                                                  str(current_tooldia),
+                                                                  _("Progress"),
+                                                                  disp_number)
+                                        )
+                                        old_disp_number = disp_number
+
                             else:
                                 self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...'))
                                 return 'fail'
@@ -5560,6 +5580,13 @@ class CNCjob(Geometry):
                             self.coordinates_type = self.app.defaults["cncjob_coords_type"]
                             if self.coordinates_type == "G90":
                                 # Drillling! for Absolute coordinates type G90
+                                # variables to display the percentage of work done
+                                geo_len = len(node_list)
+                                disp_number = 0
+                                old_disp_number = 0
+                                log.warning("Number of drills for which to generate GCode: %s" % str(geo_len))
+
+                                loc_nr = 0
                                 for k in node_list:
                                     locx = locations[k][0]
                                     locy = locations[k][1]
@@ -5580,6 +5607,19 @@ class CNCjob(Geometry):
                                     measured_distance += abs(distance_euclidian(locx, locy, self.oldx, self.oldy))
                                     self.oldx = locx
                                     self.oldy = locy
+
+                                    loc_nr += 1
+                                    disp_number = int(np.interp(loc_nr, [0, geo_len], [0, 99]))
+
+                                    if disp_number > old_disp_number and disp_number <= 100:
+                                        self.app.inform.emit(
+                                            '%s: %s. %s: %d%%' % (_("Starting G-Code for tool with diameter"),
+                                                                  str(current_tooldia),
+                                                                  _("Progress"),
+                                                                  disp_number)
+                                        )
+                                        old_disp_number = disp_number
+
                             else:
                                 self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...'))
                                 return 'fail'
@@ -5634,7 +5674,15 @@ class CNCjob(Geometry):
                             for point in points[tool]:
                                 altPoints.append((point.coords.xy[0][0], point.coords.xy[1][0]))
 
-                            for point in self.optimized_travelling_salesman(altPoints):
+                            node_list = self.optimized_travelling_salesman(altPoints)
+                            # variables to display the percentage of work done
+                            geo_len = len(node_list)
+                            disp_number = 0
+                            old_disp_number = 0
+                            log.warning("Number of drills for which to generate GCode: %s" % str(geo_len))
+
+                            loc_nr = 0
+                            for point in node_list:
                                 gcode += self.doformat(p.rapid_code, x=point[0], y=point[1])
                                 gcode += self.doformat(p.down_code, x=point[0], y=point[1])
 
@@ -5651,6 +5699,18 @@ class CNCjob(Geometry):
                                 measured_distance += abs(distance_euclidian(point[0], point[1], self.oldx, self.oldy))
                                 self.oldx = point[0]
                                 self.oldy = point[1]
+
+                                loc_nr += 1
+                                disp_number = int(np.interp(loc_nr, [0, geo_len], [0, 99]))
+
+                                if disp_number > old_disp_number and disp_number <= 100:
+                                    self.app.inform.emit(
+                                        '%s: %s. %s: %d%%' % (_("Starting G-Code for tool with diameter"),
+                                                              str(current_tooldia),
+                                                              _("Progress"),
+                                                              disp_number)
+                                    )
+                                    old_disp_number = disp_number
                         else:
                             self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...'))
                             return 'fail'