maker-panel

Crates.io Docs License

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 (using maker-panel expressions):

go wrap (column center { [12] R<7.5>(h) [ 9] R<7.5>(h) [12] R<7.5>(h) }) with { left => C<11.25>(h5), right => C<11.25>(h5), }

Makes this:

Example 2

and this:

go wrap ( column center { [12] R<7.5>(h) [11] R<7.5>(h) [12] R<7.5>(h) } ) with { top-0.5 => C<2>, top+0.5 => C<2>, bottom-0.5 => C<2>, bottom+0.5 => C<2>, }

generated with

shell cargo run -- --hull -f examples/ex3.spec png --size z:8 examples/ex3.png

makes this:

Example 3

and this (in literal rust):

rust let mut panel = Panel::new(); // panel.convex_hull(true); // panel.push(Rect::with_center([0.0, -2.5].into(), 5., 5.)); 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:

Example 1

License

MIT License. Raster font is from http://uzebox.org/, itself licensed under CC BY-SA 3.0.