50 void propagate_nets();
51 std::map<int, Layer> layers;
53 void delete_dependants();
54 void vacuum_junctions();
57 Board(
const UUID &uu,
const json &,
Block &block,
IPool &pool,
const std::string &board_directory);
58 static Board new_from_file(
const std::string &filename,
Block &block,
IPool &pool);
60 static unsigned int get_app_version();
65 Board(
const Board &brd);
67 void operator=(
const Board &brd) =
delete;
69 void update_junction_connections();
70 void update_airwires(
bool fast,
const std::set<UUID> &nets);
75 void smash_package_silkscreen_graphics(
BoardPackage *pkg);
81 const std::map<int, Layer> &get_layers()
const override;
82 void set_n_inner_layers(
unsigned int n);
83 unsigned int get_n_inner_layers()
const;
86 plane_update_status_cb_t status_cb =
nullptr,
87 const std::atomic_bool &cancel = std::atomic_bool(
false));
88 void update_planes(plane_update_status_cb_t status_cb =
nullptr,
89 const std::atomic_bool &cancel = std::atomic_bool(
false));
90 std::vector<KeepoutContour> get_keepout_contours()
const;
91 std::pair<Coordi, Coordi> get_bbox()
const;
93 std::map<const BoardPackage *, PnPRow> get_PnP(
const PnPExportSettings &settings)
const;
99 std::map<UUID, Polygon> polygons;
100 std::map<UUID, BoardHole> holes;
101 std::map<UUID, BoardPackage> packages;
102 std::map<UUID, BoardJunction> junctions;
103 std::map<UUID, Track> tracks;
104 std::map<UUID, Via> vias;
105 std::map<UUID, Text> texts;
106 std::map<UUID, Line> lines;
107 std::map<UUID, Arc> arcs;
108 std::map<UUID, Plane> planes;
109 std::map<UUID, Keepout> keepouts;
110 std::map<UUID, Dimension> dimensions;
111 std::map<UUID, ConnectionLine> connection_lines;
112 std::map<UUID, IncludedBoard> included_boards;
113 std::map<UUID, BoardPanel> board_panels;
114 std::map<UUID, Picture> pictures;
115 std::map<UUID, BoardDecal> decals;
116 std::map<UUID, BoardNetTie> net_ties;
118 std::vector<Warning> warnings;
120 enum class OutputFormat { GERBER, ODB };
121 OutputFormat output_format = OutputFormat::GERBER;
129 std::map<UUID, std::list<Airwire>> airwires;
133 StackupLayer(
int l,
const json &j);
135 json serialize()
const;
137 uint64_t thickness = 0.035_mm;
138 uint64_t substrate_thickness = .1_mm;
140 std::map<int, StackupLayer> stackup;
145 UserLayer(
int l,
const json &j);
147 json serialize()
const;
167 const std::map<int, UserLayer> &get_user_layers()
const;
169 enum class UserLayerOrder :
int { ABOVE = 1, BELOW = -1 };
170 int add_user_layer(
int other_layer, UserLayerOrder pos);
171 void delete_user_layer(
int user_layer);
172 unsigned int count_available_user_layers()
const;
173 void move_user_layer(
int user_layer,
int other_layer, UserLayerOrder pos);
174 void set_user_layer_name(
int user_layer,
const std::string &name);
175 void set_user_layer_type(
int user_layer, UserLayer::Type type);
176 void set_user_layer_color(
int user_layer,
int layer_color);
188 EXPAND_PROPAGATE_NETS = (1 << 0),
189 EXPAND_AIRWIRES = (1 << 1),
190 EXPAND_PACKAGES = (1 << 2),
191 EXPAND_VIAS = (1 << 3),
192 EXPAND_ALL_AIRWIRES = (1 << 4),
195 ExpandFlags expand_flags = EXPAND_ALL;
196 std::set<UUID> airwires_expand;
198 json serialize()
const;
199 json serialize_planes()
const;
200 void load_planes(
const json &j);
201 void load_planes_from_file(
const std::string &filename);
202 void save_planes(
const std::string &filename);
204 void save_pictures(
const std::string &dir)
const;
205 void load_pictures(
const std::string &dir);
207 ItemSet get_pool_items_used()
const;
209 void flip_package_layer(
int &layer)
const;
210 int get_package_layer(
bool flip,
int layer)
const;
211 ParameterSet get_parameters()
const;
215 std::vector<Polygon> holes;
221 Outline get_outline_and_errors()
const;
223 std::set<LayerRange> get_drill_spans()
const;
225 std::string board_directory;
228 unsigned int n_inner_layers = 0;
229 ClipperLib::Paths get_thermals(
class Plane *plane,
const class CanvasPads *ca)
const;
230 void update_all_airwires();
231 void update_airwire(
bool fast,
const UUID &net);
233 Board(
const Board &brd, CopyMode copy_mode);
234 void expand_packages();
235 Outline get_outline(
bool with_errors)
const;
237 std::map<int, UserLayer> user_layers;
238 void update_layers();
239 void assign_user_layer_positions();