- Gerber parser - a single move with pen up D2 followed by a pen down D1 at the same location is now treated as a Flash; fixed issue #441

This commit is contained in:
Marius Stanciu 2020-07-27 03:25:38 +03:00
parent a24b09d8ad
commit 445b4300f5
3 changed files with 43 additions and 0 deletions

View File

@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta
=================================================
27.06.2020
- Gerber parser - a single move with pen up D2 followed by a pen down D1 at the same location is now treated as a Flash; fixed issue #441
25.07.2020
- Tools Tab is hidden when entering into a Editor and showed on exit (this needs to be remade such that the toolbars state should be restored to whatever it was before entering in the Editor)

View File

@ -39,6 +39,10 @@ class AppGCodeEditor(QtCore.QObject):
self.gcode_obj = None
self.code_edited = ''
# store the status of the editor so the Delete at object level will not work until the edit is finished
self.editor_active = False
log.debug("Initialization of the GCode Editor is finished ...")
def set_ui(self):
"""

View File

@ -950,6 +950,41 @@ class Gerber(Geometry):
# only add the point if it's a new one otherwise skip it (harder to process)
if path[-1] != [current_x, current_y]:
path.append([current_x, current_y])
elif len(path) == 1:
# it's a flash that is done by moving with pen up D2 and then just a pen down D1
# 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
# 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 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