- Cutout Tool - fixed mouse bites feature in case of using a Geometry object and Freeform cutout
- Cutout Tool - can do cutouts on multigeo Geometry objects: it will automatically select the geometry of first tool - Geometry Editor - fixed exception raised when trying to move and there is no shape to move
This commit is contained in:
@@ -16,6 +16,9 @@ CHANGELOG for FlatCAM beta
|
|||||||
- Cutout Tool - rectangular and freeform cutouts are done in a threaded way
|
- Cutout Tool - rectangular and freeform cutouts are done in a threaded way
|
||||||
- Cutout Tool - added the Mouse Bites feature for the Rectangular and Freeform cutouts and right now it fails in case of using a Geometry object and Freeform cutout (weird result)
|
- Cutout Tool - added the Mouse Bites feature for the Rectangular and Freeform cutouts and right now it fails in case of using a Geometry object and Freeform cutout (weird result)
|
||||||
- some changes in camlib due of warnigns for future changes in Shapely 2.0
|
- some changes in camlib due of warnigns for future changes in Shapely 2.0
|
||||||
|
- Cutout Tool - fixed mouse bites feature in case of using a Geometry object and Freeform cutout
|
||||||
|
- Cutout Tool - can do cutouts on multigeo Geometry objects: it will automatically select the geometry of first tool
|
||||||
|
- Geometry Editor - fixed exception raised when trying to move and there is no shape to move
|
||||||
|
|
||||||
28.08.2020
|
28.08.2020
|
||||||
|
|
||||||
|
|||||||
@@ -4378,8 +4378,12 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
self.on_tool_select('move')
|
self.on_tool_select('move')
|
||||||
|
|
||||||
def on_move_click(self):
|
def on_move_click(self):
|
||||||
|
try:
|
||||||
|
x, y = self.snap(self.x, self.y)
|
||||||
|
except TypeError:
|
||||||
|
return
|
||||||
self.on_move()
|
self.on_move()
|
||||||
self.active_tool.set_origin(self.snap(self.x, self.y))
|
self.active_tool.set_origin((x, y))
|
||||||
|
|
||||||
def on_copy_click(self):
|
def on_copy_click(self):
|
||||||
if not self.selected:
|
if not self.selected:
|
||||||
|
|||||||
@@ -732,7 +732,11 @@ class CutOut(AppTool):
|
|||||||
geo_buf = object_geo.buffer(margin - abs(dia / 2))
|
geo_buf = object_geo.buffer(margin - abs(dia / 2))
|
||||||
geo = geo_buf.exterior
|
geo = geo_buf.exterior
|
||||||
else:
|
else:
|
||||||
geo = object_geo
|
if isinstance(object_geo, MultiPolygon):
|
||||||
|
x0, y0, x1, y1 = object_geo.bounds
|
||||||
|
object_geo = box(x0, y0, x1, y1)
|
||||||
|
geo_buf = object_geo.buffer(0)
|
||||||
|
geo = geo_buf.exterior
|
||||||
|
|
||||||
solid_geo, rest_geo = cutout_handler(geom=geo, gapsize=gapsize)
|
solid_geo, rest_geo = cutout_handler(geom=geo, gapsize=gapsize)
|
||||||
if gap_type == 'bt' and thin_entry != 0:
|
if gap_type == 'bt' and thin_entry != 0:
|
||||||
@@ -779,7 +783,11 @@ class CutOut(AppTool):
|
|||||||
geo_buf = mb_object_geo.buffer(margin - mb_buff_val)
|
geo_buf = mb_object_geo.buffer(margin - mb_buff_val)
|
||||||
mb_geo = geo_buf.exterior
|
mb_geo = geo_buf.exterior
|
||||||
else:
|
else:
|
||||||
mb_geo = mb_object_geo
|
if isinstance(mb_object_geo, MultiPolygon):
|
||||||
|
x0, y0, x1, y1 = mb_object_geo.bounds
|
||||||
|
mb_object_geo = box(x0, y0, x1, y1)
|
||||||
|
geo_buf = mb_object_geo.buffer(0)
|
||||||
|
mb_geo = geo_buf.exterior
|
||||||
|
|
||||||
__, rest_geo = cutout_handler(geom=mb_geo, gapsize=gapsize)
|
__, rest_geo = cutout_handler(geom=mb_geo, gapsize=gapsize)
|
||||||
mouse_bites_geo = rest_geo
|
mouse_bites_geo = rest_geo
|
||||||
@@ -1122,6 +1130,8 @@ class CutOut(AppTool):
|
|||||||
mb_geo = mb_geo.buffer(margin + mb_buff_val)
|
mb_geo = mb_geo.buffer(margin + mb_buff_val)
|
||||||
else:
|
else:
|
||||||
mb_geo = mb_geo.buffer(margin - mb_buff_val)
|
mb_geo = mb_geo.buffer(margin - mb_buff_val)
|
||||||
|
else:
|
||||||
|
mb_geo = mb_geo.buffer(0)
|
||||||
|
|
||||||
mb_solid_geo = cutout_rect_handler(mb_geo, gapsize, xmin, ymin, xmax, ymax)
|
mb_solid_geo = cutout_rect_handler(mb_geo, gapsize, xmin, ymin, xmax, ymax)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user