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

- trying to fix painting single when the actual painted object it's a MultiPolygon

Marius Stanciu 7 лет назад
Родитель
Сommit
037b9657ff
3 измененных файлов с 22 добавлено и 10 удалено
  1. 2 2
      FlatCAMApp.py
  2. 4 0
      README.md
  3. 16 8
      flatcamTools/ToolPaint.py

+ 2 - 2
FlatCAMApp.py

@@ -90,8 +90,8 @@ class App(QtCore.QObject):
     log.addHandler(handler)
 
     # Version
-    version = 8.903
-    version_date = "2019/01/23"
+    version = 8.904
+    version_date = "2019/01/24"
     beta = True
 
     # URL for update checks and statistics

+ 4 - 0
README.md

@@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing.
 
 =================================================
 
+24.01.2019
+
+- trying to fix painting single when the actual painted object it's a MultiPolygon
+
 23.01.2019
 
 - added a new postprocessor file named 'line_xyz' which have x, y, z values on the same GCode line

+ 16 - 8
flatcamTools/ToolPaint.py

@@ -750,14 +750,12 @@ class ToolPaint(FlatCAMTool, Gerber):
         def gen_paintarea(geo_obj, app_obj):
             assert isinstance(geo_obj, FlatCAMGeometry), \
                 "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
-            #assert isinstance(app_obj, App)
+            # assert isinstance(app_obj, App)
 
-            geo_obj.solid_geometry = []
-            try:
-                poly_buf = poly.buffer(-paint_margin)
+            def paint_p(polyg):
                 if paint_method == "seed":
                     # Type(cp) == FlatCAMRTreeStorage | None
-                    cp = self.clear_polygon2(poly_buf,
+                    cp = self.clear_polygon2(polyg,
                                              tooldia=tooldia,
                                              steps_per_circle=self.app.defaults["geometry_circle_steps"],
                                              overlap=overlap,
@@ -766,7 +764,7 @@ class ToolPaint(FlatCAMTool, Gerber):
 
                 elif paint_method == "lines":
                     # Type(cp) == FlatCAMRTreeStorage | None
-                    cp = self.clear_polygon3(poly_buf,
+                    cp = self.clear_polygon3(polyg,
                                              tooldia=tooldia,
                                              steps_per_circle=self.app.defaults["geometry_circle_steps"],
                                              overlap=overlap,
@@ -775,7 +773,7 @@ class ToolPaint(FlatCAMTool, Gerber):
 
                 else:
                     # Type(cp) == FlatCAMRTreeStorage | None
-                    cp = self.clear_polygon(poly_buf,
+                    cp = self.clear_polygon(polyg,
                                              tooldia=tooldia,
                                              steps_per_circle=self.app.defaults["geometry_circle_steps"],
                                              overlap=overlap,
@@ -784,9 +782,19 @@ class ToolPaint(FlatCAMTool, Gerber):
 
                 if cp is not None:
                     geo_obj.solid_geometry += list(cp.get_objects())
+                    return cp
                 else:
                     self.app.inform.emit('[error_notcl] Geometry could not be painted completely')
-                    return
+                    return None
+
+            geo_obj.solid_geometry = []
+            try:
+                poly_buf = poly.buffer(-paint_margin)
+                if isinstance(poly_buf, MultiPolygon):
+                    for pp in poly_buf:
+                        cp = paint_p(pp)
+                else:
+                    cp = paint_p(poly_buf)
             except Exception as e:
                 log.debug("Could not Paint the polygons. %s" % str(e))
                 self.app.inform.emit(