Siphon/examples/lib_lookup.rs

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}");
}