2 #include "block/block.hpp"
3 #include "board_hole.hpp"
4 #include "board_package.hpp"
5 #include "board_rules.hpp"
6 #include "clipper/clipper.hpp"
7 #include "common/dimension.hpp"
8 #include "common/hole.hpp"
9 #include "board_junction.hpp"
10 #include "common/layer_provider.hpp"
11 #include "common/polygon.hpp"
12 #include "common/keepout.hpp"
13 #include "common/pdf_export_settings.hpp"
14 #include "gerber_output_settings.hpp"
15 #include "odb_output_settings.hpp"
16 #include "nlohmann/json_fwd.hpp"
19 #include "util/uuid.hpp"
20 #include "util/warning.hpp"
22 #include "connection_line.hpp"
23 #include "step_export_settings.hpp"
24 #include "pnp_export_settings.hpp"
25 #include "airwire.hpp"
26 #include "included_board.hpp"
27 #include "board_panel.hpp"
28 #include "common/picture.hpp"
29 #include "board_decal.hpp"
30 #include "util/file_version.hpp"
31 #include "common/grid_settings.hpp"
32 #include "board_net_tie.hpp"
45 using plane_update_status_cb_t = std::function<void(
const Plane &plane,
const std::string &)>;
50 void propagate_nets();
51 std::map<int, Layer> layers;
53 void delete_dependants();
54 void vacuum_junctions();
58 static Board new_from_file(
const std::string &filename,
Block &block,
IPool &pool);
60 static unsigned int get_app_version();
67 void operator=(
const Board &brd) =
delete;
69 void update_junction_connections();
70 void update_airwires(
bool fast,
const std::set<UUID> &nets);
76 void smash_package_silkscreen_graphics(
BoardPackage *pkg);
82 const std::map<int, Layer> &get_layers()
const override;
83 void set_n_inner_layers(
unsigned int n);
84 unsigned int get_n_inner_layers()
const;
87 plane_update_status_cb_t status_cb =
nullptr,
88 const std::atomic_bool &cancel = std::atomic_bool(
false));
89 void update_planes(plane_update_status_cb_t status_cb =
nullptr,
90 const std::atomic_bool &cancel = std::atomic_bool(
false));
91 std::vector<KeepoutContour> get_keepout_contours()
const;
92 std::pair<Coordi, Coordi> get_bbox()
const;
94 std::map<const BoardPackage *, PnPRow> get_PnP(
const PnPExportSettings &settings)
const;
100 std::map<UUID, Polygon> polygons;
101 std::map<UUID, BoardHole> holes;
102 std::map<UUID, BoardPackage> packages;
103 std::map<UUID, BoardJunction> junctions;
104 std::map<UUID, Track> tracks;
105 std::map<UUID, Via> vias;
106 std::map<UUID, Text> texts;
107 std::map<UUID, Line> lines;
108 std::map<UUID, Arc> arcs;
109 std::map<UUID, Plane> planes;
110 std::map<UUID, Keepout> keepouts;
111 std::map<UUID, Dimension> dimensions;
112 std::map<UUID, ConnectionLine> connection_lines;
113 std::map<UUID, IncludedBoard> included_boards;
114 std::map<UUID, BoardPanel> board_panels;
115 std::map<UUID, Picture> pictures;
116 std::map<UUID, BoardDecal> decals;
117 std::map<UUID, BoardNetTie> net_ties;
119 std::vector<Warning> warnings;
121 enum class OutputFormat { GERBER, ODB };
122 OutputFormat output_format = OutputFormat::GERBER;
130 std::map<UUID, std::list<Airwire>> airwires;
136 json serialize()
const;
138 uint64_t thickness = 0.035_mm;
139 uint64_t substrate_thickness = .1_mm;
141 std::map<int, StackupLayer> stackup;
153 EXPAND_PROPAGATE_NETS = (1 << 0),
154 EXPAND_AIRWIRES = (1 << 1),
155 EXPAND_PACKAGES = (1 << 2),
156 EXPAND_VIAS = (1 << 3),
157 EXPAND_ALL_AIRWIRES = (1 << 4),
160 ExpandFlags expand_flags = EXPAND_ALL;
161 std::set<UUID> airwires_expand;
163 json serialize()
const;
164 void save_pictures(
const std::string &dir)
const;
165 void load_pictures(
const std::string &dir);
167 ItemSet get_pool_items_used()
const;
169 void flip_package_layer(
int &layer)
const;
170 int get_package_layer(
bool flip,
int layer)
const;
171 ParameterSet get_parameters()
const;
175 std::vector<Polygon> holes;
181 Outline get_outline_and_errors()
const;
184 unsigned int n_inner_layers = 0;
185 ClipperLib::Paths get_thermals(
class Plane *plane,
const class CanvasPads *ca)
const;
186 void update_all_airwires();
187 void update_airwire(
bool fast,
const UUID &net);
190 void expand_packages();
191 Outline get_outline(
bool with_errors)
const;
194 inline Board::ExpandFlags operator|(Board::ExpandFlags a, Board::ExpandFlags b)
196 return static_cast<Board::ExpandFlags
>(
static_cast<int>(a) |
static_cast<int>(b));
199 inline Board::ExpandFlags operator|=(Board::ExpandFlags &a, Board::ExpandFlags b)
A block is one level of hierarchy in the netlist.
Definition: block.hpp:29
Definition: board_package.hpp:13
Definition: board_panel.hpp:7
Definition: board_rules.hpp:27
Definition: board.hpp:132
Definition: canvas_pads.hpp:7
Definition: canvas_patch.hpp:6
Definition: common.hpp:270
Definition: file_version.hpp:9
Definition: gerber_output_settings.hpp:10
Definition: grid_settings.hpp:9
A Junction is a point in 2D-Space.
Definition: junction.hpp:20
Definition: layer_provider.hpp:7
Definition: odb_output_settings.hpp:10
Interface for classes that store objects identified by UUID (e.g. Line or Junction)
Definition: object_provider.hpp:10
Definition: pdf_export_settings.hpp:9
Definition: pnp_export_settings.hpp:11
Polygon used in Padstack, Package and Board for specifying filled Regions.
Definition: polygon.hpp:25
Definition: step_export_settings.hpp:10
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
a class to store JSON values
Definition: json.hpp:177
basic_json<> json
default JSON class
Definition: json_fwd.hpp:62
Definition: board.hpp:173
Definition: common.hpp:320