- in Tools: Paint, NCC and Copper Fill, when using the Area Selection, now the selected aras will stay drawn as markers until the user click RMB

- in legacy2D graphic engine, adding an utility geometry no longer draw the older ones, overwriting them
This commit is contained in:
Marius Stanciu 2019-10-28 15:03:21 +02:00
parent f9ad83ba29
commit b994ee9639
7 changed files with 95 additions and 11 deletions

View File

@ -2748,6 +2748,14 @@ class App(QtCore.QObject):
# this holds a widget that is installed in the Plot Area when View Source option is used
self.source_editor_tab = None
# Storage for shapes, storage that can be used by FlatCAm tools for utility geometry
# VisPy visuals
if self.is_legacy is False:
self.tool_shapes = ShapeCollection(parent=self.plotcanvas.view.scene, layers=1)
else:
from flatcamGUI.PlotCanvasLegacy import ShapeCollectionLegacy
self.tool_shapes = ShapeCollectionLegacy(obj=self, app=self, name="tool")
# ###############################################################################
# ############# Save defaults to factory_defaults.FlatConfig file ###############
# ############# It's done only once after install ###############

View File

@ -9,6 +9,8 @@
from PyQt5 import QtGui, QtCore, QtWidgets, QtWidgets
from PyQt5.QtCore import Qt
from shapely.geometry import Polygon
class FlatCAMTool(QtWidgets.QWidget):
@ -90,3 +92,49 @@ class FlatCAMTool(QtWidgets.QWidget):
self.app.ui.tool_scroll_area.widget().setObjectName(self.toolName)
self.show()
def draw_tool_selection_shape(self, old_coords, coords, **kwargs):
"""
:param old_coords: old coordinates
:param coords: new coordinates
:return:
"""
if 'color' in kwargs:
color = kwargs['color']
else:
color = self.app.defaults['global_sel_line']
if 'face_color' in kwargs:
face_color = kwargs['face_color']
else:
face_color = self.app.defaults['global_sel_fill']
if 'face_alpha' in kwargs:
face_alpha = kwargs['face_alpha']
else:
face_alpha = 0.3
x0, y0 = old_coords
x1, y1 = coords
pt1 = (x0, y0)
pt2 = (x1, y0)
pt3 = (x1, y1)
pt4 = (x0, y1)
sel_rect = Polygon([pt1, pt2, pt3, pt4])
# color_t = Color(face_color)
# color_t.alpha = face_alpha
color_t = face_color[:-2] + str(hex(int(face_alpha * 255)))[2:]
self.app.tool_shapes.add(sel_rect, color=color, face_color=color_t, update=True,
layer=0, tolerance=None)
if self.app.is_legacy is True:
self.app.tool_shapes.redraw()
def delete_tool_selection_shape(self):
self.app.tool_shapes.clear()
self.app.tool_shapes.redraw()

View File

@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing.
=================================================
28.10.2019
- in Tools: Paint, NCC and Copper Fill, when using the Area Selection, now the selected aras will stay drawn as markers until the user click RMB
- in legacy2D graphic engine, adding an utility geometry no longer draw the older ones, overwriting them
27.10.2019
- Copper Fill Tool: some PEP8 corrections
@ -53,7 +58,7 @@ CAD program, and create G-Code for Isolation routing.
- working on the Calibrate Excellon Tool
- finished the GUI layout for the Calibrate Excellon Tool
- start working on QRCode Tool - not working yet
- start working on QRCode Tool - searching for alternatives
- start working on QRCode Tool - searching for alternativess
21.10.2019

View File

@ -272,8 +272,6 @@ class PlotCanvasLegacy(QtCore.QObject):
:return: None
"""
# self.double_click.disconnect(cid)
self.canvas.mpl_disconnect(cid)
def on_new_screen(self):
@ -936,6 +934,7 @@ class ShapeCollectionLegacy:
:return: None
"""
path_num = 0
local_shapes = deepcopy(self._shapes)
@ -945,6 +944,10 @@ class ShapeCollectionLegacy:
obj_type = 'utility'
if self._visible:
# if we don't use this then when adding each new shape, the old ones will be added again, too
if obj_type == 'utility':
self.axes.patches.clear()
for element in local_shapes:
if obj_type == 'excellon':
# Plot excellon (All polygons?)
@ -1040,6 +1043,7 @@ class ShapeCollectionLegacy:
edgecolor=local_shapes[element]['color'],
alpha=local_shapes[element]['alpha'],
zorder=2)
self.axes.add_patch(patch)
except Exception as e:
log.debug("ShapeCollectionLegacy.redraw() --> %s" % str(e))

View File

@ -373,6 +373,7 @@ class ToolCopperFill(FlatCAMTool):
self.cursor_pos = self.app.geo_editor.snap(event_pos[0], event_pos[1])
else:
self.app.inform.emit(_("Zone added. Click to start adding next zone or right click to finish."))
self.app.delete_selection_shape()
if self.app.grid_status() is True:
curr_pos = self.app.geo_editor.snap(event_pos[0], event_pos[1])
@ -386,15 +387,20 @@ class ToolCopperFill(FlatCAMTool):
pt3 = (x1, y1)
pt4 = (x0, y1)
self.sel_rect.append(Polygon([pt1, pt2, pt3, pt4]))
new_rectangle = Polygon([pt1, pt2, pt3, pt4])
self.sel_rect.append(new_rectangle)
# add a temporary shape on canvas
self.draw_tool_selection_shape(old_coords=(x0, y0), coords=(x1, y1))
self.first_click = False
return
elif event.button == right_button and self.mouse_is_dragging is False:
self.app.delete_selection_shape()
self.area_method = False
self.first_click = False
self.delete_tool_selection_shape()
if self.app.is_legacy is False:
self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release)
self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move)

View File

@ -1241,6 +1241,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
self.cursor_pos = self.app.geo_editor.snap(event_pos[0], event_pos[1])
else:
self.app.inform.emit(_("Zone added. Click to start adding next zone or right click to finish."))
self.app.delete_selection_shape()
if self.app.grid_status() == True:
curr_pos = self.app.geo_editor.snap(event_pos[0], event_pos[1])
@ -1254,15 +1255,20 @@ class NonCopperClear(FlatCAMTool, Gerber):
pt3 = (x1, y1)
pt4 = (x0, y1)
self.sel_rect.append(Polygon([pt1, pt2, pt3, pt4]))
new_rectangle = Polygon([pt1, pt2, pt3, pt4])
self.sel_rect.append(new_rectangle)
# add a temporary shape on canvas
self.draw_tool_selection_shape(old_coords=(x0, y0), coords=(x1, y1))
self.first_click = False
return
elif event.button == right_button and self.mouse_is_dragging == False:
self.app.delete_selection_shape()
self.first_click = False
self.delete_tool_selection_shape()
if self.app.is_legacy is False:
self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release)
self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move)

View File

@ -1122,6 +1122,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.cursor_pos = self.app.geo_editor.snap(self.cursor_pos[0], self.cursor_pos[1])
else:
self.app.inform.emit(_("Zone added. Click to start adding next zone or right click to finish."))
self.app.delete_selection_shape()
curr_pos = self.app.plotcanvas.translate_coords(event_pos)
if self.app.grid_status() == True:
@ -1133,15 +1134,21 @@ class ToolPaint(FlatCAMTool, Gerber):
pt2 = (x1, y0)
pt3 = (x1, y1)
pt4 = (x0, y1)
self.sel_rect.append(Polygon([pt1, pt2, pt3, pt4]))
new_rectangle = Polygon([pt1, pt2, pt3, pt4])
self.sel_rect.append(new_rectangle)
# add a temporary shape on canvas
self.draw_tool_selection_shape(old_coords=(x0, y0), coords=(x1, y1))
self.first_click = False
return
elif event.button == right_button and self.mouse_is_dragging is False:
self.app.delete_selection_shape()
self.first_click = False
self.delete_tool_selection_shape()
if self.app.is_legacy is False:
self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release)
self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move)