1use std::io::stdout;
4
5use gerber_types::{
6 Aperture, ApertureDefinition, Circle, Command, CoordinateFormat, Coordinates, DCode,
7 ExtendedCode, FileAttribute, FunctionCode, GCode, GenerationSoftware, GerberCode,
8 InterpolationMode, MCode, Operation, Part, Polarity, Unit,
9};
10
11const VERSION: &'static str = env!("CARGO_PKG_VERSION");
12
13fn main() {
14 let cf = CoordinateFormat::new(2, 5);
15 let commands: Vec<Command> = vec![
16 FunctionCode::GCode(GCode::Comment("Ucamco ex. 1: Two square boxes".to_string())).into(),
17 ExtendedCode::CoordinateFormat(cf).into(),
18 ExtendedCode::Unit(Unit::Millimeters).into(),
19 ExtendedCode::FileAttribute(FileAttribute::GenerationSoftware(GenerationSoftware::new(
20 "Rust Gerber",
21 "gerber-types-rs",
22 Some(VERSION),
23 )))
24 .into(),
25 ExtendedCode::FileAttribute(FileAttribute::Part(Part::Other(
26 "Only an example".to_string(),
27 )))
28 .into(),
29 ExtendedCode::LoadPolarity(Polarity::Dark).into(),
30 ExtendedCode::ApertureDefinition(ApertureDefinition {
31 code: 10,
32 aperture: Aperture::Circle(Circle {
33 diameter: 0.01,
34 hole_diameter: None,
35 }),
36 })
37 .into(),
38 FunctionCode::DCode(DCode::SelectAperture(10)).into(),
39 FunctionCode::DCode(DCode::Operation(Operation::Move(Coordinates::new(
40 0, 0, cf,
41 ))))
42 .into(),
43 FunctionCode::GCode(GCode::InterpolationMode(InterpolationMode::Linear)).into(),
44 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
47 Coordinates::new(5, 0, cf),
48 None,
49 )))
50 .into(),
51 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
52 Coordinates::at_y(5, cf),
53 None,
54 )))
55 .into(),
56 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
57 Coordinates::at_x(0, cf),
58 None,
59 )))
60 .into(),
61 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
62 Coordinates::at_y(0, cf),
63 None,
64 )))
65 .into(),
66 FunctionCode::DCode(DCode::Operation(Operation::Move(Coordinates::at_x(6, cf)))).into(),
67 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
68 Coordinates::at_x(11, cf),
69 None,
70 )))
71 .into(),
72 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
73 Coordinates::at_y(5, cf),
74 None,
75 )))
76 .into(),
77 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
78 Coordinates::at_x(6, cf),
79 None,
80 )))
81 .into(),
82 FunctionCode::DCode(DCode::Operation(Operation::Interpolate(
83 Coordinates::at_y(0, cf),
84 None,
85 )))
86 .into(),
87 FunctionCode::MCode(MCode::EndOfFile).into(),
88 ];
89 let mut stdout = stdout();
90 commands.serialize(&mut stdout).unwrap();
91}