From 8275750d3e512b71df454aa6304590ad62ea2ff8 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 8 May 2019 06:15:02 +0300 Subject: [PATCH] - fixed camlib.Gerber skew, rotate, offset, mirror functions to work for geometry stored in the Gerber apertures --- README.md | 2 +- camlib.py | 38 ++++++++++++++++++++++++++++++++++---- flatcamTools/ToolMove.py | 19 ------------------- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index d90f5874..60e9aac6 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ CAD program, and create G-Code for Isolation routing. - added zoom fit for Set Origin command - added move action for solid_geometry stored in the gerber_obj.apertures - +- fixed camlib.Gerber skew, rotate, offset, mirror functions to work for geometry stored in the Gerber apertures 7.05.2019 diff --git a/camlib.py b/camlib.py index 5eed2efc..be06a7c5 100644 --- a/camlib.py +++ b/camlib.py @@ -3505,6 +3505,7 @@ class Gerber (Geometry): self.apertures[apid]['clear_geometry'] = scale_geom(self.apertures[apid]['clear_geometry']) except Exception as e: log.debug('camlib.Gerber.scale() Exception --> %s' % str(e)) + return 'fail' self.app.inform.emit(_("[success] Gerber Scale done.")) @@ -3561,7 +3562,14 @@ class Gerber (Geometry): for apid in self.apertures: self.apertures[apid]['solid_geometry'] = offset_geom(self.apertures[apid]['solid_geometry']) except Exception as e: - log.debug('FlatCAMGeometry.offset() --> %s' % str(e)) + log.debug('camlib.Gerber.offset() --> %s' % str(e)) + return 'fail' + try: + for apid in self.apertures: + self.apertures[apid]['follow_geometry'] = offset_geom(self.apertures[apid]['follow_geometry']) + except Exception as e: + log.debug('camlib.Gerber.offset() --> %s' % str(e)) + return 'fail' self.app.inform.emit(_("[success] Gerber Offset done.")) @@ -3607,7 +3615,14 @@ class Gerber (Geometry): for apid in self.apertures: self.apertures[apid]['solid_geometry'] = mirror_geom(self.apertures[apid]['solid_geometry']) except Exception as e: - log.debug('FlatCAMGeometry.mirror() --> %s' % str(e)) + log.debug('camlib.Gerber.mirror() --> %s' % str(e)) + return 'fail' + try: + for apid in self.apertures: + self.apertures[apid]['follow_geometry'] = mirror_geom(self.apertures[apid]['follow_geometry']) + except Exception as e: + log.debug('camlib.Gerber.mirror() --> %s' % str(e)) + return 'fail' # It's a cascaded union of objects. # self.solid_geometry = affinity.scale(self.solid_geometry, @@ -3647,7 +3662,15 @@ class Gerber (Geometry): for apid in self.apertures: self.apertures[apid]['solid_geometry'] = skew_geom(self.apertures[apid]['solid_geometry']) except Exception as e: - log.debug('FlatCAMGeometry.skew() --> %s' % str(e)) + log.debug('camlib.Gerber.skew() --> %s' % str(e)) + return 'fail' + try: + for apid in self.apertures: + self.apertures[apid]['follow_geometry'] = skew_geom(self.apertures[apid]['follow_geometry']) + except Exception as e: + log.debug('camlib.Gerber.skew() --> %s' % str(e)) + return 'fail' + # self.solid_geometry = affinity.skew(self.solid_geometry, angle_x, angle_y, origin=(px, py)) def rotate(self, angle, point): @@ -3677,7 +3700,14 @@ class Gerber (Geometry): for apid in self.apertures: self.apertures[apid]['solid_geometry'] = rotate_geom(self.apertures[apid]['solid_geometry']) except Exception as e: - log.debug('FlatCAMGeometry.rotate() --> %s' % str(e)) + log.debug('camlib.Gerber.rotate() --> %s' % str(e)) + return 'fail' + try: + for apid in self.apertures: + self.apertures[apid]['follow_geometry'] = rotate_geom(self.apertures[apid]['follow_geometry']) + except Exception as e: + log.debug('camlib.Gerber.rotate() --> %s' % str(e)) + return 'fail' # self.solid_geometry = affinity.rotate(self.solid_geometry, angle, origin=(px, py)) diff --git a/flatcamTools/ToolMove.py b/flatcamTools/ToolMove.py index d56cf815..1d0d430c 100644 --- a/flatcamTools/ToolMove.py +++ b/flatcamTools/ToolMove.py @@ -130,15 +130,6 @@ class ToolMove(FlatCAMTool): def job_move(app_obj): obj_list = self.app.collection.get_selected() - def offset_geom(obj): - if type(obj) is list: - new_obj = [] - for g in obj: - new_obj.append(offset_geom(g)) - return new_obj - else: - return affinity.translate(obj, xoff=dx, yoff=dy) - try: if not obj_list: self.app.inform.emit(_("[WARNING_NOTCL] No object(s) selected.")) @@ -148,16 +139,6 @@ class ToolMove(FlatCAMTool): # offset solid_geometry sel_obj.offset((dx, dy)) - - for apid in sel_obj.apertures: - if 'solid_geometry' in sel_obj.apertures[apid]: - sel_obj.apertures[apid]['solid_geometry'] = offset_geom( - sel_obj.apertures[apid]['solid_geometry'] - ) - if 'follow_geometry' in sel_obj.apertures[apid]: - sel_obj.apertures[apid]['follow_geometry'] = offset_geom( - sel_obj.apertures[apid]['follow_geometry'] - ) sel_obj.plot() try: