- 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)
- 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

View File

@ -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