Exemple #1
0
    def render_devel_view(self, output_filename=None,
                          quick=False, nox=False):
        output_filename = '{0}.devel.png'.format(output_filename)
        ctx = GerberCairoContext()

        ctx.color = theme.COLORS['fr-4']
        ctx.alpha = 1.0
        outline = read(self.layers.outline)
        outline.render(ctx)

        ctx.color = self.copper_color
        bottompaste = read(self.layers.bottompaste)
        bottompaste.render(ctx)

        ctx.alpha = 0.9
        ctx.color = self.silk_color
        bottomsilk = read(self.layers.bottomsilk)
        bottomsilk.render(ctx)

        num_copper_layers = len(self.layers.internal)
        if self.layers.top is not None:
            num_copper_layers += 1
        if self.layers.bottom is not None:
            num_copper_layers += 1

        ctx.color = self.layer_colors[num_copper_layers - 1]
        bottom = read(self.layers.bottom)
        bottom.render(ctx)

        ctx.alpha = 0.5
        for idx, l in enumerate(self.layers.internal):
            layer = read(l)
            ctx.color = self.layer_colors[num_copper_layers - 2 - idx]
            layer.render(ctx)

        ctx.alpha = 0.9
        ctx.color = self.layer_colors[0]
        top = read(self.layers.top)
        top.render(ctx)

        ctx.color = self.silk_color
        topsilk = read(self.layers.topsilk)
        topsilk.render(ctx)

        ctx.color = self.copper_color
        toppaste = read(self.layers.toppaste)
        toppaste.render(ctx)

        ctx.color = theme.COLORS['black']
        ctx.alpha = 1.0
        drill = read(self.layers.drill)
        drill.render(ctx)

        ctx.dump(output_filename)
Exemple #2
0
    def render_devel_view(self, output_filename=None, quick=False, nox=False):
        output_filename = '{0}.devel.png'.format(output_filename)
        ctx = GerberCairoContext()

        ctx.color = theme.COLORS['fr-4']
        ctx.alpha = 1.0
        outline = read(self.layers.outline)
        outline.render(ctx)

        ctx.color = self.copper_color
        bottompaste = read(self.layers.bottompaste)
        bottompaste.render(ctx)

        ctx.alpha = 0.9
        ctx.color = self.silk_color
        bottomsilk = read(self.layers.bottomsilk)
        bottomsilk.render(ctx)

        num_copper_layers = len(self.layers.internal)
        if self.layers.top is not None:
            num_copper_layers += 1
        if self.layers.bottom is not None:
            num_copper_layers += 1

        ctx.color = self.layer_colors[num_copper_layers - 1]
        bottom = read(self.layers.bottom)
        bottom.render(ctx)

        ctx.alpha = 0.5
        for idx, l in enumerate(self.layers.internal):
            layer = read(l)
            ctx.color = self.layer_colors[num_copper_layers - 2 - idx]
            layer.render(ctx)

        ctx.alpha = 0.9
        ctx.color = self.layer_colors[0]
        top = read(self.layers.top)
        top.render(ctx)

        ctx.color = self.silk_color
        topsilk = read(self.layers.topsilk)
        topsilk.render(ctx)

        ctx.color = self.copper_color
        toppaste = read(self.layers.toppaste)
        toppaste.render(ctx)

        ctx.color = theme.COLORS['black']
        ctx.alpha = 1.0
        drill = read(self.layers.drill)
        drill.render(ctx)

        ctx.dump(output_filename)
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 gerber.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, verbose=True, **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,
            mirror=
            True,  # for some reason this, but not the other bottom layer files, needs to be flipped horizontally
        ))
    # Drills
    render("*.drl")

    save("pcb-back")
Exemple #4
0
    def render_top_view(self, output_filename=None,
                        quick=False, nox=False):
        output_filename = '{0}.top.png'.format(output_filename)
        ctx = GerberCairoContext()

        if self.outline_color is not None:
            ctx.color = self.outline_color
        if self.outline_alpha is not None:
            ctx.alpha = self.outline_alpha
        outline = read(self.layers.outline)
        outline.render(ctx)

        if self.copper_color is not None:
            ctx.color = self.copper_color
        if self.copper_alpha is not None:
            ctx.alpha = self.copper_alpha
        copper = read(self.layers.top)
        copper.render(ctx)

        if self.mask_color is not None:
            ctx.color = self.mask_color
        if self.mask_alpha is not None:
            ctx.alpha = self.mask_alpha
        mask = read(self.layers.topmask)
        mask.render(ctx, invert=True)

        if self.silk_color is not None:
            ctx.color = self.silk_color
        if self.silk_alpha is not None:
            ctx.alpha = self.silk_alpha
        silk = read(self.layers.topsilk)
        silk.render(ctx)

        if self.drill_color is not None:
            ctx.color = self.drill_color
        if self.drill_alpha is not None:
            ctx.alpha = self.drill_alpha
        drill = read(self.layers.drill)
        drill.render(ctx)

        ctx.dump(output_filename)
Exemple #5
0
    def render_top_view(self, output_filename=None, quick=False, nox=False):
        output_filename = '{0}.top.png'.format(output_filename)
        ctx = GerberCairoContext()

        if self.outline_color is not None:
            ctx.color = self.outline_color
        if self.outline_alpha is not None:
            ctx.alpha = self.outline_alpha
        outline = read(self.layers.outline)
        outline.render(ctx)

        if self.copper_color is not None:
            ctx.color = self.copper_color
        if self.copper_alpha is not None:
            ctx.alpha = self.copper_alpha
        copper = read(self.layers.top)
        copper.render(ctx)

        if self.mask_color is not None:
            ctx.color = self.mask_color
        if self.mask_alpha is not None:
            ctx.alpha = self.mask_alpha
        mask = read(self.layers.topmask)
        mask.render(ctx, invert=True)

        if self.silk_color is not None:
            ctx.color = self.silk_color
        if self.silk_alpha is not None:
            ctx.alpha = self.silk_alpha
        silk = read(self.layers.topsilk)
        silk.render(ctx)

        if self.drill_color is not None:
            ctx.color = self.drill_color
        if self.drill_alpha is not None:
            ctx.alpha = self.drill_alpha
        drill = read(self.layers.drill)
        drill.render(ctx)

        ctx.dump(output_filename)