Fixes #119.
This commit is contained in:
parent
eb18b7fd3f
commit
9f138bdcc2
|
@ -162,8 +162,10 @@ class DblSidedTool(FlatCAMTool):
|
||||||
|
|
||||||
# For now, lets limit to Gerbers and Excellons.
|
# For now, lets limit to Gerbers and Excellons.
|
||||||
# assert isinstance(gerb, FlatCAMGerber)
|
# assert isinstance(gerb, FlatCAMGerber)
|
||||||
if not isinstance(fcobj, FlatCAMGerber) and not isinstance(fcobj, FlatCAMExcellon):
|
if not isinstance(fcobj, FlatCAMGerber) and \
|
||||||
self.info("ERROR: Only Gerber and Excellon objects can be mirrored.")
|
not isinstance(fcobj, FlatCAMExcellon) and \
|
||||||
|
not isinstance(fcobj, FlatCAMGeometry):
|
||||||
|
self.info("ERROR: Only Gerber, Excellon and Geometry objects can be mirrored.")
|
||||||
return
|
return
|
||||||
|
|
||||||
axis = self.mirror_axis.get_value()
|
axis = self.mirror_axis.get_value()
|
||||||
|
|
79
camlib.py
79
camlib.py
|
@ -912,6 +912,27 @@ class Geometry(object):
|
||||||
svg_elem = geom.svg(scale_factor=scale_factor)
|
svg_elem = geom.svg(scale_factor=scale_factor)
|
||||||
return svg_elem
|
return svg_elem
|
||||||
|
|
||||||
|
def mirror(self, axis, point):
|
||||||
|
"""
|
||||||
|
Mirrors the object around a specified axis passign through
|
||||||
|
the given point.
|
||||||
|
|
||||||
|
:param axis: "X" or "Y" indicates around which axis to mirror.
|
||||||
|
:type axis: str
|
||||||
|
:param point: [x, y] point belonging to the mirror axis.
|
||||||
|
:type point: list
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
px, py = point
|
||||||
|
xscale, yscale = {"X": (1.0, -1.0), "Y": (-1.0, 1.0)}[axis]
|
||||||
|
|
||||||
|
## solid_geometry ???
|
||||||
|
# It's a cascaded union of objects.
|
||||||
|
self.solid_geometry = affinity.scale(self.solid_geometry,
|
||||||
|
xscale, yscale, origin=(px, py))
|
||||||
|
|
||||||
|
|
||||||
class ApertureMacro:
|
class ApertureMacro:
|
||||||
"""
|
"""
|
||||||
Syntax of aperture macros.
|
Syntax of aperture macros.
|
||||||
|
@ -1496,35 +1517,35 @@ class Gerber (Geometry):
|
||||||
## Solid geometry
|
## Solid geometry
|
||||||
self.solid_geometry = affinity.translate(self.solid_geometry, xoff=dx, yoff=dy)
|
self.solid_geometry = affinity.translate(self.solid_geometry, xoff=dx, yoff=dy)
|
||||||
|
|
||||||
def mirror(self, axis, point):
|
# def mirror(self, axis, point):
|
||||||
"""
|
# """
|
||||||
Mirrors the object around a specified axis passign through
|
# Mirrors the object around a specified axis passign through
|
||||||
the given point. What is affected:
|
# the given point. What is affected:
|
||||||
|
#
|
||||||
* ``buffered_paths``
|
# * ``buffered_paths``
|
||||||
* ``flash_geometry``
|
# * ``flash_geometry``
|
||||||
* ``solid_geometry``
|
# * ``solid_geometry``
|
||||||
* ``regions``
|
# * ``regions``
|
||||||
|
#
|
||||||
NOTE:
|
# NOTE:
|
||||||
Does not modify the data used to create these elements. If these
|
# Does not modify the data used to create these elements. If these
|
||||||
are recreated, the scaling will be lost. This behavior was modified
|
# are recreated, the scaling will be lost. This behavior was modified
|
||||||
because of the complexity reached in this class.
|
# because of the complexity reached in this class.
|
||||||
|
#
|
||||||
:param axis: "X" or "Y" indicates around which axis to mirror.
|
# :param axis: "X" or "Y" indicates around which axis to mirror.
|
||||||
:type axis: str
|
# :type axis: str
|
||||||
:param point: [x, y] point belonging to the mirror axis.
|
# :param point: [x, y] point belonging to the mirror axis.
|
||||||
:type point: list
|
# :type point: list
|
||||||
:return: None
|
# :return: None
|
||||||
"""
|
# """
|
||||||
|
#
|
||||||
px, py = point
|
# px, py = point
|
||||||
xscale, yscale = {"X": (1.0, -1.0), "Y": (-1.0, 1.0)}[axis]
|
# xscale, yscale = {"X": (1.0, -1.0), "Y": (-1.0, 1.0)}[axis]
|
||||||
|
#
|
||||||
## solid_geometry ???
|
# ## solid_geometry ???
|
||||||
# It's a cascaded union of objects.
|
# # It's a cascaded union of objects.
|
||||||
self.solid_geometry = affinity.scale(self.solid_geometry,
|
# self.solid_geometry = affinity.scale(self.solid_geometry,
|
||||||
xscale, yscale, origin=(px, py))
|
# xscale, yscale, origin=(px, py))
|
||||||
|
|
||||||
def aperture_parse(self, apertureId, apertureType, apParameters):
|
def aperture_parse(self, apertureId, apertureType, apParameters):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue