소스 검색

- working on QRCode Tool; finished offseting the goemetry both in apertures and in solid_geometry; updated the source_file of the source object

Marius Stanciu 6 년 전
부모
커밋
ee61ba63fa
2개의 변경된 파일32개의 추가작업 그리고 20개의 파일을 삭제
  1. 1 0
      README.md
  2. 31 20
      flatcamTools/ToolQRCode.py

+ 1 - 0
README.md

@@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing.
 - added some placeholder texts in the TextBoxes.
 - working on QRCode Tool; addded the utility geometry and intial functional layout
 - working on QRCode Tool; finished adding the QRCode geometry to the selected Gerber object and also finished adding the 'follow' geometry needed when exporting the Gerber object as a Gerber file in addition to the 'solid' geometry in the obj.apertures
+- working on QRCode Tool; finished offseting the goemetry both in apertures and in solid_geometry; updated the source_file of the source object
 
 23.10.2019
 

+ 31 - 20
flatcamTools/ToolQRCode.py

@@ -327,8 +327,6 @@ class QRCode(FlatCAMTool):
             self.app.plotcanvas.graph_event_disconnect(self.mr)
             self.app.plotcanvas.graph_event_disconnect(self.kr)
 
-        self.clicked_move = 0
-
         # delete the utility geometry
         self.delete_utility_geo()
 
@@ -337,7 +335,17 @@ class QRCode(FlatCAMTool):
             self.grb_object.solid_geometry = list(self.grb_object.solid_geometry)
 
         # I use the utility geometry (self.qrcode_utility_geometry) because it is already buffered
-        self.grb_object.solid_geometry += self.qrcode_utility_geometry
+        geo_list = self.grb_object.solid_geometry
+        if isinstance(self.grb_object.solid_geometry, MultiPolygon):
+            geo_list = list(self.grb_object.solid_geometry.geoms)
+
+        try:
+            for geo in self.qrcode_utility_geometry:
+                geo_list.append(translate(geo, xoff=pos[0], yoff=pos[1]))
+        except TypeError:
+            geo_list.append(translate(self.qrcode_utility_geometry, xoff=pos[0], yoff=pos[1]))
+
+        self.grb_object.solid_geometry = deepcopy(geo_list)
 
         box_size = float(self.bsize_entry.get_value()) / 10.0
 
@@ -347,37 +355,40 @@ class QRCode(FlatCAMTool):
             for k, v in list(self.grb_object.apertures.items()):
                 sort_apid.append(int(k))
             sorted_apertures = sorted(sort_apid)
-            new_apid = str(10 + len(sorted_apertures))
+            new_apid = str(max(sorted_apertures) + 1)
 
         if new_apid not in self.grb_object.apertures:
             self.grb_object.apertures[new_apid] = dict()
             self.grb_object.apertures[new_apid]['geometry'] = list()
             self.grb_object.apertures[new_apid]['type'] = 'R'
-            self.grb_object.apertures[new_apid]['height'] = box_size
-            self.grb_object.apertures[new_apid]['width'] = box_size
-            self.grb_object.apertures[new_apid]['size'] = math.sqrt(box_size ** 2 + box_size ** 2)
-
-        if self.grb_object.options['xmin'] == Inf or self.grb_object.options['xmin'] == -Inf:
-            try:
-                a, b, c, d = self.grb_object.bounds()
-                self.grb_object.options['xmin'] = a
-                self.grb_object.options['ymin'] = b
-                self.grb_object.options['xmax'] = c
-                self.grb_object.options['ymax'] = d
-            except Exception as e:
-                log.debug("QRCode.make() bounds error --> %s" % str(e))
+            self.grb_object.apertures[new_apid]['height'] = deepcopy(box_size)
+            self.grb_object.apertures[new_apid]['width'] = deepcopy(box_size)
+            self.grb_object.apertures[new_apid]['size'] = deepcopy(math.sqrt(box_size ** 2 + box_size ** 2))
+
+        try:
+            a, b, c, d = self.grb_object.bounds()
+            self.grb_object.options['xmin'] = a
+            self.grb_object.options['ymin'] = b
+            self.grb_object.options['xmax'] = c
+            self.grb_object.options['ymax'] = d
+        except Exception as e:
+            log.debug("QRCode.make() bounds error --> %s" % str(e))
 
         try:
             for geo in self.qrcode_geometry:
                 geo_elem = dict()
-                geo_elem['solid'] = geo
-                geo_elem['follow'] = geo.centroid
+                geo_elem['solid'] = translate(geo, xoff=pos[0], yoff=pos[1])
+                geo_elem['follow'] = translate(geo.centroid, xoff=pos[0], yoff=pos[1])
                 self.grb_object.apertures[new_apid]['geometry'].append(deepcopy(geo_elem))
         except TypeError:
             geo_elem = dict()
             geo_elem['solid'] = self.qrcode_geometry
             self.grb_object.apertures['0']['geometry'].append(deepcopy(geo_elem))
-        print(self.grb_object.apertures)
+
+        # update the source file with the new geometry:
+        self.grb_object.source_file = self.app.export_gerber(obj_name=self.grb_object.options['name'], filename=None,
+                                                             local_use=self.grb_object, use_thread=False)
+
         self.replot()
 
     def draw_utility_geo(self, pos):