def print_zones(f, zone_paths): for polygons in zone_paths: polygons = svgpath.rescale_polygon_list(polygons, scale, conv=roundint) polygons = simplefy.weakly_simplefy(polygons) for p in polygons: print_zone(f, p)
def print_module(f, name, fill_paths, segment_paths, pads, vias, holes, slots): print ("""(module """+str_escape(name)+""" (layer F.Cu) (tedit 0) (fp_text reference "" (at 0 0) (layer F.SilkS) (effects (font (thickness 0.15))) ) (fp_text value "" (at 0 0) (layer F.SilkS) (effects (font (thickness 0.15))) )""", file=f) for layer, polygons in fill_paths: print("Layer: ", layer, file=sys.stderr) polygons = svgpath.rescale_polygon_list(polygons, scale, conv=roundint) polygons = simplefy.weakly_simplefy(polygons) for p in polygons: if p[0] != p[-1]: p = p + [p[0]] print("warning polygon not closed ", file=sys.stderr) if len(p) > 3: print_polygon(f, p, mapping[layer]) print("polygon ", p, file=sys.stderr) else: print("polygon to small, ingoring, ", p, file=sys.stderr) for layer, polygons, width in segment_paths: polygons = svgpath.rescale_polygon_list(polygons, scale, conv=roundint) for p in polygons: print_segments(f, p, mapping[layer], width*scale) for x, y, size, drill in pads: print_pad(f, svgpath.rescale_point((x,y), scale, conv=roundint), scale*size, scale*drill) for x, y, size, drill in vias: print_via(f, svgpath.rescale_point((x,y), scale, conv=roundint), scale*size, scale*drill) for x, y, drill in holes: print_hole(f, svgpath.rescale_point((x,y), scale, conv=roundint), scale*drill) for polygons, size, drill in slots: polygons = svgpath.rescale_polygon_list(polygons, scale, conv=roundint) for p in polygons: for a, b in zip(p[:-1], p[1:]): print_slot(f, a, b, size*scale, drill*scale) print(")", file=f)
def print_module(name, fill_paths, segment_paths, pads): print """PCBNEW-LibModule-V1 $INDEX """ print name print """$EndINDEX $MODULE """ + name + """ Po 0 0 0 15 00000000 00000000 ~~ Li """ + name for layer, filename in fill_paths: print >> sys.stderr, filename with open(filename) as f: polygons = svgpath.path_to_polygons(f.read(1000000)) polygons = svgpath.rescale_polygon_list(polygons, svgpath.scale, roundint) polygons = weakly_simplefy(polygons) for p in polygons: print_polygon(p, layer) for layer, filename, width in segment_paths: with open(filename) as f: polygons = svgpath.path_to_polygons(f.read(1000000)) polygons = svgpath.rescale_polygon_list(polygons, svgpath.scale, roundint) for p in polygons: print_segments(p, layer, width * svgpath.scale) for topleft, w, h, pitch, size in pads: pads = pad_grid(topleft, w, h, pitch) for pad in pads: print_pad(svgpath.rescale_point(pad, svgpath.scale, roundint), size) print """$EndMODULE """ + name + """
def print_zones_new(zone_paths): for layer, label, filename in zone_paths: with open(filename) as f: polygons = svgpath.path_to_polygons(f.read(1000000)) polygons = svgpath.rescale_polygon_list(polygons, svgpath.new_scale, roundint) polygons = weakly_simplefy(polygons) for p in polygons: print_zone_new(p)
def print_zones(zone_paths): for layer, label, filename in zone_paths: print """$CZONE_OUTLINE ZInfo 525A79DA 1 """ + '"' + label + '"' + """ ZLayer """ + layer + """ ZAux 4 E ZClearance 200 T ZMinThickness 100 ZOptions 0 16 F 200 200 ZSmoothing 0 0""" with open(filename) as f: polygons = svgpath.path_to_polygons(f.read(1000000)) polygons = svgpath.rescale_polygon_list(polygons, svgpath.scale, roundint) polygons = weakly_simplefy(polygons) for p in polygons: print_zone(p, layer, label) print """$endCZONE_OUTLINE"""
def print_module(f, name, fill_paths, segment_paths, pads, vias, holes, slots): layers = ["front_mask", "front_silk", "front_paste", "front_copper", "back_mask", "back_silk", "back_copper", "back_paste", "edges"] for p in (fill_paths, segment_paths): for x in p: assert x[0] in layers for layer in layers: print("module {}_{}()".format(name, layer), file=f) print("{", file=f) print("\tunion()", file=f) print("\t{", file=f) for polygons in (p for l,p in fill_paths if layer == l): polygons = svgpath.rescale_polygon_list(polygons, scale, flipY=True, conv=roundint) polygons = simplefy.separate_cutouts(polygons) for p in polygons: print (layer,file = sys.stderr) print (p,file = sys.stderr) print_polygon(f, p, layer) print("\t};", file=f) print("};", file=f) # for polygons, width in (p,w for l,p,w segment_paths if layer == l): # print("layer_"+layer+"_segments = [\n\t[", file=f) # polygons = svgpath.rescale_polygon_list(polygons, scale, flipY=True, conv=roundint) # first=True # for p in polygons: # if not first: # print("\t],[", file=f) # first=False # print_segments(f, p, mapping[layer], width*scale) # print("\t]", file=f) # print("];", file=f) # print(file=f) print("module {}_holes()".format(name, layer), file=f) print("{", file=f) print("\tunion()", file=f) print("\t{", file=f) for x, y, size, drill in pads: print("// pads", file=f) print_circle(f, svgpath.rescale_point((x,y), scale, flipY=True, conv=roundint), scale*drill) for x, y, size, drill in vias: print("// vias", file=f) print_circle(f, svgpath.rescale_point((x,y), scale, flipY=True, conv=roundint), scale*drill) for x, y, drill in holes: print("// holes", file=f) print_circle(f, svgpath.rescale_point((x,y), scale, flipY=True, conv=roundint), scale*drill) print("\t};", file=f) print("};", file=f) print("module {}_rings()".format(name, layer), file=f) print("{", file=f) print("\tunion()", file=f) print("\t{", file=f) for x, y, size, drill in pads: print("// pads", file=f) print_circle(f, svgpath.rescale_point((x,y), scale, flipY=True, conv=roundint), scale*size) for x, y, size, drill in vias: print("// vias", file=f) print_circle(f, svgpath.rescale_point((x,y), scale, flipY=True, conv=roundint), scale*size) print("\t};", file=f) print("};", file=f) for polygons, size, drill in slots: polygons = svgpath.rescale_polygon_list(polygons, scale, flipY=True, conv=roundint) for p in polygons: for a, b in zip(p[:-1], p[1:]): print_slot(f, a, b, size*scale, drill*scale)