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

- fixed issue in Tool Calculators when a float value was entered starting only with the dot.
- added protection for entering incorrect values in Offset and Scale fields for Gerber and Geometry objects (in Selected Tab)

Marius Stanciu 7 лет назад
Родитель
Сommit
f6271033b3
5 измененных файлов с 47 добавлено и 5 удалено
  1. 1 1
      FlatCAMApp.py
  2. 20 1
      FlatCAMObj.py
  3. 5 0
      README.md
  4. 20 2
      camlib.py
  5. 1 1
      flatcamTools/ToolCalculators.py

+ 1 - 1
FlatCAMApp.py

@@ -91,7 +91,7 @@ class App(QtCore.QObject):
 
     # Version
     version = 8.905
-    version_date = "2019/01/28"
+    version_date = "2019/01/29"
     beta = True
 
     # URL for update checks and statistics

+ 20 - 1
FlatCAMObj.py

@@ -3470,8 +3470,20 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
         :rtype: None
         """
 
+        try:
+            xfactor = float(xfactor)
+        except:
+            self.app.inform.emit("[error_notcl] Scale factor has to be a number: integer or float.")
+            return
+
         if yfactor is None:
             yfactor = xfactor
+        else:
+            try:
+                yfactor = float(yfactor)
+            except:
+                self.app.inform.emit("[error_notcl] Scale factor has to be a number: integer or float.")
+                return
 
         if point is None:
             px = 0
@@ -3489,6 +3501,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
         else:
             self.solid_geometry = affinity.scale(self.solid_geometry, xfactor, yfactor,
                                                  origin=(px, py))
+        self.app.inform.emit("[success]Geometry Scale done.")
 
     def offset(self, vect):
         """
@@ -3500,7 +3513,12 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
         :rtype: None
         """
 
-        dx, dy = vect
+        try:
+            dx, dy = vect
+        except TypeError:
+            self.app.inform.emit("[error_notcl]An (x,y) pair of values are needed. "
+                                 "Probable you entered only one value in the Offset field.")
+            return
 
         def translate_recursion(geom):
             if type(geom) == list:
@@ -3516,6 +3534,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
                 self.tools[tool]['solid_geometry'] = translate_recursion(self.tools[tool]['solid_geometry'])
         else:
             self.solid_geometry=translate_recursion(self.solid_geometry)
+        self.app.inform.emit("[success]Geometry Offset done.")
 
     def convert_units(self, units):
         self.ui_disconnect()

+ 5 - 0
README.md

@@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing.
 
 =================================================
 
+29.01.2019
+
+- fixed issue in Tool Calculators when a float value was entered starting only with the dot.
+- added protection for entering incorrect values in Offset and Scale fields for Gerber and Geometry objects (in Selected Tab)
+
 28.01.2018
 
 - fixed the FlatCAMGerber.merge() function

+ 20 - 2
camlib.py

@@ -3018,8 +3018,20 @@ class Gerber (Geometry):
         :rtype : None
         """
 
+        try:
+            xfactor = float(xfactor)
+        except:
+            self.app.inform.emit("[error_notcl] Scale factor has to be a number: integer or float.")
+            return
+
         if yfactor is None:
             yfactor = xfactor
+        else:
+            try:
+                yfactor = float(yfactor)
+            except:
+                self.app.inform.emit("[error_notcl] Scale factor has to be a number: integer or float.")
+                return
 
         if point is None:
             px = 0
@@ -3038,6 +3050,7 @@ class Gerber (Geometry):
                                              yfactor, origin=(px, py))
 
         self.solid_geometry = scale_geom(self.solid_geometry)
+        self.app.inform.emit("[success]Gerber Scale done.")
 
         ## solid_geometry ???
         #  It's a cascaded union of objects.
@@ -3066,8 +3079,12 @@ class Gerber (Geometry):
         :type vect: tuple
         :return: None
         """
-
-        dx, dy = vect
+        try:
+            dx, dy = vect
+        except TypeError:
+            self.app.inform.emit("[error_notcl]An (x,y) pair of values are needed. "
+                                 "Probable you entered only one value in the Offset field.")
+            return
 
         def offset_geom(obj):
             if type(obj) is list:
@@ -3081,6 +3098,7 @@ class Gerber (Geometry):
         ## Solid geometry
         # self.solid_geometry = affinity.translate(self.solid_geometry, xoff=dx, yoff=dy)
         self.solid_geometry = offset_geom(self.solid_geometry)
+        self.app.inform.emit("[success]Gerber Offset done.")
 
     def mirror(self, axis, point):
         """

+ 1 - 1
flatcamTools/ToolCalculators.py

@@ -157,7 +157,7 @@ class ToolCalculator(FlatCAMTool):
             tip_diameter = float(self.tipDia_entry.get_value())
             half_tip_angle = float(self.tipAngle_entry.get_value()) / 2
             cut_depth = float(self.cutDepth_entry.get_value())
-        except TypeError:
+        except:
             return
 
         tool_diameter = tip_diameter + (2 * cut_depth * math.tan(math.radians(half_tip_angle)))