|
|
@@ -1308,84 +1308,87 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
|
|
for geo_elem in self.apertures['0']['geometry']:
|
|
|
if 'solid' in geo_elem:
|
|
|
geo = geo_elem['solid']
|
|
|
- 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
|
|
|
- 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)
|
|
|
- for coord in geo_coords[1:]:
|
|
|
+ if not geo.is_empty:
|
|
|
+ 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
|
|
|
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,
|
|
|
+ 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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
+ 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)
|
|
|
- gerber_code += 'D02*\n'
|
|
|
- gerber_code += 'G37*\n'
|
|
|
-
|
|
|
- clear_list = list(geo.interiors)
|
|
|
- if clear_list:
|
|
|
- gerber_code += '%LPC*%\n'
|
|
|
- for clear_geo in clear_list:
|
|
|
- gerber_code += 'G36*\n'
|
|
|
- geo_coords = list(clear_geo.coords)
|
|
|
-
|
|
|
- # first command is a move with pen-up D02 at the beginning of the geo
|
|
|
+ for coord in geo_coords[1:]:
|
|
|
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,
|
|
|
+ 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(geo_coords[0][0], geo_coords[0][1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
|
|
+ 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)
|
|
|
- for coord in geo_coords[1:]:
|
|
|
+ gerber_code += 'D02*\n'
|
|
|
+ gerber_code += 'G37*\n'
|
|
|
+
|
|
|
+ clear_list = list(geo.interiors)
|
|
|
+ if clear_list:
|
|
|
+ gerber_code += '%LPC*%\n'
|
|
|
+ for clear_geo in clear_list:
|
|
|
+ gerber_code += 'G36*\n'
|
|
|
+ geo_coords = list(clear_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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
+ 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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
+ 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)
|
|
|
- gerber_code += 'D02*\n'
|
|
|
- gerber_code += 'G37*\n'
|
|
|
- gerber_code += '%LPD*%\n'
|
|
|
+ for coord in geo_coords[1:]:
|
|
|
+ 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)
|
|
|
+ gerber_code += 'D02*\n'
|
|
|
+ gerber_code += 'G37*\n'
|
|
|
+ gerber_code += '%LPD*%\n'
|
|
|
if 'clear' in geo_elem:
|
|
|
geo = geo_elem['clear']
|
|
|
-
|
|
|
- gerber_code += '%LPC*%\n'
|
|
|
- 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
|
|
|
- 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)
|
|
|
- for coord in geo_coords[1:]:
|
|
|
+ if not geo.is_empty:
|
|
|
+ gerber_code += '%LPC*%\n'
|
|
|
+ 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
|
|
|
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,
|
|
|
+ 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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
+ 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)
|
|
|
- gerber_code += 'D02*\n'
|
|
|
- gerber_code += 'G37*\n'
|
|
|
- gerber_code += '%LPD*%\n'
|
|
|
+ for coord in geo_coords[1:]:
|
|
|
+ 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)
|
|
|
+ gerber_code += 'D02*\n'
|
|
|
+ gerber_code += 'G37*\n'
|
|
|
+ gerber_code += '%LPD*%\n'
|
|
|
|
|
|
for apid in self.apertures:
|
|
|
if apid == '0':
|
|
|
@@ -1396,75 +1399,78 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
|
|
for geo_elem in self.apertures[apid]['geometry']:
|
|
|
if 'follow' in geo_elem:
|
|
|
geo = geo_elem['follow']
|
|
|
- if geo.is_empty:
|
|
|
- continue
|
|
|
-
|
|
|
- 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)
|
|
|
+ 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:
|
|
|
- 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)
|
|
|
- for coord in geo_coords[1:]:
|
|
|
+ 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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
+ 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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
+ 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)
|
|
|
- # gerber_code += "D02*\n"
|
|
|
+ for coord in geo_coords[1:]:
|
|
|
+ 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)
|
|
|
+ # gerber_code += "D02*\n"
|
|
|
|
|
|
if 'clear' in geo_elem:
|
|
|
gerber_code += '%LPC*%\n'
|
|
|
|
|
|
geo = geo_elem['clear']
|
|
|
- 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)
|
|
|
+ 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:
|
|
|
- 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)
|
|
|
- for coord in geo_coords[1:]:
|
|
|
+ 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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
+ 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(coord[0], coord[1], factor)
|
|
|
- gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
|
|
- yform=y_formatted)
|
|
|
- # gerber_code += "D02*\n"
|
|
|
- gerber_code += '%LPD*%\n'
|
|
|
+ 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)
|
|
|
+ for coord in geo_coords[1:]:
|
|
|
+ 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)
|
|
|
+ # gerber_code += "D02*\n"
|
|
|
+ gerber_code += '%LPD*%\n'
|
|
|
|
|
|
except Exception as e:
|
|
|
log.debug("FlatCAMObj.FlatCAMGerber.export_gerber() --> %s" % str(e))
|