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