فهرست منبع

Merged marius_stanciu/flatcam_beta/Beta into Beta

Marius Stanciu 5 سال پیش
والد
کامیت
49e8791214
4فایلهای تغییر یافته به همراه43 افزوده شده و 42 حذف شده
  1. 5 0
      CHANGELOG.md
  2. 4 4
      appTools/ToolCalculators.py
  3. 30 35
      appTools/ToolPanelize.py
  4. 4 3
      app_Main.py

+ 5 - 0
CHANGELOG.md

@@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta
 
 
 =================================================
 =================================================
 
 
+5.06.2020
+
+- fixed a small issue in the Panelization Tool that blocked the usage of a Geometry object as panelization reference
+
 4.06.2020
 4.06.2020
 
 
 - improved the Isolation Tool - rest machining: test if the isolated polygon has interiors (holes) and if those can't be isolated too then mark the polygon as a rest geometry to be isolated with the next tool and so on
 - improved the Isolation Tool - rest machining: test if the isolated polygon has interiors (holes) and if those can't be isolated too then mark the polygon as a rest geometry to be isolated with the next tool and so on
@@ -118,6 +122,7 @@ CHANGELOG for FlatCAM beta
 27.05.2020
 27.05.2020
 
 
 - working on Isolation Tool: made to work the Isolation with multiple tools without rest machining
 - working on Isolation Tool: made to work the Isolation with multiple tools without rest machining
+- in Tool Calculators fixed an application crash if the user typed letters instead of numbers in the boxes. Now the boxes accept only numbers, dots, comma, spaces and arithmetic operators
 
 
 26.05.2020
 26.05.2020
 
 

+ 4 - 4
appTools/ToolCalculators.py

@@ -7,7 +7,7 @@
 
 
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
 from appTool import AppTool
 from appTool import AppTool
-from appGUI.GUIElements import FCSpinner, FCDoubleSpinner, FCEntry
+from appGUI.GUIElements import FCSpinner, FCDoubleSpinner, NumericalEvalEntry
 import math
 import math
 
 
 import gettext
 import gettext
@@ -63,13 +63,13 @@ class ToolCalculator(AppTool):
         grid_units_layout.addWidget(mm_label, 0, 0)
         grid_units_layout.addWidget(mm_label, 0, 0)
         grid_units_layout.addWidget(inch_label, 0, 1)
         grid_units_layout.addWidget(inch_label, 0, 1)
 
 
-        self.inch_entry = FCEntry()
+        self.inch_entry = NumericalEvalEntry(border_color='#0069A9')
 
 
         # self.inch_entry.setFixedWidth(70)
         # self.inch_entry.setFixedWidth(70)
         # self.inch_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         # self.inch_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.inch_entry.setToolTip(_("Here you enter the value to be converted from INCH to MM"))
         self.inch_entry.setToolTip(_("Here you enter the value to be converted from INCH to MM"))
 
 
-        self.mm_entry = FCEntry()
+        self.mm_entry = NumericalEvalEntry(border_color='#0069A9')
         # self.mm_entry.setFixedWidth(130)
         # self.mm_entry.setFixedWidth(130)
         # self.mm_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         # self.mm_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         self.mm_entry.setToolTip(_("Here you enter the value to be converted from MM to INCH"))
         self.mm_entry.setToolTip(_("Here you enter the value to be converted from MM to INCH"))
@@ -104,7 +104,7 @@ class ToolCalculator(AppTool):
         )
         )
         self.tipAngle_label = QtWidgets.QLabel('%s:' % _("Tip Angle"))
         self.tipAngle_label = QtWidgets.QLabel('%s:' % _("Tip Angle"))
         self.tipAngle_entry = FCSpinner(callback=self.confirmation_message_int)
         self.tipAngle_entry = FCSpinner(callback=self.confirmation_message_int)
-        self.tipAngle_entry.set_range(0,180)
+        self.tipAngle_entry.set_range(0, 180)
         self.tipAngle_entry.set_step(5)
         self.tipAngle_entry.set_step(5)
 
 
         # self.tipAngle_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
         # self.tipAngle_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)

+ 30 - 35
appTools/ToolPanelize.py

@@ -396,6 +396,7 @@ class Panelize(AppTool):
 
 
     def on_type_box_index_changed(self):
     def on_type_box_index_changed(self):
         obj_type = self.type_box_combo.currentIndex()
         obj_type = self.type_box_combo.currentIndex()
+        obj_type = 2 if obj_type == 1 else obj_type
         self.box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
         self.box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
         self.box_combo.setCurrentIndex(0)
         self.box_combo.setCurrentIndex(0)
         self.box_combo.obj_type = {
         self.box_combo.obj_type = {
@@ -421,12 +422,12 @@ class Panelize(AppTool):
         except Exception as e:
         except Exception as e:
             log.debug("Panelize.on_panelize() --> %s" % str(e))
             log.debug("Panelize.on_panelize() --> %s" % str(e))
             self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Could not retrieve object"), name))
             self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Could not retrieve object"), name))
-            return "Could not retrieve object: %s" % name
+            return
 
 
         if panel_source_obj is None:
         if panel_source_obj is None:
             self.app.inform.emit('[ERROR_NOTCL] %s: %s' %
             self.app.inform.emit('[ERROR_NOTCL] %s: %s' %
                                  (_("Object not found"), panel_source_obj))
                                  (_("Object not found"), panel_source_obj))
-            return "Object not found: %s" % panel_source_obj
+            return
 
 
         boxname = self.box_combo.currentText()
         boxname = self.box_combo.currentText()
 
 
@@ -435,7 +436,7 @@ class Panelize(AppTool):
         except Exception as e:
         except Exception as e:
             log.debug("Panelize.on_panelize() --> %s" % str(e))
             log.debug("Panelize.on_panelize() --> %s" % str(e))
             self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Could not retrieve object"), boxname))
             self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Could not retrieve object"), boxname))
-            return "Could not retrieve object: %s" % boxname
+            return
 
 
         if box is None:
         if box is None:
             self.app.inform.emit('[WARNING_NOTCL] %s: %s' % (_("No object Box. Using instead"), panel_source_obj))
             self.app.inform.emit('[WARNING_NOTCL] %s: %s' % (_("No object Box. Using instead"), panel_source_obj))
@@ -466,7 +467,7 @@ class Panelize(AppTool):
         if 0 in {columns, rows}:
         if 0 in {columns, rows}:
             self.app.inform.emit('[ERROR_NOTCL] %s' %
             self.app.inform.emit('[ERROR_NOTCL] %s' %
                                  _("Columns or Rows are zero value. Change them to a positive integer."))
                                  _("Columns or Rows are zero value. Change them to a positive integer."))
-            return "Columns or Rows are zero value. Change them to a positive integer."
+            return
 
 
         xmin, ymin, xmax, ymax = box.bounds()
         xmin, ymin, xmax, ymax = box.bounds()
         lenghtx = xmax - xmin + spacing_columns
         lenghtx = xmax - xmin + spacing_columns
@@ -586,7 +587,7 @@ class Panelize(AppTool):
                     obj_fin.create_geometry()
                     obj_fin.create_geometry()
                     obj_fin.zeros = panel_source_obj.zeros
                     obj_fin.zeros = panel_source_obj.zeros
                     obj_fin.units = panel_source_obj.units
                     obj_fin.units = panel_source_obj.units
-                    self.app.proc_container.update_view_text('')
+                    app_obj.proc_container.update_view_text('')
 
 
                 def job_init_geometry(obj_fin, app_obj):
                 def job_init_geometry(obj_fin, app_obj):
                     currentx = 0.0
                     currentx = 0.0
@@ -628,11 +629,11 @@ class Panelize(AppTool):
                                     geo_len += len(panel_source_obj.tools[tool]['solid_geometry'])
                                     geo_len += len(panel_source_obj.tools[tool]['solid_geometry'])
                                 except TypeError:
                                 except TypeError:
                                     geo_len += 1
                                     geo_len += 1
-                        else:
-                            try:
-                                geo_len = len(panel_source_obj.solid_geometry)
-                            except TypeError:
-                                geo_len = 1
+                        # else:
+                        #     try:
+                        #         geo_len = len(panel_source_obj.solid_geometry)
+                        #     except TypeError:
+                        #         geo_len = 1
                     elif panel_source_obj.kind == 'gerber':
                     elif panel_source_obj.kind == 'gerber':
                         for ap in panel_source_obj.apertures:
                         for ap in panel_source_obj.apertures:
                             if 'geometry' in panel_source_obj.apertures[ap]:
                             if 'geometry' in panel_source_obj.apertures[ap]:
@@ -653,7 +654,7 @@ class Panelize(AppTool):
                             if panel_source_obj.kind == 'geometry':
                             if panel_source_obj.kind == 'geometry':
                                 if panel_source_obj.multigeo is True:
                                 if panel_source_obj.multigeo is True:
                                     for tool in panel_source_obj.tools:
                                     for tool in panel_source_obj.tools:
-                                        if self.app.abort_flag:
+                                        if app_obj.abort_flag:
                                             # graceful abort requested by the user
                                             # graceful abort requested by the user
                                             raise grace
                                             raise grace
 
 
@@ -667,13 +668,11 @@ class Panelize(AppTool):
                                             pol_nr += 1
                                             pol_nr += 1
                                             disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 100]))
                                             disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 100]))
                                             if old_disp_number < disp_number <= 100:
                                             if old_disp_number < disp_number <= 100:
-                                                self.app.proc_container.update_view_text(' %s: %d %d%%' %
-                                                                                         (_("Copy"),
-                                                                                          int(element),
-                                                                                          disp_number))
+                                                app_obj.proc_container.update_view_text(
+                                                    ' %s: %d %d%%' % (_("Copy"), int(element), disp_number))
                                                 old_disp_number = disp_number
                                                 old_disp_number = disp_number
                                 else:
                                 else:
-                                    if self.app.abort_flag:
+                                    if app_obj.abort_flag:
                                         # graceful abort requested by the user
                                         # graceful abort requested by the user
                                         raise grace
                                         raise grace
 
 
@@ -685,7 +684,7 @@ class Panelize(AppTool):
                                     pol_nr = 0
                                     pol_nr = 0
                                     try:
                                     try:
                                         for geo_el in panel_source_obj.solid_geometry:
                                         for geo_el in panel_source_obj.solid_geometry:
-                                            if self.app.abort_flag:
+                                            if app_obj.abort_flag:
                                                 # graceful abort requested by the user
                                                 # graceful abort requested by the user
                                                 raise grace
                                                 raise grace
 
 
@@ -696,10 +695,8 @@ class Panelize(AppTool):
                                             disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 100]))
                                             disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 100]))
 
 
                                             if old_disp_number < disp_number <= 100:
                                             if old_disp_number < disp_number <= 100:
-                                                self.app.proc_container.update_view_text(' %s: %d %d%%' %
-                                                                                         (_("Copy"),
-                                                                                          int(element),
-                                                                                          disp_number))
+                                                app_obj.proc_container.update_view_text(
+                                                    ' %s: %d %d%%' % (_("Copy"), int(element), disp_number))
                                                 old_disp_number = disp_number
                                                 old_disp_number = disp_number
 
 
                                     except TypeError:
                                     except TypeError:
@@ -713,7 +710,7 @@ class Panelize(AppTool):
 
 
                                 try:
                                 try:
                                     for geo_el in panel_source_obj.solid_geometry:
                                     for geo_el in panel_source_obj.solid_geometry:
-                                        if self.app.abort_flag:
+                                        if app_obj.abort_flag:
                                             # graceful abort requested by the user
                                             # graceful abort requested by the user
                                             raise grace
                                             raise grace
 
 
@@ -724,7 +721,7 @@ class Panelize(AppTool):
                                     obj_fin.solid_geometry.append(trans_geo)
                                     obj_fin.solid_geometry.append(trans_geo)
 
 
                                 for apid in panel_source_obj.apertures:
                                 for apid in panel_source_obj.apertures:
-                                    if self.app.abort_flag:
+                                    if app_obj.abort_flag:
                                         # graceful abort requested by the user
                                         # graceful abort requested by the user
                                         raise grace
                                         raise grace
                                     if 'geometry' in panel_source_obj.apertures[apid]:
                                     if 'geometry' in panel_source_obj.apertures[apid]:
@@ -735,7 +732,7 @@ class Panelize(AppTool):
                                             geo_len = 1
                                             geo_len = 1
                                         pol_nr = 0
                                         pol_nr = 0
                                         for el in panel_source_obj.apertures[apid]['geometry']:
                                         for el in panel_source_obj.apertures[apid]['geometry']:
-                                            if self.app.abort_flag:
+                                            if app_obj.abort_flag:
                                                 # graceful abort requested by the user
                                                 # graceful abort requested by the user
                                                 raise grace
                                                 raise grace
 
 
@@ -758,16 +755,13 @@ class Panelize(AppTool):
                                             disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 100]))
                                             disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 100]))
 
 
                                             if old_disp_number < disp_number <= 100:
                                             if old_disp_number < disp_number <= 100:
-                                                self.app.proc_container.update_view_text(' %s: %d %d%%' %
-                                                                                         (_("Copy"),
-                                                                                          int(element),
-                                                                                          disp_number))
+                                                app_obj.proc_container.update_view_text(
+                                                    ' %s: %d %d%%' % (_("Copy"), int(element), disp_number))
                                                 old_disp_number = disp_number
                                                 old_disp_number = disp_number
 
 
                             currentx += lenghtx
                             currentx += lenghtx
                         currenty += lenghty
                         currenty += lenghty
 
 
-                    print("before", obj_fin.tools)
                     if panel_source_obj.kind == 'geometry' and panel_source_obj.multigeo is True:
                     if panel_source_obj.kind == 'geometry' and panel_source_obj.multigeo is True:
                         # I'm going to do this only here as a fix for panelizing cutouts
                         # I'm going to do this only here as a fix for panelizing cutouts
                         # I'm going to separate linestrings out of the solid geometry from other
                         # I'm going to separate linestrings out of the solid geometry from other
@@ -782,22 +776,23 @@ class Panelize(AppTool):
                                     other_geo.append(geo)
                                     other_geo.append(geo)
                             fused_lines = list(unary_union(lines))
                             fused_lines = list(unary_union(lines))
                             obj_fin.tools[tool]['solid_geometry'] = fused_lines + other_geo
                             obj_fin.tools[tool]['solid_geometry'] = fused_lines + other_geo
-                    print("after", obj_fin.tools)
 
 
                     if panel_type == 'gerber':
                     if panel_type == 'gerber':
-                        self.app.inform.emit('%s' % _("Generating panel ... Adding the Gerber code."))
+                        app_obj.inform.emit('%s' % _("Generating panel ... Adding the Gerber code."))
                         obj_fin.source_file = self.app.export_gerber(obj_name=self.outname, filename=None,
                         obj_fin.source_file = self.app.export_gerber(obj_name=self.outname, filename=None,
                                                                      local_use=obj_fin, use_thread=False)
                                                                      local_use=obj_fin, use_thread=False)
 
 
                     # obj_fin.solid_geometry = cascaded_union(obj_fin.solid_geometry)
                     # obj_fin.solid_geometry = cascaded_union(obj_fin.solid_geometry)
                     # app_obj.log.debug("Finished creating a cascaded union for the panel.")
                     # app_obj.log.debug("Finished creating a cascaded union for the panel.")
-                    self.app.proc_container.update_view_text('')
+                    app_obj.proc_container.update_view_text('')
 
 
                 self.app.inform.emit('%s: %d' % (_("Generating panel... Spawning copies"), (int(rows * columns))))
                 self.app.inform.emit('%s: %d' % (_("Generating panel... Spawning copies"), (int(rows * columns))))
                 if panel_source_obj.kind == 'excellon':
                 if panel_source_obj.kind == 'excellon':
-                    self.app.app_obj.new_object("excellon", self.outname, job_init_excellon, plot=True, autoselected=True)
+                    self.app.app_obj.new_object(
+                        "excellon", self.outname, job_init_excellon, plot=True, autoselected=True)
                 else:
                 else:
-                    self.app.app_obj.new_object(panel_type, self.outname, job_init_geometry, plot=True, autoselected=True)
+                    self.app.app_obj.new_object(
+                        panel_type, self.outname, job_init_geometry, plot=True, autoselected=True)
 
 
         if self.constrain_flag is False:
         if self.constrain_flag is False:
             self.app.inform.emit('[success] %s' % _("Panel done..."))
             self.app.inform.emit('[success] %s' % _("Panel done..."))
@@ -812,7 +807,7 @@ class Panelize(AppTool):
         def job_thread(app_obj):
         def job_thread(app_obj):
             try:
             try:
                 panelize_worker()
                 panelize_worker()
-                self.app.inform.emit('[success] %s' % _("Panel created successfully."))
+                app_obj.inform.emit('[success] %s' % _("Panel created successfully."))
             except Exception as ee:
             except Exception as ee:
                 proc.done()
                 proc.done()
                 log.debug(str(ee))
                 log.debug(str(ee))

+ 4 - 3
app_Main.py

@@ -162,7 +162,8 @@ class App(QtCore.QObject):
     # ###############################################################################################################
     # ###############################################################################################################
     # ################################### Version and VERSION DATE ##################################################
     # ################################### Version and VERSION DATE ##################################################
     # ###############################################################################################################
     # ###############################################################################################################
-    version = 8.993
+    version = "Unstable Version"
+    # version = 8.993
     version_date = "2020/06/05"
     version_date = "2020/06/05"
     beta = True
     beta = True
 
 
@@ -2898,7 +2899,7 @@ class App(QtCore.QObject):
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "French"), 2, 0)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "French"), 2, 0)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Michel Maciejewski"), 2, 1)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Michel Maciejewski"), 2, 1)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % ""), 2, 2)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % ""), 2, 2)
-                self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "<micmac@gmail.com>"), 2, 3)
+                self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "<micmac589@gmail.com>"), 2, 3)
 
 
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Hungarian"), 3, 0)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Hungarian"), 3, 0)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % " "), 3, 1)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % " "), 3, 1)
@@ -2906,7 +2907,7 @@ class App(QtCore.QObject):
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % " "), 3, 3)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % " "), 3, 3)
 
 
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Italian"), 4, 0)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Italian"), 4, 0)
-                self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Golfetto Massimiliano"), 4, 1)
+                self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "Massimiliano Golfetto"), 4, 1)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % " "), 4, 2)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % " "), 4, 2)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "<golfetto.pcb@gmail.com>"), 4, 3)
                 self.translator_grid_lay.addWidget(QtWidgets.QLabel('%s' % "<golfetto.pcb@gmail.com>"), 4, 3)