- Gerber Editor: added multiple modes to lay a Region: 45-degrees, reverse 45-degrees, 90-degrees, reverse 90-degrees and free-angle. Added also key shortcuts 'T' and 'R' to cycle forward, respectively in reverse through the modes.
This commit is contained in:
parent
b91e492805
commit
7218c2d920
@ -14,7 +14,7 @@ CAD program, and create G-Code for Isolation routing.
|
|||||||
- Gerber Editor: added some messages to warn user if no selection exists when trying to do aperture deletion or aperture geometry deletion
|
- Gerber Editor: added some messages to warn user if no selection exists when trying to do aperture deletion or aperture geometry deletion
|
||||||
- fixed version check
|
- fixed version check
|
||||||
- added custom mouse cursors for some tools in Gerber Editor
|
- added custom mouse cursors for some tools in Gerber Editor
|
||||||
- Gerber Editor: work in progress to add multiple modes of drawing for the Region Tool
|
- Gerber Editor: added multiple modes to lay a Region: 45-degrees, reverse 45-degrees, 90-degrees, reverse 90-degrees and free-angle. Added also key shortcuts 'T' and 'R' to cycle forward, respectively in reverse through the modes.
|
||||||
|
|
||||||
16.04.2019
|
16.04.2019
|
||||||
|
|
||||||
|
@ -620,6 +620,7 @@ class FCRegion(FCShapeTool):
|
|||||||
QtGui.QGuiApplication.setOverrideCursor(self.cursor)
|
QtGui.QGuiApplication.setOverrideCursor(self.cursor)
|
||||||
|
|
||||||
self.mode = 1
|
self.mode = 1
|
||||||
|
self.draw_app.app.inform.emit(_('Corner Mode 1: 45 degrees ...'))
|
||||||
|
|
||||||
self.start_msg = _("Click on 1st point ...")
|
self.start_msg = _("Click on 1st point ...")
|
||||||
|
|
||||||
@ -628,7 +629,6 @@ class FCRegion(FCShapeTool):
|
|||||||
|
|
||||||
if self.inter_point is not None:
|
if self.inter_point is not None:
|
||||||
self.points.append(self.inter_point)
|
self.points.append(self.inter_point)
|
||||||
|
|
||||||
self.points.append(point)
|
self.points.append(point)
|
||||||
|
|
||||||
if len(self.points) > 0:
|
if len(self.points) > 0:
|
||||||
@ -694,13 +694,15 @@ class FCRegion(FCShapeTool):
|
|||||||
else:
|
else:
|
||||||
self.inter_point = (x, old_y + self.gridy_size * mx)
|
self.inter_point = (x, old_y + self.gridy_size * mx)
|
||||||
elif self.mode == 3:
|
elif self.mode == 3:
|
||||||
self.temp_points.append((old_x, y))
|
self.inter_point = (old_x, y)
|
||||||
elif self.mode == 4:
|
elif self.mode == 4:
|
||||||
self.temp_points.append((x, old_y))
|
self.inter_point = (x, old_y)
|
||||||
|
|
||||||
if self.inter_point is not None:
|
if self.inter_point is not None:
|
||||||
self.temp_points.append(self.inter_point)
|
self.temp_points.append(self.inter_point)
|
||||||
else:
|
else:
|
||||||
self.inter_point = data
|
self.inter_point = data
|
||||||
|
|
||||||
self.temp_points.append(data)
|
self.temp_points.append(data)
|
||||||
else:
|
else:
|
||||||
self.inter_point = data
|
self.inter_point = data
|
||||||
@ -714,67 +716,68 @@ class FCRegion(FCShapeTool):
|
|||||||
else:
|
else:
|
||||||
return DrawToolUtilityShape(Point(self.temp_points).buffer(self.buf_val))
|
return DrawToolUtilityShape(Point(self.temp_points).buffer(self.buf_val))
|
||||||
|
|
||||||
if len(self.points) > 1:
|
if len(self.points) > 2:
|
||||||
self.temp_points = [x for x in self.points]
|
self.temp_points = [x for x in self.points]
|
||||||
|
|
||||||
old_x = self.points[-1][0]
|
old_x = self.points[-1][0]
|
||||||
old_y = self.points[-1][1]
|
old_y = self.points[-1][1]
|
||||||
mx = abs(round((x - old_x) / self.gridx_size))
|
mx = abs(round((x - old_x) / self.gridx_size))
|
||||||
my = abs(round((y - old_y) / self.gridy_size))
|
my = abs(round((y - old_y) / self.gridy_size))
|
||||||
|
|
||||||
if self.draw_app.app.ui.grid_snap_btn.isChecked():
|
if mx and my:
|
||||||
if self.mode != 5:
|
if self.draw_app.app.ui.grid_snap_btn.isChecked():
|
||||||
if self.mode == 1:
|
if self.mode != 5:
|
||||||
if x > old_x:
|
if self.mode == 1:
|
||||||
if mx > my:
|
if x > old_x:
|
||||||
self.inter_point = (old_x + self.gridx_size * (mx - my), old_y)
|
if mx > my:
|
||||||
if mx < my:
|
self.inter_point = (old_x + self.gridx_size * (mx - my), old_y)
|
||||||
if y < old_y:
|
if mx < my:
|
||||||
self.inter_point = (old_x, old_y - self.gridy_size * (my - mx))
|
if y < old_y:
|
||||||
else:
|
self.inter_point = (old_x, old_y - self.gridy_size * (my - mx))
|
||||||
self.inter_point = (old_x, old_y - self.gridy_size * (mx - my))
|
else:
|
||||||
if x < old_x:
|
self.inter_point = (old_x, old_y - self.gridy_size * (mx - my))
|
||||||
if mx > my:
|
if x < old_x:
|
||||||
self.inter_point = (old_x - self.gridx_size * (mx - my), old_y)
|
if mx > my:
|
||||||
if mx < my:
|
self.inter_point = (old_x - self.gridx_size * (mx - my), old_y)
|
||||||
if y < old_y:
|
if mx < my:
|
||||||
self.inter_point = (old_x, old_y - self.gridy_size * (my - mx))
|
if y < old_y:
|
||||||
else:
|
self.inter_point = (old_x, old_y - self.gridy_size * (my - mx))
|
||||||
self.inter_point = (old_x, old_y - self.gridy_size * (mx - my))
|
else:
|
||||||
elif self.mode == 2:
|
self.inter_point = (old_x, old_y - self.gridy_size * (mx - my))
|
||||||
if x > old_x:
|
elif self.mode == 2:
|
||||||
if mx > my:
|
if x > old_x:
|
||||||
self.inter_point = (old_x + self.gridx_size * my, y)
|
if mx > my:
|
||||||
if mx < my:
|
self.inter_point = (old_x + self.gridx_size * my, y)
|
||||||
if y < old_y:
|
if mx < my:
|
||||||
self.inter_point = (x, old_y - self.gridy_size * mx)
|
if y < old_y:
|
||||||
else:
|
self.inter_point = (x, old_y - self.gridy_size * mx)
|
||||||
self.inter_point = (x, old_y + self.gridy_size * mx)
|
else:
|
||||||
if x < old_x:
|
self.inter_point = (x, old_y + self.gridy_size * mx)
|
||||||
if mx > my:
|
if x < old_x:
|
||||||
self.inter_point = (old_x - self.gridx_size * my, y)
|
if mx > my:
|
||||||
if mx < my:
|
self.inter_point = (old_x - self.gridx_size * my, y)
|
||||||
if y < old_y:
|
if mx < my:
|
||||||
self.inter_point = (x, old_y - self.gridy_size * mx)
|
if y < old_y:
|
||||||
else:
|
self.inter_point = (x, old_y - self.gridy_size * mx)
|
||||||
self.inter_point = (x, old_y + self.gridy_size * mx)
|
else:
|
||||||
elif self.mode == 3:
|
self.inter_point = (x, old_y + self.gridy_size * mx)
|
||||||
self.temp_points.append((old_x, y))
|
elif self.mode == 3:
|
||||||
elif self.mode == 4:
|
self.inter_point = (old_x, y)
|
||||||
self.temp_points.append((x, old_y))
|
elif self.mode == 4:
|
||||||
|
self.inter_point = (x, old_y)
|
||||||
self.temp_points.append(self.inter_point)
|
|
||||||
|
|
||||||
|
self.temp_points.append(self.inter_point)
|
||||||
self.temp_points.append(data)
|
self.temp_points.append(data)
|
||||||
|
|
||||||
return DrawToolUtilityShape(LinearRing(self.temp_points).buffer(self.buf_val, join_style=1))
|
return DrawToolUtilityShape(LinearRing(self.temp_points).buffer(self.buf_val, join_style=1))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def make(self):
|
def make(self):
|
||||||
# self.geometry = LinearRing(self.points)
|
# self.geometry = LinearRing(self.points)
|
||||||
self.geometry = DrawToolShape(Polygon(self.points).buffer(self.buf_val, join_style=2))
|
if len(self.points) > 2:
|
||||||
|
self.geometry = DrawToolShape(Polygon(self.points).buffer(self.buf_val, join_style=2))
|
||||||
self.draw_app.in_action = False
|
self.draw_app.in_action = False
|
||||||
self.complete = True
|
self.complete = True
|
||||||
self.draw_app.app.inform.emit(_("[success] Done. Region completed."))
|
self.draw_app.app.inform.emit(_("[success] Done."))
|
||||||
|
|
||||||
def clean_up(self):
|
def clean_up(self):
|
||||||
self.draw_app.selected = []
|
self.draw_app.selected = []
|
||||||
@ -784,7 +787,10 @@ class FCRegion(FCShapeTool):
|
|||||||
def on_key(self, key):
|
def on_key(self, key):
|
||||||
if key == 'Backspace' or key == QtCore.Qt.Key_Backspace:
|
if key == 'Backspace' or key == QtCore.Qt.Key_Backspace:
|
||||||
if len(self.points) > 0:
|
if len(self.points) > 0:
|
||||||
self.points = self.points[0:-1]
|
if self.mode == 5:
|
||||||
|
self.points = self.points[0:-1]
|
||||||
|
else:
|
||||||
|
self.points = self.points[0:-2]
|
||||||
# Remove any previous utility shape
|
# Remove any previous utility shape
|
||||||
self.draw_app.tool_shape.clear(update=False)
|
self.draw_app.tool_shape.clear(update=False)
|
||||||
geo = self.utility_geometry(data=(self.draw_app.snap_x, self.draw_app.snap_y))
|
geo = self.utility_geometry(data=(self.draw_app.snap_x, self.draw_app.snap_y))
|
||||||
@ -794,19 +800,19 @@ class FCRegion(FCShapeTool):
|
|||||||
if key == 'T' or key == QtCore.Qt.Key_T:
|
if key == 'T' or key == QtCore.Qt.Key_T:
|
||||||
if self.mode == 1:
|
if self.mode == 1:
|
||||||
self.mode = 2
|
self.mode = 2
|
||||||
msg = _('Track Mode 2: Reverse 45 degrees ...')
|
msg = _('Corner Mode 2: Reverse 45 degrees ...')
|
||||||
elif self.mode == 2:
|
elif self.mode == 2:
|
||||||
self.mode = 3
|
self.mode = 3
|
||||||
msg = _('Track Mode 3: 90 degrees ...')
|
msg = _('Corner Mode 3: 90 degrees ...')
|
||||||
elif self.mode == 3:
|
elif self.mode == 3:
|
||||||
self.mode = 4
|
self.mode = 4
|
||||||
msg = _('Track Mode 4: Reverse 90 degrees ...')
|
msg = _('Corner Mode 4: Reverse 90 degrees ...')
|
||||||
elif self.mode == 4:
|
elif self.mode == 4:
|
||||||
self.mode = 5
|
self.mode = 5
|
||||||
msg = _('Track Mode 5: Free angle ...')
|
msg = _('Corner Mode 5: Free angle ...')
|
||||||
else:
|
else:
|
||||||
self.mode = 1
|
self.mode = 1
|
||||||
msg = _('Track Mode 1: 45 degrees ...')
|
msg = _('Corner Mode 1: 45 degrees ...')
|
||||||
|
|
||||||
# Remove any previous utility shape
|
# Remove any previous utility shape
|
||||||
self.draw_app.tool_shape.clear(update=False)
|
self.draw_app.tool_shape.clear(update=False)
|
||||||
@ -818,19 +824,19 @@ class FCRegion(FCShapeTool):
|
|||||||
if key == 'R' or key == QtCore.Qt.Key_R:
|
if key == 'R' or key == QtCore.Qt.Key_R:
|
||||||
if self.mode == 1:
|
if self.mode == 1:
|
||||||
self.mode = 5
|
self.mode = 5
|
||||||
msg = _('Track Mode 5: Free angle ...')
|
msg = _('Corner Mode 5: Free angle ...')
|
||||||
elif self.mode == 5:
|
elif self.mode == 5:
|
||||||
self.mode = 4
|
self.mode = 4
|
||||||
msg = _('Track Mode 4: Reverse 90 degrees ...')
|
msg = _('Corner Mode 4: Reverse 90 degrees ...')
|
||||||
elif self.mode == 4:
|
elif self.mode == 4:
|
||||||
self.mode = 3
|
self.mode = 3
|
||||||
msg = _('Track Mode 3: 90 degrees ...')
|
msg = _('Corner Mode 3: 90 degrees ...')
|
||||||
elif self.mode == 3:
|
elif self.mode == 3:
|
||||||
self.mode = 2
|
self.mode = 2
|
||||||
msg = _('Track Mode 2: Reverse 45 degrees ...')
|
msg = _('Corner Mode 2: Reverse 45 degrees ...')
|
||||||
else:
|
else:
|
||||||
self.mode = 1
|
self.mode = 1
|
||||||
msg = _('Track Mode 1: 45 degrees ...')
|
msg = _('Corner Mode 1: 45 degrees ...')
|
||||||
|
|
||||||
# Remove any previous utility shape
|
# Remove any previous utility shape
|
||||||
self.draw_app.tool_shape.clear(update=False)
|
self.draw_app.tool_shape.clear(update=False)
|
||||||
@ -868,7 +874,7 @@ class FCTrack(FCRegion):
|
|||||||
|
|
||||||
self.draw_app.in_action = False
|
self.draw_app.in_action = False
|
||||||
self.complete = True
|
self.complete = True
|
||||||
self.draw_app.app.inform.emit(_("[success] Done. Path completed."))
|
self.draw_app.app.inform.emit(_("[success] Done."))
|
||||||
|
|
||||||
def clean_up(self):
|
def clean_up(self):
|
||||||
self.draw_app.selected = []
|
self.draw_app.selected = []
|
||||||
@ -2874,6 +2880,7 @@ class FlatCAMGrbEditor(QtCore.QObject):
|
|||||||
self.active_tool.complete = True
|
self.active_tool.complete = True
|
||||||
self.in_action = False
|
self.in_action = False
|
||||||
self.delete_utility_geometry()
|
self.delete_utility_geometry()
|
||||||
|
self.app.inform.emit(_("[success] Done."))
|
||||||
self.select_tool('select')
|
self.select_tool('select')
|
||||||
else:
|
else:
|
||||||
self.app.cursor = QtGui.QCursor()
|
self.app.cursor = QtGui.QCursor()
|
||||||
|
Loading…
Reference in New Issue
Block a user