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

- Gerber Editor: Remade the processing of 'clear_geometry' (geometry generated by polygons made with Gerber LPC command) to work if more than one such polygon exists

Marius Stanciu 6 лет назад
Родитель
Сommit
84f3166e2f
3 измененных файлов с 15 добавлено и 9 удалено
  1. 2 2
      FlatCAMApp.py
  2. 4 0
      README.md
  3. 9 7
      camlib.py

+ 2 - 2
FlatCAMApp.py

@@ -94,8 +94,8 @@ class App(QtCore.QObject):
     log.addHandler(handler)
 
     # Version
-    version = 8.913
-    version_date = "2019/04/13"
+    version = 8.914
+    version_date = "2019/04/20"
     beta = True
 
     # current date now

+ 4 - 0
README.md

@@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing.
 
 =================================================
 
+14.04.2019
+
+- Gerber Editor: Remade the processing of 'clear_geometry' (geometry generated by polygons made with Gerber LPC command) to work if more than one such polygon exists
+
 13.04.2019
 
 - updating the German translation

+ 9 - 7
camlib.py

@@ -3183,16 +3183,18 @@ class Gerber (Geometry):
             temp_geo = []
             for apid in self.apertures:
                 if 'clear_geometry' in self.apertures[apid]:
-                    for clear_geo in self.apertures[apid]['clear_geometry']:
-                        for solid_geo in self.apertures[apid]['solid_geometry']:
-                            if solid_geo.intersects(clear_geo):
-                                res_geo = clear_geo.symmetric_difference(solid_geo)
-                                temp_geo.append(res_geo)
-                            else:
-                                temp_geo.append(solid_geo)
+                    clear_geo = cascaded_union(self.apertures[apid]['clear_geometry'])
+                    for solid_geo in self.apertures[apid]['solid_geometry']:
+                        if clear_geo.intersects(solid_geo):
+                            res_geo = clear_geo.symmetric_difference(solid_geo)
+                            temp_geo.append(res_geo)
+                        else:
+                            temp_geo.append(solid_geo)
                     self.apertures[apid]['solid_geometry'] = deepcopy(temp_geo)
                     self.apertures[apid].pop('clear_geometry', None)
 
+
+
             # --- Apply buffer ---
             # this treats the case when we are storing geometry as paths
             self.follow_geometry = follow_buffer