Explorar o código

- fixed Gerber object color set for Legacy(2D) graphic engine; glitch on the OpenGL(3D) graphic engine

Marius Stanciu %!s(int64=6) %!d(string=hai) anos
pai
achega
9fe3dfbfa9
Modificáronse 4 ficheiros con 31 adicións e 13 borrados
  1. 15 6
      FlatCAMApp.py
  2. 3 3
      FlatCAMObj.py
  3. 1 0
      README.md
  4. 12 4
      flatcamGUI/PlotCanvasLegacy.py

+ 15 - 6
FlatCAMApp.py

@@ -12396,13 +12396,22 @@ class App(QtCore.QObject):
             new_color = str(plot_fill_color.name()) + \
                         str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
 
-        new_line_color = new_color[:-2]
-        sel_obj.fill_color = new_color
-        sel_obj.outline_color = new_line_color
+        if self.is_legacy is False:
+            new_line_color = new_color[:-2]
+            sel_obj.fill_color = new_color
+            sel_obj.outline_color = new_line_color
 
-        sel_obj.shapes.redraw(
-            update_colors=(new_color, new_line_color)
-        )
+            sel_obj.shapes.redraw(
+                update_colors=(new_color, new_line_color)
+            )
+        else:
+            new_line_color = new_color
+
+            sel_obj.fill_color = new_color
+            sel_obj.outline_color = new_line_color
+            sel_obj.shapes.redraw(
+                update_colors=(new_color, new_line_color)
+            )
 
     def on_grid_snap_triggered(self, state):
         if state:

+ 3 - 3
FlatCAMObj.py

@@ -112,9 +112,6 @@ class FlatCAMObj(QtCore.QObject):
         else:
             self.shapes = ShapeCollectionLegacy(obj=self, app=self.app, name=name)
 
-        self.fill_color = self.app.defaults['global_plot_fill']
-        self.outline_color = self.app.defaults['global_plot_line']
-
         self.mark_shapes = dict()
 
         self.item = None  # Link with project view item
@@ -657,6 +654,9 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
 
         self.units_found = self.app.defaults['units']
 
+        self.fill_color = self.app.defaults['global_plot_fill']
+        self.outline_color = self.app.defaults['global_plot_line']
+
         # Attributes to be included in serialization
         # Always append to it because it carries contents
         # from predecessors.

+ 1 - 0
README.md

@@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing.
 - added a new option for the Gerber objects: on the project context menu now can be chosen a color for the selected Gerber object
 - fixed issue in Gerber UI where a label was not hidden when in Basic mode
 - added the color parameters of the objects to the serializable attributes
+- fixed Gerber object color set for Legacy(2D) graphic engine; glitch on the OpenGL(3D) graphic engine
 
 21.12.2019
 

+ 12 - 4
flatcamGUI/PlotCanvasLegacy.py

@@ -1033,7 +1033,7 @@ class ShapeCollectionLegacy:
         if update is True:
             self.redraw()
 
-    def redraw(self):
+    def redraw(self, update_colors=None):
         """
         This draw the shapes in the shapes collection, on canvas
 
@@ -1087,7 +1087,6 @@ class ShapeCollectionLegacy:
                         self.axes.plot(x, y, local_shapes[element]['color'],
                                        linestyle='-',
                                        linewidth=local_shapes[element]['linewidth'])
-
                 elif obj_type == 'gerber':
                     if self.obj.options["multicolored"]:
                         linespec = '-'
@@ -1095,16 +1094,25 @@ class ShapeCollectionLegacy:
                         linespec = 'k-'
 
                     if self.obj.options["solid"]:
+                        if update_colors:
+                            gerber_fill_color = update_colors[0]
+                            gerber_outline_color = update_colors[1]
+                        else:
+                            gerber_fill_color = local_shapes[element]['face_color']
+                            gerber_outline_color = local_shapes[element]['color']
+
                         try:
                             patch = PolygonPatch(local_shapes[element]['shape'],
-                                                 facecolor=local_shapes[element]['face_color'],
-                                                 edgecolor=local_shapes[element]['color'],
+                                                 facecolor=gerber_fill_color,
+                                                 edgecolor=gerber_outline_color,
                                                  alpha=local_shapes[element]['alpha'],
                                                  zorder=2)
                             self.axes.add_patch(patch)
                         except AssertionError:
                             FlatCAMApp.App.log.warning("A geometry component was not a polygon:")
                             FlatCAMApp.App.log.warning(str(element))
+                        except Exception as e:
+                            FlatCAMApp.App.log.debug("PlotCanvasLegacy.ShepeCollectionLegacy.redraw() --> %s" % str(e))
                     else:
                         x, y = local_shapes[element]['shape'].exterior.xy
                         self.axes.plot(x, y, linespec)