Common

class edea.kicad.pcb.common.Position(x: float = 0, y: float = 0, angle: float = 0, unlocked: bool = False)

Bases: KicadPcbExpr

A position element within a KiCad PCB file.

Parameters:
  • x – The X coordinates of the position.

  • y – The X coordinates of the position.

  • angle – The orientation angle of the position.

  • unlocked – Whether the position orientation can be anything other than the upright orientation or not.

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element (“at”).

x: float = 0
y: float = 0
angle: float = 0
unlocked: bool = False
kicad_expr_tag_name: ClassVar[Literal['at']] = 'at'
class edea.kicad.pcb.common.ConnectionPads(type: Literal['yes', 'no', 'full', 'thru_hole_only', None] = None, clearance: float = 0)

Bases: KicadPcbExpr

A connection pads.

Parameters:
  • type – The type of pad connection.

  • clearance – The minimum clearance distance for connected pads.

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element (“connect_pads”).

type: Literal['yes', 'no', 'full', 'thru_hole_only', None] = None
clearance: float = 0
kicad_expr_tag_name: ClassVar[Literal['connect_pads']] = 'connect_pads'
class edea.kicad.pcb.common.ZoneKeepOutSettings(tracks: Literal['allowed', 'not_allowed'], vias: Literal['allowed', 'not_allowed'], pads: Literal['allowed', 'not_allowed'], copperpour: Literal['allowed', 'not_allowed'], footprints: Literal['allowed', 'not_allowed'])

Bases: KicadPcbExpr

The zone keepout settings within a KiCad PCB file, defining allowed elements within keepout zones.

KiCad zone keepout

Parameters:
  • tracks – Whether tracks should be excluded from the keep out area. Valid attributes are allowed and not_allowed.

  • vias – Whether vias should be excluded from the keep out area. Valid attributes are allowed and not_allowed.

  • pads – Whether pads should be excluded from the keep out area. Valid attributes are allowed and not_allowed.

  • copperpour – Whethercopper pours should be excluded from the keep out area. Valid attributes are allowed and not_allowed.

  • footprints – Whether footprints should be excluded from the keep out area. Valid attributes are allowed and not_allowed.

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element (“keepout”) or not.

tracks: Literal['allowed', 'not_allowed']
vias: Literal['allowed', 'not_allowed']
pads: Literal['allowed', 'not_allowed']
copperpour: Literal['allowed', 'not_allowed']
footprints: Literal['allowed', 'not_allowed']
kicad_expr_tag_name: ClassVar[Literal['keepout']] = 'keepout'
class edea.kicad.pcb.common.ZoneFillIslandRemovalMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: StrEnum

Different Island removal modes for zone fills within a KiCad PCB file.

Always = '0'

Remove all islands (copper areas disconnected from the main zone).

Never = '1'

Keep all islands.

MinimumArea = '2'

Remove islands with area smaller than a specified threshold.

class edea.kicad.pcb.common.ZoneFillHatchSmoothingLevel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: StrEnum

Different smoothing levels for hatched zone fills within a KiCad PCB file.

No = '0'

No smoothing applied to the hatch edges.

Fillet = '1'

Apply a fillet (rounded corner) smoothing to the hatch edges.

ArcMinimum = '2'

Use minimum arc radius for smoothing hatch edges.

ArcMaximum = '3'

Use maximum arc radius for smoothing hatch edges.

class edea.kicad.pcb.common.ZoneFillHatchBorderAlgorithm(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: StrEnum

Different algorithms for defining the border of hatched zone fills within a KiCad PCB file.

ZoneMinimumThickness = 'zone_min_thickness'

Use minimum zone thickness to define the border.

HatchThickness = 'hatch_thickness'

Use hatch thickness to define the border.

class edea.kicad.pcb.common.ZoneFillSettings(yes: bool = False, mode: Literal['hatch', 'solid'] = 'solid', thermal_gap: float | None = None, thermal_bridge_width: float | None = None, smoothing: Literal['chamfer', 'fillet', None] = None, radius: float | None = None, island_removal_mode: ZoneFillIslandRemovalMode | None = None, island_area_min: float | None = None, hatch_thickness: float | None = None, hatch_gap: float | None = None, hatch_orientation: float | None = None, hatch_smoothing_level: ZoneFillHatchSmoothingLevel | None = None, hatch_smoothing_value: float | None = None, hatch_border_algorithm: ZoneFillHatchBorderAlgorithm | None = None, hatch_min_hole_area: float | None = None)

Bases: KicadPcbExpr

The zone fill settings within a KiCad PCB file, defining properties for filling copper zones.

KiCad fill settings

Parameters:
  • yes – If the zone should be filled.

  • mode – How the zone is filled. The only valid fill mode is hatched.

  • thermal_gap – The distance from the zone to all pad thermal relief connections to the zone.

  • thermal_bridge_width – The spoke width for all pad thermal relief connection to the zone.

  • smoothing – The style of corner smoothing and the radius of the smoothing.

  • radius – The radius.

  • island_removal_mode – The mode for removing islands within the zone fill.

  • island_area_min – The minimum allowable zone island.

  • hatch_thickness – The thickness for hatched fills.

  • hatch_gap – The distance between lines for hatched fills.

  • hatch_orientation – The line angle for hatched fills.

  • hatch_smoothing_level – How hatch outlines are smoothed.

  • hatch_smoothing_value – The ratio between the hole and the chamfer/fillet size.

  • hatch_border_algorithm – Whether the zone line thickness is used when performing a hatch fill or not.

  • hatch_min_hole_area – The minimum area a hatch file hole can be.

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element (“fill”).

Warning

The radius field is not documented in the KiCad file format documentation but we have seen it in the wild.

yes: bool = False
mode: Literal['hatch', 'solid'] = 'solid'
thermal_gap: float | None = None
thermal_bridge_width: float | None = None
smoothing: Literal['chamfer', 'fillet', None] = None
radius: float | None = None
island_removal_mode: ZoneFillIslandRemovalMode | None = None
island_area_min: float | None = None
hatch_thickness: float | None = None
hatch_gap: float | None = None
hatch_orientation: float | None = None
hatch_smoothing_level: ZoneFillHatchSmoothingLevel | None = None
hatch_smoothing_value: float | None = None
hatch_border_algorithm: ZoneFillHatchBorderAlgorithm | None = None
hatch_min_hole_area: float | None = None
kicad_expr_tag_name: ClassVar[Literal['fill']] = 'fill'
class edea.kicad.pcb.common.ZoneFillPolygon(layer: ~typing.Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'], island: bool = False, pts: ~edea.kicad.common.Pts = <factory>)

Bases: KicadPcbExpr

A filled polygon element within a KiCad PCB file, defining a zone fill area on a specific layer.

KiCad filled polygon

Parameters:
  • layer – The canonical layer the zone fill resides on.

  • island – Whether the polygon defines an island within a zone fill or not.

  • pts – A list of polygon X-Y coordinates used to fill the zone.

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element (“filled_polygon”).

layer: Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue']
island: bool = False
pts: Pts
kicad_expr_tag_name: ClassVar[Literal['filled_polygon']] = 'filled_polygon'
class edea.kicad.pcb.common.Polygon(pts: list[~edea.kicad.common.Pts] = <factory>)

Bases: KicadPcbExpr

A simple polygon element within a KiCad PCB file, defining a closed shape without filling.

Parameters:

pts – List of lists of points defining the polygon’s outer and potential inner contours.

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element (“polygon”).

pts: list[Pts]
kicad_expr_tag_name: ClassVar[Literal['polygon']] = 'polygon'
class edea.kicad.pcb.common.Hatch(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: StrEnum

Different hatch options for ZoneFillPolygon and Polygon elements within a KiCad PCB file.

Edge = 'edge'

Hatch along the polygon edges.

Full = 'full'

Fill the entire polygon area with hatch.

None_ = 'none'

No hatching applied to the polygon.

class edea.kicad.pcb.common.ZoneAttrTearDrop(type: Literal['padvia', 'track_end'] = 'padvia')

Bases: KicadPcbExpr

A teardrop attribute for zone fills within a KiCad PCB file.

Parameters:

type – This specifies the type of teardrop element

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element, which is always “teardrop”.

type: Literal['padvia', 'track_end'] = 'padvia'
kicad_expr_tag_name: ClassVar[Literal['teardrop']] = 'teardrop'
class edea.kicad.pcb.common.ZoneAttr(teardrop: ZoneAttrTearDrop)

Bases: KicadPcbExpr

The zone attributes within a KiCad PCB file, potentially defining teardrop clearance shapes.

Parameters:

teardrop – Teardrop clearance shape definition for the zone.

Variables:

kicad_expr_tag_name – The KiCad expression tag name for this element (“attr”).

teardrop: ZoneAttrTearDrop
kicad_expr_tag_name: ClassVar[Literal['attr']] = 'attr'
class edea.kicad.pcb.common.Zone(locked: bool = False, net: int = 0, net_name: str = '', layer: ~typing.Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] | None = None, layers: list[~typing.Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] | ~typing.Literal['*.Adhes', '*.Cu', '*.Mask', '*.Paste', '*.SilkS', 'F&B.Cu']] = <factory>, tstamp: ~uuid.UUID | None = None, uuid: ~uuid.UUID | None = None, name: str | None = None, hatch: tuple[~edea.kicad.pcb.common.Hatch, float] = ('none', 0), priority: int | None = None, attr: ~edea.kicad.pcb.common.ZoneAttr | None = None, connect_pads: ~edea.kicad.pcb.common.ConnectionPads = <factory>, min_thickness: float = 0, filled_areas_thickness: bool = True, keepout: ~edea.kicad.pcb.common.ZoneKeepOutSettings | None = None, fill: ~edea.kicad.pcb.common.ZoneFillSettings = <factory>, polygons: list[~edea.kicad.pcb.common.Polygon] = <factory>, filled_polygons: list[~edea.kicad.pcb.common.ZoneFillPolygon] = <factory>)

Bases: KicadPcbExpr

A zone object within a KiCad PCB file, defining a designated area on specific copper layers.

KiCad zone

Note

Some zones have layers instead of layer. But it’s always guaranteed to have all the layers in the layers list after initialization.

Parameters:
  • locked – Whether the zone is locked for editing or not.

  • net – The net ordinal number which net in the nets section that the zone is part of.

  • net_name – The name of the net if the zone is not a keep out area.

  • layer – The canonical layer the zone resides on.

  • layers – It specifies the copper layers for the zone.

  • tstamp – The unique identifier (UUID) for the zone object.

  • name – The name for the zone if one has been assigned.

  • hatch – The zone outline display hatch style and pitch

  • priority – The zone priority if it is not zero.

  • attr – The reference to a ZoneAttr object defining additional zone attributes.

  • connect_pads – The pad connection type and clearance.

  • min_thickness – The minimum fill width allowed in the zone.

  • filled_areas_thickness – The zone like width is not used when determining the zone fill area.

  • keepout – The keep out items if the zone defines as a keep out area.

  • fill – The configuration for zone filling, including mode, island removal, hatch options, etc.

  • polygons – X-Y coordinates of corner points of the polygon outline.

  • filled_polygons – List of polygons used to fill the zone.

Note

The tstamp field got renamed to uuid in 20240108 (KiCad 8).

locked: bool = False
net: int = 0
net_name: str = ''
layer: Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] | None = None
layers: list[Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] | Literal['*.Adhes', '*.Cu', '*.Mask', '*.Paste', '*.SilkS', 'F&B.Cu']]
tstamp: UUID | None = None
uuid: UUID | None = None
name: str | None = None
hatch: tuple[Hatch, float] = ('none', 0)
priority: int | None = None
attr: ZoneAttr | None = None
connect_pads: ConnectionPads
min_thickness: float = 0
filled_areas_thickness: bool = True
keepout: ZoneKeepOutSettings | None = None
fill: ZoneFillSettings
polygons: list[Polygon]
filled_polygons: list[ZoneFillPolygon]
kicad_expr_tag_name: ClassVar[Literal['zone']] = 'zone'
class edea.kicad.pcb.common.Group(name: str, locked: bool = False, id: ~uuid.UUID | None = None, uuid: ~uuid.UUID | None = None, members: list[~uuid.UUID] = <factory>)

Bases: KicadPcbExpr

A group element within a KiCad PCB file, allowing you to group other elements for organizational purposes.

KiCad group

Parameters:
  • name – The name of the group.

  • locked – Whether the group is locked for editing or not.

  • id – The unique identifier (UUID) for the group element.

  • members – A list of unique identifiers of the objects belonging to the group.

Note

The id field got renamed to uuid in 20240108 (KiCad 8).

name: str
locked: bool = False
id: UUID | None = None
uuid: UUID | None = None
members: list[UUID]
kicad_expr_tag_name: ClassVar[Literal['group']] = 'group'
class edea.kicad.pcb.common.RenderCache(name: str, number: float, polygons: list[~edea.kicad.pcb.common.Polygon] = <factory>)

Bases: KicadPcbExpr

A render cache element within a KiCad PCB file, potentially used for optimizing rendering of complex elements.

Parameters:
  • name – The name of the render cache.

  • number – A number of the render cache.

  • polygons – The cached geometry.

name: str
number: float
polygons: list[Polygon]
kicad_expr_tag_name: ClassVar[Literal['render_cache']] = 'render_cache'
class edea.kicad.pcb.common.BaseTextBox(locked: bool = False, text: str = '', start: tuple[float, float] | None = None, end: tuple[float, float] | None = None, pts: ~edea.kicad.common.Pts | None = None, layer: ~typing.Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] = 'F.Cu', effects: ~edea.kicad.common.Effects = <factory>, render_cache: ~edea.kicad.pcb.common.RenderCache | None = None, angle: float | None = None, stroke: ~edea.kicad.common.Stroke | None = None, hide: bool = False, border: bool | None = None, tstamp: ~uuid.UUID | None = None, uuid: ~uuid.UUID | None = None)

Bases: KicadPcbExpr

A base textbox element within a KiCad PCB file, providing a foundation for various text objects.

Parameters:
  • locked – Whether the text box is locked for editing or not.

  • text – The text content of the box.

  • start – The starting X-Y coordinates of the text box.

  • end – The ending X-Y coordinates of the text box.

  • pts – The reference to a Pts object defining the text box outline.

  • layer – The canonical layer the text box resides on.

  • effects – Reference to an Effects object defining text effects.

  • render_cache – Reference to a RenderCache element for potentially cached rendering.

  • angle – The rotation angle for the text box.

  • stroke – Reference to a stroke object defining the text outline style.

  • hide – Whether the text box is hidden or not.

  • border – Whether the text box has a border or not.

  • tstamp – The unique identifier (UUID) for the text box element.

  • uuid – The unique identifier (UUID) for the text box element.

Note

The tstamp field got renamed to uuid in 20240108 (KiCad 8).

locked: bool = False
text: str = ''
start: tuple[float, float] | None = None
end: tuple[float, float] | None = None
pts: Pts | None = None
layer: Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] = 'F.Cu'
effects: Effects
render_cache: RenderCache | None = None
angle: float | None = None
stroke: Stroke | None = None
hide: bool = False
border: bool | None = None
tstamp: UUID | None = None
uuid: UUID | None = None
kicad_expr_tag_name: ClassVar[Literal['base_textbox', 'fp_text_box', 'gr_text_box']] = 'base_textbox'
class edea.kicad.pcb.common.Net(number: int, name: str)

Bases: KicadPcbExpr

A net connection for the pad within a KiCad PCB file.

Parameters:
  • number – The number of the net connection.

  • name – The name of the net connection.

number: int
name: str
kicad_expr_tag_name: ClassVar[Literal['net']] = 'net'
class edea.kicad.pcb.common.Image(at: tuple[float, float], uuid: ~uuid.UUID | None = None, layer: ~typing.Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] = 'F.Cu', scale: float | None = None, data: list[str] = <factory>, locked: bool | None = None)

Bases: KicadPcbExpr

An embedded image within a KiCad PCB file.

KiCad image

Parameters:
  • at – The X-Y coordinates of the image.

  • uuid – The unique identifier (UUID) for the image element.

  • layer – The associated board layer of the image using one canonical layer name.

  • scale – The scale factor of the image..

  • data – The image data in the portable network graphics format (PNG) encoded with MIME type base64.

  • locked – Whether the image is locked for editing or not.

Note

The fields uuid and locked were added in 20240108 (KiCad 8).

at: tuple[float, float]
uuid: UUID | None = None
layer: Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] = 'F.Cu'
scale: float | None = None
data: list[str]
locked: bool | None = None
kicad_expr_tag_name: ClassVar[Literal['image']] = 'image'
class edea.kicad.pcb.common.TearDrops(best_length_ratio: float, max_length: float, best_width_ratio: float, max_width: float, curve_points: int, filter_ratio: float, enabled: bool, allow_two_segments: bool, prefer_zone_connections: bool)

Bases: KicadPcbExpr

The teardrops settings within a KiCad PCB file.

Parameters:
  • best_length_ratio – The best length ratio for the teardrops.

  • max_length – The maximum length for the teardrops.

  • best_width_ratio – The best width ratio for the teardrops.

  • max_width – The maximum width for the teardrops.

  • curve_points – The number of curve points for the teardrops.

  • filter_ratio – The filter ratio for the teardrops.

  • enabled – Whether the teardrops are enabled or not.

  • allow_two_segments – Whether two segments are allowed for the teardrops or not.

  • prefer_zone_connections – Whether zone connections are preferred for the teardrops or not.

best_length_ratio: float
max_length: float
best_width_ratio: float
max_width: float
curve_points: int
filter_ratio: float
enabled: bool
allow_two_segments: bool
prefer_zone_connections: bool
kicad_expr_tag_name: ClassVar[Literal['teardrops']] = 'teardrops'
class edea.kicad.pcb.common.LayerKnockout(name: Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] = 'F.Cu', knockout: bool = False)

Bases: KicadPcbExpr

Indicates that the text in a layer should be knocked out.

kicad graphical text

param name:

The name of the copper layer to be knocked out

param knockout:

Whether the layer is knocked out or not.

cvar kicad_expr_tag_name:

The KiCad expression tag name for this element (“layer”).

name: Literal['F.Cu', 'In1.Cu', 'In2.Cu', 'In3.Cu', 'In4.Cu', 'In5.Cu', 'In6.Cu', 'In7.Cu', 'In8.Cu', 'In9.Cu', 'In10.Cu', 'In11.Cu', 'In12.Cu', 'In13.Cu', 'In14.Cu', 'In15.Cu', 'In16.Cu', 'In17.Cu', 'In18.Cu', 'In19.Cu', 'In20.Cu', 'In21.Cu', 'In22.Cu', 'In23.Cu', 'In24.Cu', 'In25.Cu', 'In26.Cu', 'In27.Cu', 'In28.Cu', 'In29.Cu', 'In30.Cu', 'B.Cu', 'B.Adhes', 'F.Adhes', 'B.Paste', 'F.Paste', 'B.SilkS', 'F.SilkS', 'B.Mask', 'F.Mask', 'Dwgs.User', 'Cmts.User', 'Eco1.User', 'Eco2.User', 'Edge.Cuts', 'F.CrtYd', 'B.CrtYd', 'F.Fab', 'B.Fab', 'User.1', 'User.2', 'User.3', 'User.4', 'User.5', 'User.6', 'User.7', 'User.8', 'User.9', 'Margin', 'Rescue'] = 'F.Cu'
knockout: bool = False
kicad_expr_tag_name: ClassVar[Literal['layer']] = 'layer'
class edea.kicad.pcb.common.Property(key: str, value: str, at: Position | None = None, layer: LayerKnockout | None = None, effects: Effects | None = None, render_cache: RenderCache | None = None, uuid: UUID | None = None, hide: bool | None = None, unlocked: bool | None = None)

Bases: KicadPcbExpr

A property element within a KiCad PCB file.

Parameters:
  • key – The name of the property and must be unique.

  • value – The value of the property.

key: str
value: str
at: Position | None = None
layer: LayerKnockout | None = None
effects: Effects | None = None
render_cache: RenderCache | None = None
uuid: UUID | None = None
hide: bool | None = None
unlocked: bool | None = None
kicad_expr_tag_name: ClassVar[Literal['property']] = 'property'