Adding corner chamfers to RectLine
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:
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:
Thanks
Edited by Joel Guittet