23 lines
1013 B
Rust
23 lines
1013 B
Rust
use siphon::{LibraryResolver, RenderOptions, SvgSink};
|
|
use siphon::geom::BBox;
|
|
use siphon::render::render as render_board;
|
|
|
|
fn main() {
|
|
let resolver = LibraryResolver::from_global().expect("load global fp-lib-table");
|
|
println!("loaded {} library entries", resolver.table.entries.len());
|
|
|
|
let lib_id = std::env::args().nth(1).unwrap_or_else(|| "Resistor_SMD:R_0603_1608Metric".into());
|
|
println!("resolving {lib_id}");
|
|
|
|
let fp = resolver.load_footprint(&lib_id).expect("load footprint");
|
|
println!("footprint with {} primitives, {} pads", fp.primitives.len(), fp.pads.len());
|
|
|
|
let board = siphon::Board { items: vec![siphon::Item::Footprint(fp)] };
|
|
let mut sink = SvgSink::new(BBox::empty());
|
|
let bb = render_board(&board, &mut sink, &RenderOptions::default());
|
|
sink.bounds = bb;
|
|
let out_path = format!("/tmp/siphon_lib_{}.svg", lib_id.replace(':', "_").replace('/', "_"));
|
|
std::fs::write(&out_path, sink.finish()).expect("write");
|
|
println!("wrote {out_path}");
|
|
}
|