Explorar o código

- fixed camlib.Gerber skew, rotate, offset, mirror functions to work for geometry stored in the Gerber apertures

Marius Stanciu %!s(int64=6) %!d(string=hai) anos
pai
achega
8275750d3e
Modificáronse 3 ficheiros con 35 adicións e 24 borrados
  1. 1 1
      README.md
  2. 34 4
      camlib.py
  3. 0 19
      flatcamTools/ToolMove.py

+ 1 - 1
README.md

@@ -13,7 +13,7 @@ CAD program, and create G-Code for Isolation routing.
 
 
 - added zoom fit for Set Origin command
 - added zoom fit for Set Origin command
 - added move action for solid_geometry stored in the gerber_obj.apertures
 - 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
 7.05.2019
 
 

+ 34 - 4
camlib.py

@@ -3505,6 +3505,7 @@ class Gerber (Geometry):
                     self.apertures[apid]['clear_geometry'] = scale_geom(self.apertures[apid]['clear_geometry'])
                     self.apertures[apid]['clear_geometry'] = scale_geom(self.apertures[apid]['clear_geometry'])
         except Exception as e:
         except Exception as e:
             log.debug('camlib.Gerber.scale() Exception --> %s' % str(e))
             log.debug('camlib.Gerber.scale() Exception --> %s' % str(e))
+            return 'fail'
 
 
         self.app.inform.emit(_("[success] Gerber Scale done."))
         self.app.inform.emit(_("[success] Gerber Scale done."))
 
 
@@ -3561,7 +3562,14 @@ class Gerber (Geometry):
             for apid in self.apertures:
             for apid in self.apertures:
                 self.apertures[apid]['solid_geometry'] = offset_geom(self.apertures[apid]['solid_geometry'])
                 self.apertures[apid]['solid_geometry'] = offset_geom(self.apertures[apid]['solid_geometry'])
         except Exception as e:
         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."))
         self.app.inform.emit(_("[success] Gerber Offset done."))
 
 
@@ -3607,7 +3615,14 @@ class Gerber (Geometry):
             for apid in self.apertures:
             for apid in self.apertures:
                 self.apertures[apid]['solid_geometry'] = mirror_geom(self.apertures[apid]['solid_geometry'])
                 self.apertures[apid]['solid_geometry'] = mirror_geom(self.apertures[apid]['solid_geometry'])
         except Exception as e:
         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.
         #  It's a cascaded union of objects.
         # self.solid_geometry = affinity.scale(self.solid_geometry,
         # self.solid_geometry = affinity.scale(self.solid_geometry,
@@ -3647,7 +3662,15 @@ class Gerber (Geometry):
             for apid in self.apertures:
             for apid in self.apertures:
                 self.apertures[apid]['solid_geometry'] = skew_geom(self.apertures[apid]['solid_geometry'])
                 self.apertures[apid]['solid_geometry'] = skew_geom(self.apertures[apid]['solid_geometry'])
         except Exception as e:
         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))
         # self.solid_geometry = affinity.skew(self.solid_geometry, angle_x, angle_y, origin=(px, py))
 
 
     def rotate(self, angle, point):
     def rotate(self, angle, point):
@@ -3677,7 +3700,14 @@ class Gerber (Geometry):
             for apid in self.apertures:
             for apid in self.apertures:
                 self.apertures[apid]['solid_geometry'] = rotate_geom(self.apertures[apid]['solid_geometry'])
                 self.apertures[apid]['solid_geometry'] = rotate_geom(self.apertures[apid]['solid_geometry'])
         except Exception as e:
         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))
         # self.solid_geometry = affinity.rotate(self.solid_geometry, angle, origin=(px, py))
 
 
 
 

+ 0 - 19
flatcamTools/ToolMove.py

@@ -130,15 +130,6 @@ class ToolMove(FlatCAMTool):
                     def job_move(app_obj):
                     def job_move(app_obj):
                         obj_list = self.app.collection.get_selected()
                         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:
                         try:
                             if not obj_list:
                             if not obj_list:
                                 self.app.inform.emit(_("[WARNING_NOTCL] No object(s) selected."))
                                 self.app.inform.emit(_("[WARNING_NOTCL] No object(s) selected."))
@@ -148,16 +139,6 @@ class ToolMove(FlatCAMTool):
 
 
                                     # offset solid_geometry
                                     # offset solid_geometry
                                     sel_obj.offset((dx, dy))
                                     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()
                                     sel_obj.plot()
 
 
                                     try:
                                     try: