- fixed bug in CutOut Tool
This commit is contained in:
@@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing.
|
|||||||
|
|
||||||
=================================================
|
=================================================
|
||||||
|
|
||||||
|
5.07.2019
|
||||||
|
|
||||||
|
- fixed bug in CutOut Tool
|
||||||
|
|
||||||
1.07.2019
|
1.07.2019
|
||||||
|
|
||||||
- Spanish translation at 36%
|
- Spanish translation at 36%
|
||||||
|
|||||||
@@ -419,61 +419,65 @@ class CutOut(FlatCAMTool):
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
object_geo = [object_geo]
|
object_geo = [object_geo]
|
||||||
|
|
||||||
for geo in object_geo:
|
# for geo in object_geo:
|
||||||
if isinstance(cutout_obj, FlatCAMGerber):
|
if isinstance(cutout_obj, FlatCAMGerber):
|
||||||
geo = (geo.buffer(margin + abs(dia / 2))).exterior
|
geo = (object_geo.buffer(margin + abs(dia / 2))).exterior
|
||||||
|
else:
|
||||||
|
geo = object_geo
|
||||||
|
|
||||||
# Get min and max data for each object as we just cut rectangles across X or Y
|
geo = unary_union(geo)
|
||||||
xmin, ymin, xmax, ymax = recursive_bounds(geo)
|
|
||||||
|
|
||||||
px = 0.5 * (xmin + xmax) + margin
|
# Get min and max data for each object as we just cut rectangles across X or Y
|
||||||
py = 0.5 * (ymin + ymax) + margin
|
xmin, ymin, xmax, ymax = recursive_bounds(geo)
|
||||||
lenx = (xmax - xmin) + (margin * 2)
|
|
||||||
leny = (ymax - ymin) + (margin * 2)
|
|
||||||
|
|
||||||
if gaps == '8' or gaps == '2LR':
|
px = 0.5 * (xmin + xmax) + margin
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
py = 0.5 * (ymin + ymax) + margin
|
||||||
xmin - gapsize, # botleft_x
|
lenx = (xmax - xmin) + (margin * 2)
|
||||||
py - gapsize + leny / 4, # botleft_y
|
leny = (ymax - ymin) + (margin * 2)
|
||||||
xmax + gapsize, # topright_x
|
|
||||||
py + gapsize + leny / 4) # topright_y
|
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
|
||||||
xmin - gapsize,
|
|
||||||
py - gapsize - leny / 4,
|
|
||||||
xmax + gapsize,
|
|
||||||
py + gapsize - leny / 4)
|
|
||||||
|
|
||||||
if gaps == '8' or gaps == '2TB':
|
if gaps == '8' or gaps == '2LR':
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
px - gapsize + lenx / 4,
|
xmin - gapsize, # botleft_x
|
||||||
ymin - gapsize,
|
py - gapsize + leny / 4, # botleft_y
|
||||||
px + gapsize + lenx / 4,
|
xmax + gapsize, # topright_x
|
||||||
ymax + gapsize)
|
py + gapsize + leny / 4) # topright_y
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
px - gapsize - lenx / 4,
|
xmin - gapsize,
|
||||||
ymin - gapsize,
|
py - gapsize - leny / 4,
|
||||||
px + gapsize - lenx / 4,
|
xmax + gapsize,
|
||||||
ymax + gapsize)
|
py + gapsize - leny / 4)
|
||||||
|
|
||||||
if gaps == '4' or gaps == 'LR':
|
if gaps == '8' or gaps == '2TB':
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
xmin - gapsize,
|
px - gapsize + lenx / 4,
|
||||||
py - gapsize,
|
ymin - gapsize,
|
||||||
xmax + gapsize,
|
px + gapsize + lenx / 4,
|
||||||
py + gapsize)
|
ymax + gapsize)
|
||||||
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
|
px - gapsize - lenx / 4,
|
||||||
|
ymin - gapsize,
|
||||||
|
px + gapsize - lenx / 4,
|
||||||
|
ymax + gapsize)
|
||||||
|
|
||||||
if gaps == '4' or gaps == 'TB':
|
if gaps == '4' or gaps == 'LR':
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
px - gapsize,
|
xmin - gapsize,
|
||||||
ymin - gapsize,
|
py - gapsize,
|
||||||
px + gapsize,
|
xmax + gapsize,
|
||||||
ymax + gapsize)
|
py + gapsize)
|
||||||
|
|
||||||
try:
|
if gaps == '4' or gaps == 'TB':
|
||||||
for g in geo:
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
solid_geo.append(g)
|
px - gapsize,
|
||||||
except TypeError:
|
ymin - gapsize,
|
||||||
solid_geo.append(geo)
|
px + gapsize,
|
||||||
|
ymax + gapsize)
|
||||||
|
|
||||||
|
try:
|
||||||
|
for g in geo:
|
||||||
|
solid_geo.append(g)
|
||||||
|
except TypeError:
|
||||||
|
solid_geo.append(geo)
|
||||||
|
|
||||||
geo_obj.solid_geometry = deepcopy(solid_geo)
|
geo_obj.solid_geometry = deepcopy(solid_geo)
|
||||||
xmin, ymin, xmax, ymax = recursive_bounds(geo_obj.solid_geometry)
|
xmin, ymin, xmax, ymax = recursive_bounds(geo_obj.solid_geometry)
|
||||||
@@ -575,63 +579,63 @@ class CutOut(FlatCAMTool):
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
object_geo = [object_geo]
|
object_geo = [object_geo]
|
||||||
|
|
||||||
for poly in object_geo:
|
object_geo = unary_union(object_geo)
|
||||||
|
|
||||||
xmin, ymin, xmax, ymax = poly.bounds
|
xmin, ymin, xmax, ymax = object_geo.bounds
|
||||||
geo = box(xmin, ymin, xmax, ymax)
|
geo = box(xmin, ymin, xmax, ymax)
|
||||||
|
|
||||||
# if Gerber create a buffer at a distance
|
# if Gerber create a buffer at a distance
|
||||||
# if Geometry then cut through the geometry
|
# if Geometry then cut through the geometry
|
||||||
if isinstance(cutout_obj, FlatCAMGerber):
|
if isinstance(cutout_obj, FlatCAMGerber):
|
||||||
geo = geo.buffer(margin + abs(dia / 2))
|
geo = geo.buffer(margin + abs(dia / 2))
|
||||||
|
|
||||||
px = 0.5 * (xmin + xmax) + margin
|
px = 0.5 * (xmin + xmax) + margin
|
||||||
py = 0.5 * (ymin + ymax) + margin
|
py = 0.5 * (ymin + ymax) + margin
|
||||||
lenx = (xmax - xmin) + (margin * 2)
|
lenx = (xmax - xmin) + (margin * 2)
|
||||||
leny = (ymax - ymin) + (margin * 2)
|
leny = (ymax - ymin) + (margin * 2)
|
||||||
|
|
||||||
if gaps == '8' or gaps == '2LR':
|
if gaps == '8' or gaps == '2LR':
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
xmin - gapsize, # botleft_x
|
xmin - gapsize, # botleft_x
|
||||||
py - gapsize + leny / 4, # botleft_y
|
py - gapsize + leny / 4, # botleft_y
|
||||||
xmax + gapsize, # topright_x
|
xmax + gapsize, # topright_x
|
||||||
py + gapsize + leny / 4) # topright_y
|
py + gapsize + leny / 4) # topright_y
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
xmin - gapsize,
|
xmin - gapsize,
|
||||||
py - gapsize - leny / 4,
|
py - gapsize - leny / 4,
|
||||||
xmax + gapsize,
|
xmax + gapsize,
|
||||||
py + gapsize - leny / 4)
|
py + gapsize - leny / 4)
|
||||||
|
|
||||||
if gaps == '8' or gaps == '2TB':
|
if gaps == '8' or gaps == '2TB':
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
px - gapsize + lenx / 4,
|
px - gapsize + lenx / 4,
|
||||||
ymin - gapsize,
|
ymin - gapsize,
|
||||||
px + gapsize + lenx / 4,
|
px + gapsize + lenx / 4,
|
||||||
ymax + gapsize)
|
ymax + gapsize)
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
px - gapsize - lenx / 4,
|
px - gapsize - lenx / 4,
|
||||||
ymin - gapsize,
|
ymin - gapsize,
|
||||||
px + gapsize - lenx / 4,
|
px + gapsize - lenx / 4,
|
||||||
ymax + gapsize)
|
ymax + gapsize)
|
||||||
|
|
||||||
if gaps == '4' or gaps == 'LR':
|
if gaps == '4' or gaps == 'LR':
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
xmin - gapsize,
|
xmin - gapsize,
|
||||||
py - gapsize,
|
py - gapsize,
|
||||||
xmax + gapsize,
|
xmax + gapsize,
|
||||||
py + gapsize)
|
py + gapsize)
|
||||||
|
|
||||||
if gaps == '4' or gaps == 'TB':
|
if gaps == '4' or gaps == 'TB':
|
||||||
geo = self.subtract_poly_from_geo(geo,
|
geo = self.subtract_poly_from_geo(geo,
|
||||||
px - gapsize,
|
px - gapsize,
|
||||||
ymin - gapsize,
|
ymin - gapsize,
|
||||||
px + gapsize,
|
px + gapsize,
|
||||||
ymax + gapsize)
|
ymax + gapsize)
|
||||||
try:
|
try:
|
||||||
for g in geo:
|
for g in geo:
|
||||||
solid_geo.append(g)
|
solid_geo.append(g)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
solid_geo.append(geo)
|
solid_geo.append(geo)
|
||||||
|
|
||||||
geo_obj.solid_geometry = deepcopy(solid_geo)
|
geo_obj.solid_geometry = deepcopy(solid_geo)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user