فهرست منبع

- fixed bug in Gerber editor FCDisk and FCSemiDisc that the resulting geometry was not stored into the '0' aperture where all the solids are stored
- fixed minor issue in Gerber Editor where apertures were included in the saved object even if there was no geometric data for that aperture

Marius Stanciu 6 سال پیش
والد
کامیت
8a273b3a6f
2فایلهای تغییر یافته به همراه32 افزوده شده و 4 حذف شده
  1. 6 0
      README.md
  2. 26 4
      flatcamEditors/FlatCAMGrbEditor.py

+ 6 - 0
README.md

@@ -9,12 +9,18 @@ CAD program, and create G-Code for Isolation routing.
 
 =================================================
 
+23.05.2019
+
+- fixed bug in Gerber editor FCDisk and FCSemiDisc that the resulting geometry was not stored into the '0' aperture where all the solids are stored
+- fixed minor issue in Gerber Editor where apertures were included in the saved object even if there was no geometric data for that aperture
+
 22.05.2019
 
 - Geo Editor - added a new editor tool, Eraser
 - some PEP8 cleanup of the Geo Editor
 - fixed some selection issues in the new tool Eraser in Geometry Editor
 - updated the translation files
+- RELEASE 8.917
 
 21.05.2019
 

+ 26 - 4
flatcamEditors/FlatCAMGrbEditor.py

@@ -1349,7 +1349,14 @@ class FCDisc(FCShapeTool):
         size_ap = float(self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['size'])
         self.buf_val = (size_ap / 2) if size_ap > 0 else 0.0000001
 
-        self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry']
+        if '0' in self.draw_app.storage_dict:
+            self.storage_obj = self.draw_app.storage_dict['0']['geometry']
+        else:
+            self.draw_app.storage_dict['0'] = dict()
+            self.draw_app.storage_dict['0']['type'] = 'C'
+            self.draw_app.storage_dict['0']['size'] = 0.0
+            self.draw_app.storage_dict['0']['geometry'] = list()
+            self.storage_obj = self.draw_app.storage_dict['0']['geometry']
 
         self.draw_app.app.inform.emit(_("Click on Center point ..."))
 
@@ -1436,7 +1443,14 @@ class FCSemiDisc(FCShapeTool):
         size_ap = float(self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['size'])
         self.buf_val = (size_ap / 2) if size_ap > 0 else 0.0000001
 
-        self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry']
+        if '0' in self.draw_app.storage_dict:
+            self.storage_obj = self.draw_app.storage_dict['0']['geometry']
+        else:
+            self.draw_app.storage_dict['0'] = dict()
+            self.draw_app.storage_dict['0']['type'] = 'C'
+            self.draw_app.storage_dict['0']['size'] = 0.0
+            self.draw_app.storage_dict['0']['geometry'] = list()
+            self.storage_obj = self.draw_app.storage_dict['0']['geometry']
 
         self.steps_per_circ = self.draw_app.app.defaults["gerber_circle_steps"]
 
@@ -2050,7 +2064,9 @@ class FCEraser(FCShapeTool):
                     if 'solid' in geo_el.geo:
                         geometric_data = geo_el.geo['solid']
                         if eraser_sel_shapes.within(geometric_data) or eraser_sel_shapes.intersects(geometric_data):
-                            geo_el.geo['solid'] = geometric_data.difference(eraser_sel_shapes)
+                            geos = geometric_data.difference(eraser_sel_shapes)
+                            geos = geos.buffer(0)
+                            geo_el.geo['solid'] = deepcopy(geos)
             except KeyError:
                 pass
 
@@ -3621,7 +3637,13 @@ class FlatCAMGrbEditor(QtCore.QObject):
                            self.gerber_obj.options['name'].upper())
 
         out_name = outname
-        local_storage_dict = deepcopy(self.storage_dict)
+
+        local_storage_dict = dict()
+        for aperture in self.storage_dict:
+            if 'geometry' in self.storage_dict[aperture]:
+                # add aperture only if it has geometry
+                if len(self.storage_dict[aperture]['geometry']) > 0:
+                    local_storage_dict[aperture] = deepcopy(self.storage_dict[aperture])
 
         # How the object should be initialized
         def obj_init(grb_obj, app_obj):