- modified the Gerber export method to take care of the situation where the exported Gerber file is a SVG/DXF file imported as Gerber

This commit is contained in:
Marius Stanciu 2020-07-02 21:35:34 +03:00
parent 4bce56308c
commit 27216c52e2
2 changed files with 50 additions and 1 deletions

View File

@ -12,6 +12,7 @@ CHANGELOG for FlatCAM beta
- trying to optimize the resulting geometry in DXF import (and in SVG import) by merging contiguous lines; reduced the lines to about one third of the original
- fixed importing DXF file as Gerber method such that now the resulting Gerber object is correctly created having the geometry attributes like self.apertures and self.follow_geometry
- added Turkish translation - courtesy of Mehmet Kaya
- modified the Gerber export method to take care of the situation where the exported Gerber file is a SVG/DXF file imported as Gerber
30.06.2020

View File

@ -1228,7 +1228,8 @@ class GerberObject(FlatCAMObj, Gerber):
for geo_elem in self.apertures['0']['geometry']:
if 'solid' in geo_elem:
geo = geo_elem['solid']
if not geo.is_empty:
if not geo.is_empty and not isinstance(geo, LineString) and \
not isinstance(geo, MultiLineString) and not isinstance(geo, Point):
gerber_code += 'G36*\n'
geo_coords = list(geo.exterior.coords)
# first command is a move with pen-up D02 at the beginning of the geo
@ -1287,6 +1288,53 @@ class GerberObject(FlatCAMObj, Gerber):
gerber_code += 'D02*\n'
gerber_code += 'G37*\n'
gerber_code += '%LPD*%\n'
elif isinstance(geo, LineString) or isinstance(geo, MultiLineString) or \
isinstance(geo, Point):
try:
if not geo.is_empty:
if isinstance(geo, Point):
if g_zeros == 'T':
x_formatted, y_formatted = tz_format(geo.x, geo.y, factor)
gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted,
yform=y_formatted)
else:
x_formatted, y_formatted = lz_format(geo.x, geo.y, factor)
gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted,
yform=y_formatted)
else:
geo_coords = list(geo.coords)
# first command is a move with pen-up D02 at the beginning of the geo
if g_zeros == 'T':
x_formatted, y_formatted = tz_format(
geo_coords[0][0], geo_coords[0][1], factor)
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
yform=y_formatted)
else:
x_formatted, y_formatted = lz_format(
geo_coords[0][0], geo_coords[0][1], factor)
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
yform=y_formatted)
prev_coord = geo_coords[0]
for coord in geo_coords[1:]:
if coord != prev_coord:
if g_zeros == 'T':
x_formatted, y_formatted = tz_format(coord[0], coord[1],
factor)
gerber_code += "X{xform}Y{yform}D01*\n".format(
xform=x_formatted,
yform=y_formatted)
else:
x_formatted, y_formatted = lz_format(coord[0], coord[1],
factor)
gerber_code += "X{xform}Y{yform}D01*\n".format(
xform=x_formatted,
yform=y_formatted)
prev_coord = coord
# gerber_code += "D02*\n"
except Exception as e:
log.debug("FlatCAMObj.GerberObject.export_gerber() 'follow' --> %s" % str(e))
if 'clear' in geo_elem:
geo = geo_elem['clear']
if not geo.is_empty: