- fixed an error in Gerber parser, when it encounter a pen-up followed by pen-down move while in a region

This commit is contained in:
Marius Stanciu 2020-11-03 17:36:10 +02:00 committed by Marius
parent 13e4d7bad7
commit 77c66862c5
2 changed files with 33 additions and 27 deletions

View File

@ -19,6 +19,7 @@ CHANGELOG for FlatCAM beta
- updated Turkish translation (by Mehmet Kaya) - 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 - 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 - 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 2.11.2020

View File

@ -953,36 +953,41 @@ class Gerber(Geometry):
# Reset path starting point # Reset path starting point
path = [[current_x, current_y]] path = [[current_x, current_y]]
# --- BUFFERED --- # treat the case when there is a flash inside a Gerber Region when the current_aperture
# Draw the flash # is None
# this treats the case when we are storing geometry as paths if current_aperture is None:
geo_dict = {} pass
geo_flash = Point([current_x, current_y]) else:
follow_buffer.append(geo_flash) # --- BUFFERED ---
geo_dict['follow'] = geo_flash # 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 # this treats the case when we are storing geometry as solids
flash = self.create_flash_geometry( flash = self.create_flash_geometry(
Point([current_x, current_y]), Point([current_x, current_y]),
self.apertures[current_aperture], self.apertures[current_aperture],
self.steps_per_circle self.steps_per_circle
) )
if not flash.is_empty: if not flash.is_empty:
if self.app.defaults['gerber_simplification']: if self.app.defaults['gerber_simplification']:
poly_buffer.append(flash.simplify(s_tol)) poly_buffer.append(flash.simplify(s_tol))
else: else:
poly_buffer.append(flash) poly_buffer.append(flash)
if self.is_lpc is True: if self.is_lpc is True:
geo_dict['clear'] = flash geo_dict['clear'] = flash
else: else:
geo_dict['solid'] = flash geo_dict['solid'] = flash
if current_aperture not in self.apertures: if current_aperture not in self.apertures:
self.apertures[current_aperture] = {} self.apertures[current_aperture] = {}
if 'geometry' not in self.apertures[current_aperture]: if 'geometry' not in self.apertures[current_aperture]:
self.apertures[current_aperture]['geometry'] = [] self.apertures[current_aperture]['geometry'] = []
self.apertures[current_aperture]['geometry'].append(deepcopy(geo_dict)) self.apertures[current_aperture]['geometry'].append(deepcopy(geo_dict))
if making_region is False: if making_region is False:
# if the aperture is rectangle then add a rectangular shape having as parameters the # if the aperture is rectangle then add a rectangular shape having as parameters the