def generate_previews(fab_output_path, preview_output_path):
    def read(pattern):
        files = glob(os.path.join(fab_output_path, pattern))
        if not files:
            print "WARNING: Nothing found matching %s" % pattern
            return None
        return load_layer(files[0])

    def save(name):
        path = os.path.join(preview_output_path, "%s.png" % name)
        print "Saving preview to %s" % path
        ctx.dump(path)

    def render(pattern, **kw):
        layer = read(pattern)
        if layer is None:
            print "Not rendering %s" % pattern
            return
        ctx.render_layer(layer, **kw)

    # Rendering context
    ctx = GerberCairoContext(scale=10)
    ctx.color = (80. / 255, 80 / 255., 154 / 255.)
    ctx.drill_color = ctx.color

    # Edges
    render("*.gm1")
    # Copper
    render("*.gtl")
    # Mask
    render("*.gts")
    # Silk
    render("*.gto",
           settings=RenderSettings(color=theme.COLORS['white'], alpha=0.85))
    # Drills
    render("*.drl")

    save("pcb-front")
    ctx.clear()

    # Edges
    render("*.gm1")
    # Copper
    render("*.gbl")
    # Mask
    render("*.gbs")
    # Silk
    render("*.gbo",
           settings=RenderSettings(color=theme.COLORS['white'], alpha=0.85))
    # Drills
    render("*.drl")

    save("pcb-back")
Exemple #2
0
# Open the gerber files
copper = read(os.path.join(GERBER_FOLDER, 'copper.GTL'))
mask = read(os.path.join(GERBER_FOLDER, 'soldermask.GTS'))
silk = read(os.path.join(GERBER_FOLDER, 'silkscreen.GTO'))
drill = read(os.path.join(GERBER_FOLDER, 'ncdrill.DRD'))

# Create a new drawing context
ctx = GerberCairoContext()

# Draw the copper layer
copper.render(ctx)

# Set opacity and color for soldermask layer
ctx.alpha = 0.6
ctx.color = (0.2, 0.2, 0.75)

# Draw the soldermask layer
mask.render(ctx)

# Set opacity and color for silkscreen layer
ctx.alpha = 0.85
ctx.color = (1, 1, 1)

# Draw the silkscreen layer
silk.render(ctx)

# Set opacity for drill layer
ctx.alpha = 1.
drill.render(ctx)
Exemple #3
0
# Open the gerber files
copper = read(os.path.join(GERBER_FOLDER, 'copper.GTL'))
mask = read(os.path.join(GERBER_FOLDER, 'soldermask.GTS'))
silk = read(os.path.join(GERBER_FOLDER, 'silkscreen.GTO'))
drill = read(os.path.join(GERBER_FOLDER, 'ncdrill.DRD'))


# Create a new drawing context
ctx = GerberCairoContext()

# Draw the copper layer
copper.render(ctx)

# Set opacity and color for soldermask layer
ctx.alpha = 0.6
ctx.color = (0.2, 0.2, 0.75)

# Draw the soldermask layer
mask.render(ctx)

# Set opacity and color for silkscreen layer
ctx.alpha = 0.85
ctx.color = (1, 1, 1)

# Draw the silkscreen layer
silk.render(ctx)

# Set opacity for drill layer
ctx.alpha = 1.
drill.render(ctx)
if not os.path.isdir(os.path.join(os.path.dirname(__file__), 'outputs')):
    os.mkdir(os.path.join(os.path.dirname(__file__), 'outputs'))

for infile in listdir(GERBER_FOLDER):
    if infile.startswith('test'):
        try:
            outfile = os.path.splitext(infile)[0] + '.png'
            if infile.endswith('gbx'):
                layer = gerber_read(os.path.join(GERBER_FOLDER, infile))
                print("Loaded Gerber file: {}".format(infile))
            elif infile.endswith('exc'):
                layer = excellon_read(os.path.join(GERBER_FOLDER, infile))
                print("Loaded Excellon file: {}".format(infile))
            else:
                continue

            # Create a new drawing context
            ctx = GerberCairoContext(1200)
            ctx.color = (80./255, 80/255., 154/255.)
            ctx.drill_color = ctx.color

            # Draw the layer, and specify the rendering settings to use
            layer.render(ctx)

            # Write output to png file
            print("Writing output to: {}".format(outfile))
            ctx.dump(os.path.join(os.path.dirname(__file__), 'outputs', outfile))
        except Exception as exc:
            import traceback
            traceback.print_exc()
Exemple #5
0
GERBER_FOLDER = os.path.abspath(
    os.path.join(os.path.dirname(__file__), 'gerbers'))

# Open the gerber files
copper = read(os.path.join(GERBER_FOLDER, 'copper.GTL'))
mask = read(os.path.join(GERBER_FOLDER, 'soldermask.GTS'))
silk = read(os.path.join(GERBER_FOLDER, 'silkscreen.GTO'))
drill = read(os.path.join(GERBER_FOLDER, 'ncdrill.DRD'))

# Create a new drawing context
ctx = GerberCairoContext()

# Set opacity and color for copper layer
ctx.alpha = 1.0
ctx.color = theme.COLORS['hasl copper']

# Draw the copper layer
copper.render(ctx)

# Set opacity and color for soldermask layer
ctx.alpha = 0.75
ctx.color = theme.COLORS['green soldermask']

# Draw the soldermask layer
mask.render(ctx, invert=True)

# Set opacity and color for silkscreen layer
ctx.alpha = 1.0
ctx.color = theme.COLORS['white']
Exemple #6
0
import gerber
from gerber.render import GerberCairoContext

# Read gerber and Excellon files
dim = gerber.read('tty.dim')

# Rendering context
ctx = GerberCairoContext()

# Create SVG image
ctx.color = (0, 1, 0)
dim.render(ctx, "tty_dim.svg")
print(ctx)

ctx.dump("foo.svg")
Exemple #7
0
GERBER_FOLDER = os.path.abspath(os.path.join(os.path.dirname(__file__), 'gerbers'))


# Open the gerber files
copper = read(os.path.join(GERBER_FOLDER, 'copper.GTL'))
mask = read(os.path.join(GERBER_FOLDER, 'soldermask.GTS'))
silk = read(os.path.join(GERBER_FOLDER, 'silkscreen.GTO'))
drill = read(os.path.join(GERBER_FOLDER, 'ncdrill.DRD'))


# Create a new drawing context
ctx = GerberCairoContext()

# Set opacity and color for copper layer
ctx.alpha = 1.0
ctx.color = theme.COLORS['hasl copper']

# Draw the copper layer
copper.render(ctx)

# Set opacity and color for soldermask layer
ctx.alpha = 0.75
ctx.color = theme.COLORS['green soldermask']

# Draw the soldermask layer
mask.render(ctx, invert=True)

# Set opacity and color for silkscreen layer
ctx.alpha = 1.0
ctx.color = theme.COLORS['white']