diff --git a/README.md b/README.md index b92d8796..08bee953 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ CAD program, and create G-Code for Isolation routing. - Gerber Editor: fixed error when adding an aperture with code value lower than the ones that already exists - when adding an aperture with code '0' (zero) it will automatically be set with size zero and type: 'REG' (from region); here we store all the regions from a Gerber file, the ones without a declared aperture - Gerber Editor: added support for Gerber polarity change commands (LPD, LPC) +- moved the polarity change processing from FlatCAMGrbEditor() class to camlib.Gerber().parse_lines() 11.04.2019 diff --git a/camlib.py b/camlib.py index a9fcc364..c7f53d33 100644 --- a/camlib.py +++ b/camlib.py @@ -3178,8 +3178,22 @@ class Gerber (Geometry): self.apertures[last_path_aperture]['solid_geometry'] = [] self.apertures[last_path_aperture]['solid_geometry'].append(geo) - # --- Apply buffer --- + # first check if we have any clear_geometry (LPC) and if yes then we need to substract it + # from the apertures solid_geometry + temp_geo = [] + for apid in self.apertures: + if 'clear_geometry' in self.apertures[apid]: + for clear_geo in self.apertures[apid]['clear_geometry']: + for solid_geo in self.apertures[apid]['solid_geometry']: + if solid_geo.intersects(clear_geo): + res_geo = clear_geo.symmetric_difference(solid_geo) + temp_geo.append(res_geo) + else: + temp_geo.append(solid_geo) + self.apertures[apid]['solid_geometry'] = deepcopy(temp_geo) + self.apertures[apid].pop('clear_geometry', None) + # --- Apply buffer --- # this treats the case when we are storing geometry as paths self.follow_geometry = follow_buffer diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 3bce2921..14f7e8a9 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -1896,18 +1896,6 @@ class FlatCAMGrbEditor(QtCore.QObject): follow_storage_elem = [] self.storage_dict[apid] = {} - # first check if we have any clear_geometry (LPC) and if yes then we need to substract it - # from the solid_geometry - temp_geo = [] - if 'clear_geometry' in self.gerber_obj.apertures[apid]: - for clear_geo in self.gerber_obj.apertures[apid]['clear_geometry']: - for solid_geo in self.gerber_obj.apertures[apid]['solid_geometry']: - if solid_geo.intersects(clear_geo): - res_geo = clear_geo.symmetric_difference(solid_geo) - temp_geo.append(res_geo) - else: - temp_geo.append(solid_geo) - self.gerber_obj.apertures[apid]['solid_geometry'] = deepcopy(temp_geo) # add the Gerber geometry to editor storage for k, v in self.gerber_obj.apertures[apid].items():