maker-panel
Eventually you'll be able to specify very basic geometry (ie: screw holes repeating every x mm, striding every y mm), and have usable PCBs generated.
Examples
This:
let mut panel = Panel::new();
panel.push(repeating::Tile::new(
Rect::with_inner(ScrewHole::default(), [0., 0.].into(), [5., 5.].into()),
Direction::Right,
3,
));
panel.push(repeating::Tile::new(
Rect::with_inner(ScrewHole::default(), [-2.5, 5.].into(), [2.5, 10.].into()),
Direction::Right,
4,
));
panel.push(repeating::Tile::new(
Rect::with_inner(ScrewHole::default(), [0., 10.].into(), [5., 15.].into()),
Direction::Right,
3,
));
panel.push(Circle::new([0., 7.5].into(), 7.5));
panel.push(Circle::new([15., 7.5].into(), 7.5));
Makes this:
And this:
let mut panel = Panel::new();
panel.push(AtPos::x_ends(
Column::align_center(vec![
repeating::Tile::new(
Rect::with_inner(ScrewHole::default(), [0., 0.].into(), [5., 5.].into()),
Direction::Right,
8,
),
repeating::Tile::new(
Rect::with_inner(ScrewHole::default(), [0., 0.].into(), [5., 5.].into()),
Direction::Right,
5,
),
repeating::Tile::new(
Rect::with_inner(ScrewHole::default(), [0., 0.].into(), [5., 5.].into()),
Direction::Right,
8,
),
]),
Some(Circle::wrap_with_radius(ScrewHole::with_diameter(5.), 7.5)),
Some(Circle::wrap_with_radius(ScrewHole::with_diameter(5.), 7.5)),
));
Makes this: