diff --git a/CHANGELOG.md b/CHANGELOG.md index a31a66c1..7dc57107 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ CHANGELOG for FlatCAM beta - updated Turkish translation (by Mehmet Kaya) - in NCC and Isolation Tools, the Validity Checking of the tools is now multithreaded when the Check Validity UI control is checked - translation strings updated +- fixed an error in Gerber parser, when it encounter a pen-up followed by pen-down move while in a region 2.11.2020 diff --git a/appParsers/ParseGerber.py b/appParsers/ParseGerber.py index 17c703bd..2a0b50d7 100644 --- a/appParsers/ParseGerber.py +++ b/appParsers/ParseGerber.py @@ -953,36 +953,41 @@ class Gerber(Geometry): # Reset path starting point path = [[current_x, current_y]] - # --- BUFFERED --- - # Draw the flash - # this treats the case when we are storing geometry as paths - geo_dict = {} - geo_flash = Point([current_x, current_y]) - follow_buffer.append(geo_flash) - geo_dict['follow'] = geo_flash + # treat the case when there is a flash inside a Gerber Region when the current_aperture + # is None + if current_aperture is None: + pass + else: + # --- BUFFERED --- + # Draw the flash + # this treats the case when we are storing geometry as paths + geo_dict = {} + geo_flash = Point([current_x, current_y]) + follow_buffer.append(geo_flash) + geo_dict['follow'] = geo_flash - # this treats the case when we are storing geometry as solids - flash = self.create_flash_geometry( - Point([current_x, current_y]), - self.apertures[current_aperture], - self.steps_per_circle - ) - if not flash.is_empty: - if self.app.defaults['gerber_simplification']: - poly_buffer.append(flash.simplify(s_tol)) - else: - poly_buffer.append(flash) + # this treats the case when we are storing geometry as solids + flash = self.create_flash_geometry( + Point([current_x, current_y]), + self.apertures[current_aperture], + self.steps_per_circle + ) + if not flash.is_empty: + if self.app.defaults['gerber_simplification']: + poly_buffer.append(flash.simplify(s_tol)) + else: + poly_buffer.append(flash) - if self.is_lpc is True: - geo_dict['clear'] = flash - else: - geo_dict['solid'] = flash + if self.is_lpc is True: + geo_dict['clear'] = flash + else: + geo_dict['solid'] = flash - if current_aperture not in self.apertures: - self.apertures[current_aperture] = {} - if 'geometry' not in self.apertures[current_aperture]: - self.apertures[current_aperture]['geometry'] = [] - self.apertures[current_aperture]['geometry'].append(deepcopy(geo_dict)) + if current_aperture not in self.apertures: + self.apertures[current_aperture] = {} + if 'geometry' not in self.apertures[current_aperture]: + self.apertures[current_aperture]['geometry'] = [] + self.apertures[current_aperture]['geometry'].append(deepcopy(geo_dict)) if making_region is False: # if the aperture is rectangle then add a rectangular shape having as parameters the