Siphon/examples/demo.rs

49 lines
2.4 KiB
Rust

use siphon::{render_to_svg, RenderOptions};
const DEMO: &str = r#"(kicad_pcb (version 20260206) (generator "pcbnew")
(layers (0 "F.Cu" signal) (31 "B.Cu" signal))
(segment (start 10 10) (end 40 10) (width 0.25) (layer "F.Cu") (uuid "1"))
(segment (start 40 10) (end 40 30) (width 0.25) (layer "F.Cu") (uuid "2"))
(segment (start 40 30) (end 10 30) (width 0.25) (layer "B.Cu") (uuid "3"))
(arc (start 10 30) (mid 5 20) (end 10 10) (width 0.25) (layer "F.Cu") (uuid "4"))
(via (at 40 20) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (uuid "5"))
(gr_rect (start 2 2) (end 50 35) (stroke (width 0.1)) (fill none) (layer "Edge.Cuts") (uuid "6"))
(footprint "Resistor_SMD:R_0603_1608Metric"
(layer "F.Cu")
(at 25 18 0)
(uuid "fp1")
(fp_text reference "R1" (at 0 -1.3 0) (layer "F.Silkscreen")
(effects (font (size 0.8 0.8) (thickness 0.12))))
(fp_text value "10k" (at 0 1.3 0) (layer "F.Fab")
(effects (font (size 0.6 0.6) (thickness 0.1))))
(fp_line (start -0.8 -0.5) (end 0.8 -0.5) (stroke (width 0.1)) (layer "F.Silkscreen"))
(fp_line (start -0.8 0.5) (end 0.8 0.5) (stroke (width 0.1)) (layer "F.Silkscreen"))
(fp_rect (start -1.4 -0.7) (end 1.4 0.7) (stroke (width 0.05)) (fill none) (layer "F.Courtyard"))
(pad "1" smd roundrect (at -0.8 0 0) (size 0.9 0.9)
(layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25))
(pad "2" smd roundrect (at 0.8 0 0) (size 0.9 0.9)
(layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25))
)
(gr_text "BOARD TITLE"
(at 26 4 0)
(layer "F.Silkscreen")
(effects (font (size 1.5 1.5) (thickness 0.2)))
(uuid "title"))
(footprint "Connector:PinHeader_1x02"
(layer "F.Cu")
(at 15 20 90)
(uuid "fp2")
(fp_circle (center 0 0) (end 0.5 0) (stroke (width 0.1)) (fill none) (layer "F.Silkscreen"))
(pad "1" thru_hole circle (at 0 0 0) (size 1.7 1.7) (drill 1.0)
(layers "F.Cu" "B.Cu" "F.Mask" "B.Mask"))
(pad "2" thru_hole rect (at 0 2.54 0) (size 1.7 1.7) (drill 1.0)
(layers "F.Cu" "B.Cu" "F.Mask" "B.Mask"))
)
)"#;
fn main() {
let svg = render_to_svg(DEMO, &RenderOptions::default()).expect("render");
std::fs::write("/tmp/siphon_demo.svg", &svg).expect("write");
println!("wrote /tmp/siphon_demo.svg ({} bytes)", svg.len());
}