57std::vector<std::vector<model::Point>>
edge_loops(
const std::vector<geom::Shape>& edges,
Coord tol = 2'000,
bool* all_closed =
nullptr);
The board model (design doc 02 §3): every object TraceMaker reads from a .kicad_pcb,...
CopperModel build_copper(const model::Board &b)
std::vector< geom::Shape > pad_shapes(const model::Pad &pad)
Pad copper shape in absolute coordinates.
std::vector< std::vector< model::Point > > edge_loops(const std::vector< geom::Shape > &edges, Coord tol=2 '000, bool *all_closed=nullptr)
Closed loops chained from Edge.Cuts pieces whose ends meet within tol; pieces that close no loop are ...
const char * kind_name(ItemKind k)
KiCad expression type names: Pad, Track, Arc, Via, Zone, Graphic.
std::int32_t NetId
0 = no net
std::uint64_t LayerMask
bit i = copper layer i in stack order (0 = F.Cu, last = B.Cu)
std::int64_t Coord
Engine coordinate: signed 64-bit nanometres.
Exact integer geometry for clearance checks (design doc 03 §1).
bool free_via
via marked (free yes): its net is fixed for KiCad's net propagation
model::Point pos
reporting position
int owner
router connection that created this item (-1 = fixed copper)
bool removed
ripped up (router working model only)
Coord width
tracks/arcs: width; vias: diameter
int index
index in the board's pads/tracks/arcs/vias/zones/graphics vector
std::vector< geom::Shape > shapes
copper shape (identical on every layer in layers)
model::LayerMask layers
copper layers the shape is on
int sub
zone fill polygon index
std::vector< Hole > holes
std::vector< CopperItem > items
std::vector< geom::Shape > edges
Edge.Cuts outline pieces (open polylines, r = 0).
std::vector< geom::Shape > margins
Margin-layer graphics: KiCad's copper_edge_clearance treats them like the board edge (drc_test_provid...
int item
copper item owning the hole (-1 for NPTH pads without copper)
Coord clearance
local clearance of the owning pad/footprint (applies as hole clearance), -1 = none