Skip to content

Adding corner chamfers to RectLine

KiCad Bot requested to merge test_chamfer_rectangle into master

Created by: ghost

Hi @pointhi

I would like to propose an addition to RectLine() for you to consider. The change enables one or more corners of the rectangle to be chamfered, with each corner potentially having different chamfer sizes.

As well as changes to RectLine.py, this PR adds an example usage to the existing sample program.

This image shows output from my separate test program:

image

import sys
import os
sys.path.append(os.path.join(sys.path[0], "../.."))  # enable package import from parent directory


from KicadModTree import *

if __name__ == '__main__':

    footprint_name = "example_footprint"

    # init kicad footprint
    kicad_mod = Footprint(footprint_name)

    # set up list of chamfers for nested rectangles
    test_chamfers = [{'corner': 'topleft', 'size': 1.0}, 
                     {'corner': 'bottomleft', 'size': 0.5},
                     {'corner': 'bottomright', 'size': 2.5}]

    # rectangle without chamfers
    kicad_mod.append(RectLine(start=[-2.5, -1], end=[-0.5, 1], layer='F.Fab', width=0.1))

    # same rectangle chamfered all corners (same size)
    kicad_mod.append(RectLine(start=[0.5,-1], end=[2.5, 1], layer='F.Fab', width=0.1, chamfers=[{'corner': 'all', 'size': 0.5}]))

    # different size chamfer on each corner 
    kicad_mod.append(RectLine(start=[-4,-2], end=[5,2], layer='F.Fab', width=0.1, chamfers=test_chamfers))

    # nested polygon (same X and Y offsets)
    kicad_mod.append(RectLine(start=[-4,-2], end=[5,2], layer='F.SilkS', width=0.12, offset=(0.2, 0.2), chamfers=test_chamfers))

    # nested polygon (different X and Y offsets)
    kicad_mod.append(RectLine(start=[-4,-2], end=[5,2], layer='F.SilkS', width=0.12, offset=(0.4, 0.6), chamfers=test_chamfers))

    # print render tree
    print(kicad_mod.getRenderTree())
    # print(kicad_mod.getCompleteRenderTree())

    # write file
    file_handler = KicadFileHandler(kicad_mod)
    file_handler.writeFile('example_footprint.kicad_mod')

The output from the existing sample program now looks like this:

image

Thanks

Edited by Joel Guittet

Merge request reports