Layers

The LayerOperations module manages board stackup and layer visibility.

board = kicad.get_board()
layers = board.layers

Layer Constants

from kipy.board import BoardLayer

# Copper layers
BoardLayer.BL_F_Cu      # Front copper
BoardLayer.BL_B_Cu      # Back copper
BoardLayer.BL_In1_Cu    # Inner layer 1
BoardLayer.BL_In2_Cu    # Inner layer 2
# ... up to In30_Cu

# Silkscreen
BoardLayer.BL_F_SilkS   # Front silkscreen
BoardLayer.BL_B_SilkS   # Back silkscreen

# Solder mask
BoardLayer.BL_F_Mask    # Front mask
BoardLayer.BL_B_Mask    # Back mask

# Solder paste
BoardLayer.BL_F_Paste   # Front paste
BoardLayer.BL_B_Paste   # Back paste

# Other technical layers
BoardLayer.BL_Edge_Cuts # Board outline
BoardLayer.BL_F_CrtYd   # Front courtyard
BoardLayer.BL_B_CrtYd   # Back courtyard
BoardLayer.BL_F_Fab     # Front fabrication
BoardLayer.BL_B_Fab     # Back fabrication

# User layers
BoardLayer.BL_User_1    # User layer 1
# ... up to User_45

Getting Layer Info

get_enabled_layers()

Gets all enabled layers.

enabled = board.layers.get_enabled_layers()

for layer in enabled:
    print(f"Layer: {layer}")

get_copper_layer_count()

Gets the number of copper layers.

count = board.layers.get_copper_layer_count()
print(f"Board has {count} copper layers")

get_layer_name(layer)

Gets the display name of a layer.

name = board.layers.get_layer_name(BoardLayer.BL_In1_Cu)
print(f"Layer name: {name}")  # e.g., "In1.Cu" or custom name

Setting Layer Configuration

set_enabled_layers(layers)

Sets which layers are enabled.

# 4-layer board
board.layers.set_enabled_layers([
    BoardLayer.BL_F_Cu,
    BoardLayer.BL_In1_Cu,
    BoardLayer.BL_In2_Cu,
    BoardLayer.BL_B_Cu,
    # Technical layers
    BoardLayer.BL_F_SilkS,
    BoardLayer.BL_B_SilkS,
    BoardLayer.BL_F_Mask,
    BoardLayer.BL_B_Mask,
    BoardLayer.BL_Edge_Cuts,
])

set_copper_layer_count(count)

Sets the number of copper layers.

board.layers.set_copper_layer_count(4)  # 4-layer board

set_layer_name(layer, name)

Sets a custom layer name.

board.layers.set_layer_name(BoardLayer.BL_In1_Cu, "GND")
board.layers.set_layer_name(BoardLayer.BL_In2_Cu, "PWR")

Layer Visibility

get_visible_layers()

Gets currently visible layers.

visible = board.layers.get_visible_layers()

set_visible_layers(layers)

Sets which layers are visible.

# Show only copper layers
board.layers.set_visible_layers([
    BoardLayer.BL_F_Cu,
    BoardLayer.BL_In1_Cu,
    BoardLayer.BL_In2_Cu,
    BoardLayer.BL_B_Cu,
])

show_layer(layer)

Shows a specific layer.

board.layers.show_layer(BoardLayer.BL_F_SilkS)

hide_layer(layer)

Hides a specific layer.

board.layers.hide_layer(BoardLayer.BL_F_Fab)

Stackup

get_stackup()

Gets the board stackup definition.

stackup = board.layers.get_stackup()

for layer in stackup.layers:
    print(f"{layer.name}: {layer.type}, {layer.thickness_mm}mm")

set_stackup(stackup)

Sets the board stackup.

# Modify stackup
stackup = board.layers.get_stackup()

# Set copper thickness
for layer in stackup.layers:
    if layer.type == "copper":
        layer.thickness_mm = 0.035  # 1oz copper

board.layers.set_stackup(stackup)

Example: Configure 4-Layer Board

from kipy import KiCad
from kipy.board import BoardLayer

kicad = KiCad()
board = kicad.get_board()

# Set 4-layer configuration
board.layers.set_copper_layer_count(4)

# Name the inner layers
board.layers.set_layer_name(BoardLayer.BL_In1_Cu, "GND")
board.layers.set_layer_name(BoardLayer.BL_In2_Cu, "PWR")

# Get and modify stackup
stackup = board.layers.get_stackup()

# Print layer info
for layer in stackup.layers:
    print(f"{layer.name}: {layer.thickness_mm}mm")

print("4-layer board configured")

Example: Layer Visibility for Review

def show_only_front_side(board):
    """Show only front-side layers for review."""
    board.layers.set_visible_layers([
        BoardLayer.BL_F_Cu,
        BoardLayer.BL_F_SilkS,
        BoardLayer.BL_F_Mask,
        BoardLayer.BL_Edge_Cuts,
    ])

def show_all_copper(board):
    """Show all copper layers."""
    copper_layers = [
        BoardLayer.BL_F_Cu,
        BoardLayer.BL_In1_Cu,
        BoardLayer.BL_In2_Cu,
        BoardLayer.BL_B_Cu,
    ]
    board.layers.set_visible_layers(copper_layers)

# Use for review
show_only_front_side(board)

Layer Types

Layer TypeDescription
CopperConductive layer for traces
CoreDielectric core material
PrepregBonding material between layers
MaskSolder mask (typically green)
SilkscreenComponent markings
PasteSolder paste stencil