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