KiCad PCB EDA Suite
Loading...
Searching...
No Matches
PADSTACK Class Reference

A PADSTACK defines the characteristics of a single or multi-layer pad, in the IPC sense of the word. More...

#include <padstack.h>

Inheritance diagram for PADSTACK:
SERIALIZABLE

Classes

struct  COPPER_LAYER_PROPS
 The features of a padstack that can vary between copper layers All parameters are optional; leaving them un-set means "use parent/rule defaults" Pad clearances, margins, etc. More...
 
struct  DRILL_PROPS
 ! The properties of a padstack drill. Drill position is always the pad position (origin). More...
 
struct  MASK_LAYER_PROPS
 ! More...
 
struct  POST_MACHINING_PROPS
 
struct  SHAPE_PROPS
 ! More...
 

Public Types

enum class  TYPE { NORMAL , VIA , MOUNTING }
 ! More...
 
enum class  MODE { NORMAL , FRONT_INNER_BACK , CUSTOM }
 ! Copper geometry mode: controls how many unique copper layer shapes this padstack has More...
 

Public Member Functions

 PADSTACK (BOARD_ITEM *aParent)
 
virtual ~PADSTACK ()=default
 
 PADSTACK (const PADSTACK &aOther)
 
PADSTACKoperator= (const PADSTACK &aOther)
 
bool operator== (const PADSTACK &aOther) const
 
bool operator!= (const PADSTACK &aOther) const
 
void Serialize (google::protobuf::Any &aContainer) const override
 Serializes this object to the given Any message.
 
bool Deserialize (const google::protobuf::Any &aContainer) override
 Deserializes the given protobuf message into this object.
 
double Similarity (const PADSTACK &aOther) const
 Return a measure of how likely the other object is to represent the same object.
 
const LSETLayerSet () const
 
LSETLayerSet ()
 
void SetLayerSet (const LSET &aSet)
 
void FlipLayers (int aCopperLayerCount)
 Flips the padstack layers in the case that the pad's parent footprint is flipped to the other side of the board.
 
PCB_LAYER_ID StartLayer () const
 
PCB_LAYER_ID EndLayer () const
 
MODE Mode () const
 
void SetMode (MODE aMode)
 
wxString Name () const
 ! Returns the name of this padstack in IPC-7351 format
 
EDA_ANGLE GetOrientation () const
 
void SetOrientation (EDA_ANGLE aAngle)
 
DRILL_PROPSDrill ()
 
const DRILL_PROPSDrill () const
 
DRILL_PROPSSecondaryDrill ()
 
const DRILL_PROPSSecondaryDrill () const
 
DRILL_PROPSTertiaryDrill ()
 
const DRILL_PROPSTertiaryDrill () const
 
POST_MACHINING_PROPSFrontPostMachining ()
 
const POST_MACHINING_PROPSFrontPostMachining () const
 
POST_MACHINING_PROPSBackPostMachining ()
 
const POST_MACHINING_PROPSBackPostMachining () const
 
UNCONNECTED_LAYER_MODE UnconnectedLayerMode () const
 
void SetUnconnectedLayerMode (UNCONNECTED_LAYER_MODE aMode)
 
COPPER_LAYER_PROPSCopperLayer (PCB_LAYER_ID aLayer)
 
const COPPER_LAYER_PROPSCopperLayer (PCB_LAYER_ID aLayer) const
 
MASK_LAYER_PROPSFrontOuterLayers ()
 
const MASK_LAYER_PROPSFrontOuterLayers () const
 
MASK_LAYER_PROPSBackOuterLayers ()
 
const MASK_LAYER_PROPSBackOuterLayers () const
 
std::optional< bool > IsTented (PCB_LAYER_ID aSide) const
 Checks if this padstack is tented (covered in soldermask) on the given side.
 
std::optional< bool > IsCovered (PCB_LAYER_ID aSide) const
 
std::optional< bool > IsPlugged (PCB_LAYER_ID aSide) const
 
std::optional< bool > IsCapped () const
 
std::optional< bool > IsFilled () const
 
CUSTOM_SHAPE_ZONE_MODE CustomShapeInZoneMode () const
 
void SetCustomShapeInZoneMode (CUSTOM_SHAPE_ZONE_MODE aM)
 
void ForEachUniqueLayer (const std::function< void(PCB_LAYER_ID)> &aMethod) const
 Runs the given callable for each active unique copper layer in this padstack, meaning F_Cu for MODE::NORMAL; F_Cu, PADSTACK::INNER_LAYERS, and B_Cu for top/inner/bottom, and an arbitrary set of layers for full-custom padstacks.
 
std::vector< PCB_LAYER_IDUniqueLayers () const
 
PCB_LAYER_ID EffectiveLayerFor (PCB_LAYER_ID aLayer) const
 Determines which geometry layer should be used for the given input layer.
 
LSET RelevantShapeLayers (const PADSTACK &aOther) const
 Returns the set of layers that must be considered if checking one padstack against another.
 
PAD_SHAPE Shape (PCB_LAYER_ID aLayer) const
 
void SetShape (PAD_SHAPE aShape, PCB_LAYER_ID aLayer)
 
void SetSize (const VECTOR2I &aSize, PCB_LAYER_ID aLayer)
 
const VECTOR2ISize (PCB_LAYER_ID aLayer) const
 
PAD_DRILL_SHAPE DrillShape () const
 
void SetDrillShape (PAD_DRILL_SHAPE aShape)
 
VECTOR2IOffset (PCB_LAYER_ID aLayer)
 
const VECTOR2IOffset (PCB_LAYER_ID aLayer) const
 
PAD_SHAPE AnchorShape (PCB_LAYER_ID aLayer) const
 
void SetAnchorShape (PAD_SHAPE aShape, PCB_LAYER_ID aLayer)
 
VECTOR2ITrapezoidDeltaSize (PCB_LAYER_ID aLayer)
 
const VECTOR2ITrapezoidDeltaSize (PCB_LAYER_ID aLayer) const
 
double RoundRectRadiusRatio (PCB_LAYER_ID aLayer) const
 
void SetRoundRectRadiusRatio (double aRatio, PCB_LAYER_ID aLayer)
 
int RoundRectRadius (PCB_LAYER_ID aLayer) const
 
void SetRoundRectRadius (double aRadius, PCB_LAYER_ID aLayer)
 
double ChamferRatio (PCB_LAYER_ID aLayer) const
 
void SetChamferRatio (double aRatio, PCB_LAYER_ID aLayer)
 
int & ChamferPositions (PCB_LAYER_ID aLayer)
 
const int & ChamferPositions (PCB_LAYER_ID aLayer) const
 
void SetChamferPositions (int aPositions, PCB_LAYER_ID aLayer)
 
std::optional< int > & Clearance (PCB_LAYER_ID aLayer=F_Cu)
 
const std::optional< int > & Clearance (PCB_LAYER_ID aLayer=F_Cu) const
 
std::optional< int > & SolderMaskMargin (PCB_LAYER_ID aLayer=F_Cu)
 
const std::optional< int > & SolderMaskMargin (PCB_LAYER_ID aLayer=F_Cu) const
 
std::optional< int > & SolderPasteMargin (PCB_LAYER_ID aLayer=F_Cu)
 
const std::optional< int > & SolderPasteMargin (PCB_LAYER_ID aLayer=F_Cu) const
 
std::optional< double > & SolderPasteMarginRatio (PCB_LAYER_ID aLayer=F_Cu)
 
const std::optional< double > & SolderPasteMarginRatio (PCB_LAYER_ID aLayer=F_Cu) const
 
std::optional< ZONE_CONNECTION > & ZoneConnection (PCB_LAYER_ID aLayer=F_Cu)
 
const std::optional< ZONE_CONNECTION > & ZoneConnection (PCB_LAYER_ID aLayer=F_Cu) const
 
std::optional< int > & ThermalSpokeWidth (PCB_LAYER_ID aLayer=F_Cu)
 
const std::optional< int > & ThermalSpokeWidth (PCB_LAYER_ID aLayer=F_Cu) const
 
std::optional< int > & ThermalGap (PCB_LAYER_ID aLayer=F_Cu)
 
const std::optional< int > & ThermalGap (PCB_LAYER_ID aLayer=F_Cu) const
 
EDA_ANGLE DefaultThermalSpokeAngleForShape (PCB_LAYER_ID aLayer=F_Cu) const
 
EDA_ANGLE ThermalSpokeAngle (PCB_LAYER_ID aLayer=F_Cu) const
 
void SetThermalSpokeAngle (EDA_ANGLE aAngle, PCB_LAYER_ID aLayer=F_Cu)
 
std::vector< std::shared_ptr< PCB_SHAPE > > & Primitives (PCB_LAYER_ID aLayer)
 
const std::vector< std::shared_ptr< PCB_SHAPE > > & Primitives (PCB_LAYER_ID aLayer) const
 
void AddPrimitive (PCB_SHAPE *aShape, PCB_LAYER_ID aLayer)
 Adds a custom shape primitive to the padstack.
 
void AppendPrimitives (const std::vector< std::shared_ptr< PCB_SHAPE > > &aPrimitivesList, PCB_LAYER_ID aLayer)
 Appends a copy of each shape in the given list to this padstack's custom shape list.
 
void ReplacePrimitives (const std::vector< std::shared_ptr< PCB_SHAPE > > &aPrimitivesList, PCB_LAYER_ID aLayer)
 Clears the existing primitive list (freeing the owned shapes) and adds copies of the given shapes to the padstack for the given layer.
 
void ClearPrimitives (PCB_LAYER_ID aLayer)
 
BACKDRILL_MODE GetBackdrillMode () const
 
void SetBackdrillMode (BACKDRILL_MODE aMode)
 
std::optional< int > GetBackdrillSize (bool aTop) const
 
void SetBackdrillSize (bool aTop, std::optional< int > aSize)
 
PCB_LAYER_ID GetBackdrillEndLayer (bool aTop) const
 
void SetBackdrillEndLayer (bool aTop, PCB_LAYER_ID aLayer)
 

Static Public Member Functions

static int Compare (const PADSTACK *aPadstackRef, const PADSTACK *aPadstackCmp)
 Compare two padstacks and return 0 if they are equal.
 

Static Public Attributes

static constexpr PCB_LAYER_ID ALL_LAYERS = F_Cu
 ! Temporary layer identifier to identify code that is not padstack-aware
 
static constexpr PCB_LAYER_ID INNER_LAYERS = In1_Cu
 ! The layer identifier to use for "inner layers" on top/inner/bottom padstacks
 

Private Member Functions

void packCopperLayer (PCB_LAYER_ID aLayer, kiapi::board::types::PadStack &aProto) const
 
bool unpackCopperLayer (const kiapi::board::types::PadStackLayer &aProto)
 

Private Attributes

BOARD_ITEMm_parent
 ! The BOARD_ITEM this PADSTACK belongs to; will be used as the parent for owned shapes
 
MODE m_mode
 ! The copper layer variation mode this padstack is in
 
LSET m_layerSet
 ! The board layers that this padstack is active on
 
wxString m_customName
 ! An override for the IPC-7351 padstack name
 
EDA_ANGLE m_orientation
 ! The rotation of the pad relative to an outer reference frame
 
std::unordered_map< PCB_LAYER_ID, COPPER_LAYER_PROPSm_copperProps
 ! The properties applied to copper layers if they aren't overridden
 
MASK_LAYER_PROPS m_frontMaskProps
 ! The overrides applied to front outer technical layers
 
MASK_LAYER_PROPS m_backMaskProps
 ! The overrides applied to back outer technical layers
 
UNCONNECTED_LAYER_MODE m_unconnectedLayerMode
 
CUSTOM_SHAPE_ZONE_MODE m_customShapeInZoneMode
 How to build the custom shape in zone, to create the clearance area: CUSTOM_SHAPE_ZONE_MODE::OUTLINE = use pad shape CUSTOM_SHAPE_ZONE_MODE::CONVEXHULL = use the convex hull of the pad shape.
 
DRILL_PROPS m_drill
 !
 
DRILL_PROPS m_secondaryDrill
 ! Secondary drill, used to define back-drilling starting from the bottom side
 
DRILL_PROPS m_tertiaryDrill
 ! Tertiary drill, used to define back-drilling starting from the top side
 
POST_MACHINING_PROPS m_frontPostMachining
 
POST_MACHINING_PROPS m_backPostMachining
 

Detailed Description

A PADSTACK defines the characteristics of a single or multi-layer pad, in the IPC sense of the word.

This means that a PCB_PAD has a padstack, but also a PCB_VIA. The padstack for a pad defines its geometry on copper, soldermask, and paste layers, as well as any drilling or milling associated with the pad (round or slot hole, back-drilling, etc). Padstacks also define thermal relief settings for all copper layers, clearance overrides for all copper layers, and potentially other properties in the future. In other words, the padstack defines most of the geometric features of a pad on all layers. It does not define electrical properties or other metadata.

For padstacks that do not vary between layers, F_Cu is used as the copper layer to store all padstack properties.

Definition at line 156 of file padstack.h.

Member Enumeration Documentation

◆ MODE

enum class PADSTACK::MODE
strong

! Copper geometry mode: controls how many unique copper layer shapes this padstack has

Enumerator
NORMAL 

Shape is the same on all layers.

FRONT_INNER_BACK 

Up to three shapes can be defined (F_Cu, inner copper layers, B_Cu)

CUSTOM 

Shapes can be defined on arbitrary layers.

Definition at line 169 of file padstack.h.

◆ TYPE

enum class PADSTACK::TYPE
strong

!

Padstack type, mostly for IPC-7351 naming and attributes Note that TYPE::MOUNTING is probably not currently supported by KiCad

Enumerator
NORMAL 

Padstack for a footprint pad.

VIA 

Padstack for a via.

MOUNTING 

A mounting hole (plated or unplated, not associated with a footprint)

Definition at line 161 of file padstack.h.

Constructor & Destructor Documentation

◆ PADSTACK() [1/2]

◆ ~PADSTACK()

virtual PADSTACK::~PADSTACK ( )
virtualdefault

References PADSTACK().

◆ PADSTACK() [2/2]

PADSTACK::PADSTACK ( const PADSTACK & aOther)

Definition at line 67 of file padstack.cpp.

References CopperLayer(), ForEachUniqueLayer(), m_parent, and PADSTACK().

Member Function Documentation

◆ AddPrimitive()

void PADSTACK::AddPrimitive ( PCB_SHAPE * aShape,
PCB_LAYER_ID aLayer )

Adds a custom shape primitive to the padstack.

Parameters
aShapeis a shape to add as a custom primitive. Ownership is passed to this PADSTACK.
aLayeris the padstack layer to add to.

Definition at line 1150 of file padstack.cpp.

References CopperLayer(), and PADSTACK::COPPER_LAYER_PROPS::custom_shapes.

Referenced by PCB_IO_KICAD_SEXPR_PARSER::parsePadstack(), and unpackCopperLayer().

◆ AnchorShape()

PAD_SHAPE PADSTACK::AnchorShape ( PCB_LAYER_ID aLayer) const

◆ AppendPrimitives()

void PADSTACK::AppendPrimitives ( const std::vector< std::shared_ptr< PCB_SHAPE > > & aPrimitivesList,
PCB_LAYER_ID aLayer )

Appends a copy of each shape in the given list to this padstack's custom shape list.

Parameters
aPrimitivesListis a list of shapes to add copies of to this PADSTACK
aLayeris the padstack layer to add to.

Definition at line 1156 of file padstack.cpp.

References CopperLayer(), PADSTACK::COPPER_LAYER_PROPS::custom_shapes, m_parent, and EDA_ITEM::SetParent().

Referenced by ReplacePrimitives().

◆ BackOuterLayers() [1/2]

◆ BackOuterLayers() [2/2]

const MASK_LAYER_PROPS & PADSTACK::BackOuterLayers ( ) const
inline

Definition at line 360 of file padstack.h.

References m_backMaskProps.

◆ BackPostMachining() [1/2]

◆ BackPostMachining() [2/2]

const POST_MACHINING_PROPS & PADSTACK::BackPostMachining ( ) const
inline

Definition at line 348 of file padstack.h.

References m_backPostMachining.

◆ ChamferPositions() [1/2]

int & PADSTACK::ChamferPositions ( PCB_LAYER_ID aLayer)

◆ ChamferPositions() [2/2]

const int & PADSTACK::ChamferPositions ( PCB_LAYER_ID aLayer) const

◆ ChamferRatio()

double PADSTACK::ChamferRatio ( PCB_LAYER_ID aLayer) const

◆ Clearance() [1/2]

std::optional< int > & PADSTACK::Clearance ( PCB_LAYER_ID aLayer = F_Cu)

◆ Clearance() [2/2]

const std::optional< int > & PADSTACK::Clearance ( PCB_LAYER_ID aLayer = F_Cu) const

Definition at line 1003 of file padstack.cpp.

References PADSTACK::COPPER_LAYER_PROPS::clearance, and CopperLayer().

◆ ClearPrimitives()

void PADSTACK::ClearPrimitives ( PCB_LAYER_ID aLayer)

◆ Compare()

int PADSTACK::Compare ( const PADSTACK * aPadstackRef,
const PADSTACK * aPadstackCmp )
static

Compare two padstacks and return 0 if they are equal.

Returns
less than 0 if left less than right, 0 if equal, or greater than 0 if left greater than right.

Definition at line 1342 of file padstack.cpp.

References PADSTACK().

Referenced by PAD::Compare().

◆ CopperLayer() [1/2]

◆ CopperLayer() [2/2]

const PADSTACK::COPPER_LAYER_PROPS & PADSTACK::CopperLayer ( PCB_LAYER_ID aLayer) const

◆ CustomShapeInZoneMode()

CUSTOM_SHAPE_ZONE_MODE PADSTACK::CustomShapeInZoneMode ( ) const
inline

Definition at line 378 of file padstack.h.

References m_customShapeInZoneMode.

◆ DefaultThermalSpokeAngleForShape()

EDA_ANGLE PADSTACK::DefaultThermalSpokeAngleForShape ( PCB_LAYER_ID aLayer = F_Cu) const

Definition at line 1111 of file padstack.cpp.

References ANGLE_45, ANGLE_90, CHAMFERED_RECT, OVAL, RECTANGLE, ROUNDRECT, and Shape().

Referenced by Deserialize(), and ThermalSpokeAngle().

◆ Deserialize()

◆ Drill() [1/2]

◆ Drill() [2/2]

const DRILL_PROPS & PADSTACK::Drill ( ) const
inline

Definition at line 336 of file padstack.h.

References m_drill.

◆ DrillShape()

PAD_DRILL_SHAPE PADSTACK::DrillShape ( ) const

Definition at line 890 of file padstack.cpp.

References m_drill.

◆ EffectiveLayerFor()

PCB_LAYER_ID PADSTACK::EffectiveLayerFor ( PCB_LAYER_ID aLayer) const

Determines which geometry layer should be used for the given input layer.

For example, for MODE::NORMAL, this will always be F_Cu, and for MODE::FRONT_INNER_BACK, this will be one of F_Cu, PADSTACK::INNER_LAYERS, and B_Cu depending on the input layer.

Parameters
aLayeris a valid board layer
Returns
the layer that the padstack's geometry is stored on for the given input layer

Definition at line 1255 of file padstack.cpp.

References ALL_LAYERS, B_Cu, F_Cu, FRONT_INNER_BACK, INNER_LAYERS, IsBackLayer(), IsFrontLayer(), m_copperProps, m_mode, and NORMAL.

Referenced by PAD::GetEffectivePolygon(), and PAD::GetEffectiveShape().

◆ EndLayer()

PCB_LAYER_ID PADSTACK::EndLayer ( ) const

Definition at line 1371 of file padstack.cpp.

References m_drill.

Referenced by TUNING_PROFILE_PARAMETERS_USER_DEFINED::getPropagationDelay().

◆ FlipLayers()

void PADSTACK::FlipLayers ( int aCopperLayerCount)

Flips the padstack layers in the case that the pad's parent footprint is flipped to the other side of the board.

Definition at line 1359 of file padstack.cpp.

◆ ForEachUniqueLayer()

void PADSTACK::ForEachUniqueLayer ( const std::function< void(PCB_LAYER_ID)> & aMethod) const

◆ FrontOuterLayers() [1/2]

◆ FrontOuterLayers() [2/2]

const MASK_LAYER_PROPS & PADSTACK::FrontOuterLayers ( ) const
inline

Definition at line 357 of file padstack.h.

References m_frontMaskProps.

◆ FrontPostMachining() [1/2]

◆ FrontPostMachining() [2/2]

const POST_MACHINING_PROPS & PADSTACK::FrontPostMachining ( ) const
inline

Definition at line 345 of file padstack.h.

References m_frontPostMachining.

◆ GetBackdrillEndLayer()

PCB_LAYER_ID PADSTACK::GetBackdrillEndLayer ( bool aTop) const

Definition at line 594 of file padstack.cpp.

References B_Cu, F_Cu, m_secondaryDrill, m_tertiaryDrill, and UNDEFINED_LAYER.

◆ GetBackdrillMode()

BACKDRILL_MODE PADSTACK::GetBackdrillMode ( ) const

◆ GetBackdrillSize()

std::optional< int > PADSTACK::GetBackdrillSize ( bool aTop) const

Definition at line 537 of file padstack.cpp.

References B_Cu, F_Cu, m_secondaryDrill, and m_tertiaryDrill.

◆ GetOrientation()

EDA_ANGLE PADSTACK::GetOrientation ( ) const
inline

Definition at line 328 of file padstack.h.

References m_orientation.

◆ IsCapped()

std::optional< bool > PADSTACK::IsCapped ( ) const

Definition at line 1330 of file padstack.cpp.

References m_drill.

Referenced by PCB_IO_IPC2581::addPadStack().

◆ IsCovered()

std::optional< bool > PADSTACK::IsCovered ( PCB_LAYER_ID aSide) const

◆ IsFilled()

std::optional< bool > PADSTACK::IsFilled ( ) const

Definition at line 1336 of file padstack.cpp.

References m_drill.

Referenced by PCB_IO_IPC2581::addPadStack().

◆ IsPlugged()

std::optional< bool > PADSTACK::IsPlugged ( PCB_LAYER_ID aSide) const

◆ IsTented()

std::optional< bool > PADSTACK::IsTented ( PCB_LAYER_ID aSide) const

Checks if this padstack is tented (covered in soldermask) on the given side.

Parameters
aSideis a front or back layer (any will do)
Returns
true or false if this padstack contains a tenting override on the given layer, or std::nullopt if there is no override (meaning design rules should be used)

Definition at line 1295 of file padstack.cpp.

References BackOuterLayers(), FrontOuterLayers(), PADSTACK::MASK_LAYER_PROPS::has_solder_mask, IsBackLayer(), and IsFrontLayer().

Referenced by PCB_IO_IPC2581::addPadStack().

◆ LayerSet() [1/2]

LSET & PADSTACK::LayerSet ( )
inline

Definition at line 310 of file padstack.h.

References m_layerSet.

◆ LayerSet() [2/2]

const LSET & PADSTACK::LayerSet ( ) const
inline

◆ Mode()

◆ Name()

wxString PADSTACK::Name ( ) const

! Returns the name of this padstack in IPC-7351 format

Definition at line 1377 of file padstack.cpp.

References m_customName.

◆ Offset() [1/2]

VECTOR2I & PADSTACK::Offset ( PCB_LAYER_ID aLayer)

◆ Offset() [2/2]

const VECTOR2I & PADSTACK::Offset ( PCB_LAYER_ID aLayer) const

◆ operator!=()

bool PADSTACK::operator!= ( const PADSTACK & aOther) const
inline

Definition at line 290 of file padstack.h.

References operator==(), and PADSTACK().

◆ operator=()

◆ operator==()

◆ packCopperLayer()

void PADSTACK::packCopperLayer ( PCB_LAYER_ID aLayer,
kiapi::board::types::PadStack & aProto ) const
private

◆ Primitives() [1/2]

std::vector< std::shared_ptr< PCB_SHAPE > > & PADSTACK::Primitives ( PCB_LAYER_ID aLayer)

Definition at line 1138 of file padstack.cpp.

References CopperLayer(), and PADSTACK::COPPER_LAYER_PROPS::custom_shapes.

Referenced by PAD::Clone(), and operator=().

◆ Primitives() [2/2]

const std::vector< std::shared_ptr< PCB_SHAPE > > & PADSTACK::Primitives ( PCB_LAYER_ID aLayer) const

Definition at line 1144 of file padstack.cpp.

References CopperLayer(), and PADSTACK::COPPER_LAYER_PROPS::custom_shapes.

◆ RelevantShapeLayers()

LSET PADSTACK::RelevantShapeLayers ( const PADSTACK & aOther) const

Returns the set of layers that must be considered if checking one padstack against another.

For example, two normal padstacks will just return a set with ALL_LAYERS, but if one of them is FRONT_INNER_BACK, there are three layers to check.

Definition at line 1277 of file padstack.cpp.

References ALL_LAYERS, ForEachUniqueLayer(), m_mode, NORMAL, PADSTACK(), and BASE_SET::set().

◆ ReplacePrimitives()

void PADSTACK::ReplacePrimitives ( const std::vector< std::shared_ptr< PCB_SHAPE > > & aPrimitivesList,
PCB_LAYER_ID aLayer )

Clears the existing primitive list (freeing the owned shapes) and adds copies of the given shapes to the padstack for the given layer.

Parameters
aPrimitivesListis a list of shapes to add copies of to this PADSTACK
aLayeris the padstack layer to add to.

Definition at line 1170 of file padstack.cpp.

References AppendPrimitives(), and ClearPrimitives().

Referenced by operator=().

◆ RoundRectRadius()

int PADSTACK::RoundRectRadius ( PCB_LAYER_ID aLayer) const

Definition at line 950 of file padstack.cpp.

References KiROUND(), RoundRectRadiusRatio(), Size(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ RoundRectRadiusRatio()

double PADSTACK::RoundRectRadiusRatio ( PCB_LAYER_ID aLayer) const

◆ SecondaryDrill() [1/2]

◆ SecondaryDrill() [2/2]

const DRILL_PROPS & PADSTACK::SecondaryDrill ( ) const
inline

Definition at line 339 of file padstack.h.

References m_secondaryDrill.

◆ Serialize()

◆ SetAnchorShape()

void PADSTACK::SetAnchorShape ( PAD_SHAPE aShape,
PCB_LAYER_ID aLayer )

◆ SetBackdrillEndLayer()

void PADSTACK::SetBackdrillEndLayer ( bool aTop,
PCB_LAYER_ID aLayer )

Definition at line 610 of file padstack.cpp.

References B_Cu, PADSTACK::DRILL_PROPS::end, F_Cu, m_secondaryDrill, and m_tertiaryDrill.

◆ SetBackdrillMode()

◆ SetBackdrillSize()

void PADSTACK::SetBackdrillSize ( bool aTop,
std::optional< int > aSize )

◆ SetChamferPositions()

void PADSTACK::SetChamferPositions ( int aPositions,
PCB_LAYER_ID aLayer )

◆ SetChamferRatio()

void PADSTACK::SetChamferRatio ( double aRatio,
PCB_LAYER_ID aLayer )

◆ SetCustomShapeInZoneMode()

void PADSTACK::SetCustomShapeInZoneMode ( CUSTOM_SHAPE_ZONE_MODE aM)
inline

Definition at line 379 of file padstack.h.

References m_customShapeInZoneMode.

◆ SetDrillShape()

void PADSTACK::SetDrillShape ( PAD_DRILL_SHAPE aShape)

Definition at line 896 of file padstack.cpp.

References m_drill.

◆ SetLayerSet()

void PADSTACK::SetLayerSet ( const LSET & aSet)
inline

Definition at line 311 of file padstack.h.

References m_layerSet.

Referenced by Deserialize().

◆ SetMode()

◆ SetOrientation()

void PADSTACK::SetOrientation ( EDA_ANGLE aAngle)
inline

Definition at line 329 of file padstack.h.

References m_orientation.

◆ SetRoundRectRadius()

void PADSTACK::SetRoundRectRadius ( double aRadius,
PCB_LAYER_ID aLayer )

Definition at line 957 of file padstack.cpp.

References SetRoundRectRadiusRatio(), Size(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ SetRoundRectRadiusRatio()

void PADSTACK::SetRoundRectRadiusRatio ( double aRatio,
PCB_LAYER_ID aLayer )

◆ SetShape()

◆ SetSize()

◆ SetThermalSpokeAngle()

void PADSTACK::SetThermalSpokeAngle ( EDA_ANGLE aAngle,
PCB_LAYER_ID aLayer = F_Cu )

◆ SetUnconnectedLayerMode()

◆ Shape()

◆ Similarity()

double PADSTACK::Similarity ( const PADSTACK & aOther) const

Return a measure of how likely the other object is to represent the same object.

The scale runs from 0.0 (definitely different objects) to 1.0 (same)

Definition at line 1352 of file padstack.cpp.

References PADSTACK().

Referenced by PAD::Similarity().

◆ Size()

const VECTOR2I & PADSTACK::Size ( PCB_LAYER_ID aLayer) const

◆ SolderMaskMargin() [1/2]

std::optional< int > & PADSTACK::SolderMaskMargin ( PCB_LAYER_ID aLayer = F_Cu)

◆ SolderMaskMargin() [2/2]

const std::optional< int > & PADSTACK::SolderMaskMargin ( PCB_LAYER_ID aLayer = F_Cu) const

◆ SolderPasteMargin() [1/2]

std::optional< int > & PADSTACK::SolderPasteMargin ( PCB_LAYER_ID aLayer = F_Cu)

◆ SolderPasteMargin() [2/2]

const std::optional< int > & PADSTACK::SolderPasteMargin ( PCB_LAYER_ID aLayer = F_Cu) const

◆ SolderPasteMarginRatio() [1/2]

std::optional< double > & PADSTACK::SolderPasteMarginRatio ( PCB_LAYER_ID aLayer = F_Cu)

◆ SolderPasteMarginRatio() [2/2]

const std::optional< double > & PADSTACK::SolderPasteMarginRatio ( PCB_LAYER_ID aLayer = F_Cu) const

◆ StartLayer()

PCB_LAYER_ID PADSTACK::StartLayer ( ) const

Definition at line 1365 of file padstack.cpp.

References m_drill.

Referenced by TUNING_PROFILE_PARAMETERS_USER_DEFINED::getPropagationDelay().

◆ TertiaryDrill() [1/2]

◆ TertiaryDrill() [2/2]

const DRILL_PROPS & PADSTACK::TertiaryDrill ( ) const
inline

Definition at line 342 of file padstack.h.

References m_tertiaryDrill.

◆ ThermalGap() [1/2]

std::optional< int > & PADSTACK::ThermalGap ( PCB_LAYER_ID aLayer = F_Cu)

◆ ThermalGap() [2/2]

const std::optional< int > & PADSTACK::ThermalGap ( PCB_LAYER_ID aLayer = F_Cu) const

Definition at line 1105 of file padstack.cpp.

References CopperLayer(), and PADSTACK::COPPER_LAYER_PROPS::thermal_gap.

◆ ThermalSpokeAngle()

EDA_ANGLE PADSTACK::ThermalSpokeAngle ( PCB_LAYER_ID aLayer = F_Cu) const

◆ ThermalSpokeWidth() [1/2]

std::optional< int > & PADSTACK::ThermalSpokeWidth ( PCB_LAYER_ID aLayer = F_Cu)

◆ ThermalSpokeWidth() [2/2]

const std::optional< int > & PADSTACK::ThermalSpokeWidth ( PCB_LAYER_ID aLayer = F_Cu) const

◆ TrapezoidDeltaSize() [1/2]

VECTOR2I & PADSTACK::TrapezoidDeltaSize ( PCB_LAYER_ID aLayer)

◆ TrapezoidDeltaSize() [2/2]

const VECTOR2I & PADSTACK::TrapezoidDeltaSize ( PCB_LAYER_ID aLayer) const

◆ UnconnectedLayerMode()

UNCONNECTED_LAYER_MODE PADSTACK::UnconnectedLayerMode ( ) const
inline

◆ UniqueLayers()

std::vector< PCB_LAYER_ID > PADSTACK::UniqueLayers ( ) const

Definition at line 1245 of file padstack.cpp.

References ForEachUniqueLayer().

Referenced by padNeedsUpdate().

◆ unpackCopperLayer()

◆ ZoneConnection() [1/2]

std::optional< ZONE_CONNECTION > & PADSTACK::ZoneConnection ( PCB_LAYER_ID aLayer = F_Cu)

◆ ZoneConnection() [2/2]

const std::optional< ZONE_CONNECTION > & PADSTACK::ZoneConnection ( PCB_LAYER_ID aLayer = F_Cu) const

Definition at line 1081 of file padstack.cpp.

References CopperLayer(), and PADSTACK::COPPER_LAYER_PROPS::zone_connection.

Member Data Documentation

◆ ALL_LAYERS

PCB_LAYER_ID PADSTACK::ALL_LAYERS = F_Cu
staticconstexpr

! Temporary layer identifier to identify code that is not padstack-aware

Definition at line 177 of file padstack.h.

Referenced by PCB_IO_IPC2581::addLocationNode(), PCB_IO_IPC2581::addPadStack(), EDA_DATA::PACKAGE::AddPin(), PCB_IO_IPC2581::addShape(), PCAD2KICAD::PCAD_PAD::AddToBoard(), PCAD2KICAD::PCAD_PAD::AddToFootprint(), FEATURES_MANAGER::AddViaDrillHole(), DIALOG_TRACK_VIA_PROPERTIES::afterPadstackModeChanged(), AR_MATRIX::AR_MATRIX(), BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), build_via_testpoints(), EDIT_TOOL::ChangeTrackWidth(), KI_TEST::CheckFpPad(), ALTIUM_PCB::ConvertFills6ToFootprintItemOnLayer(), ALTIUM_PCB::ConvertPads6ToFootprintItemOnCopper(), ALTIUM_PCB::ConvertShapeBasedRegions6ToFootprintItemOnLayer(), ALTIUM_PCB::ConvertVias6ToFootprintItem(), CopperLayer(), CopperLayer(), BACKDRILL_TEST_FIXTURE::CreateBackdrilledVia(), MICROWAVE_TOOL::createBaseFootprint(), PNS_KICAD_IFACE::createBoardItem(), MICROWAVE_TOOL::createFootprint(), BACKDRILL_TEST_FIXTURE::CreateFootprintWithPad(), MICROWAVE_TOOL::createMicrowaveInductor(), PCB_IO_EASYEDAPRO_PARSER::createPAD(), GENCAD_EXPORTER::createPadsShapesSection(), BACKDRILL_TEST_FIXTURE::CreatePostMachinedVia(), Deserialize(), doPushPadProperties(), DRAWING_TOOL::DrawVia(), EffectiveLayerFor(), PAD_TOOL::explodePad(), ForEachUniqueLayer(), PCB_IO_KICAD_SEXPR::format(), PLACE_FILE_EXPORTER::GenReportData(), CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad(), PAD::GetMsgPanelInfo(), PCB_VIA::GetMsgPanelInfo(), PAD::GetSizeX(), PAD::GetSizeY(), PCB_VIA::GetWidth(), hash_fp_item(), HYPERLYNX_PAD_STACK::HYPERLYNX_PAD_STACK(), HYPERLYNX_PAD_STACK::HYPERLYNX_PAD_STACK(), FEATURES_MANAGER::InitFeatureList(), ODB_NET_LIST::InitPadNetPoints(), isCopper(), isNullAperture(), DSN::isRoundKeepout(), FABMASTER::loadFootprints(), CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryCoppers(), CADSTAR_PCB_ARCHIVE_LOADER::loadNetVia(), PCB_IO_KICAD_LEGACY::loadPAD(), PCB_IO_KICAD_LEGACY::loadSETUP(), PCB_IO_EAGLE::loadSignals(), PCB_IO_KICAD_LEGACY::loadTrackList(), FABMASTER::loadVias(), DSN::SPECCTRA_DB::makePADSTACK(), PCB_POINT_EDITOR::makePoints(), DSN::SPECCTRA_DB::makeVIA(), mirrorPad(), PNS_KICAD_IFACE::modifyBoardItem(), DIALOG_FP_EDIT_PAD_TABLE::OnCellChanged(), DIALOG_TRACK_VIA_PROPERTIES::onEditLayerChanged(), PCB_IO_EAGLE::packageHole(), PCB_IO_EAGLE::packagePad(), PCB_IO_EAGLE::packageSMD(), PAD::PAD(), PAD_DESC::PAD_DESC(), PADSTACK(), PCB_IO_EASYEDAPRO_PARSER::ParseBoard(), GPCB_FPL_CACHE::parseFOOTPRINT(), PCB_IO_KICAD_SEXPR_PARSER::parsePAD(), PCB_IO_KICAD_SEXPR_PARSER::parsePAD_option(), PCB_IO_KICAD_SEXPR_PARSER::parsePCB_VIA(), PCB_IO_KICAD_SEXPR_PARSER::parseSetup(), PCB_IO_EASYEDA_PARSER::ParseToBoardItemContainer(), ALTIUM_PCB::ParseVias6Data(), PCB_VIA::PCB_VIA(), AR_MATRIX::PlacePad(), PAD_TOOL::PlacePad(), BRDITEMS_PLOTTER::PlotDrillMarks(), BRDITEMS_PLOTTER::PlotPad(), BRDITEMS_PLOTTER::PlotPadNumber(), OUTSET_ROUTINE::ProcessItem(), DIALOG_GLOBAL_EDIT_TEARDROPS::processItem(), RelevantShapeLayers(), DRC_TEST_PROVIDER_SOLDER_MASK::Run(), DRC_TEST_PROVIDER_VIA_DIAMETER::Run(), Serialize(), BOARD_DESIGN_SETTINGS::SetDefaultMasterPad(), PAD::SetSizeX(), PAD::SetSizeY(), PCB_VIA::SetWidth(), PNS_KICAD_IFACE_BASE::syncVia(), DRC_TEST_PROVIDER_SOLDER_MASK::testMaskBridges(), DIALOG_FP_EDIT_PAD_TABLE::TransferDataToWindow(), PCB_IO_EAGLE::transferPad(), unpackCopperLayer(), BOARD_EDITOR_CONTROL::ViaSizeDec(), BOARD_EDITOR_CONTROL::ViaSizeInc(), viaSort(), and DIALOG_GLOBAL_EDIT_TEARDROPS::visitItem().

◆ INNER_LAYERS

◆ m_backMaskProps

MASK_LAYER_PROPS PADSTACK::m_backMaskProps
private

! The overrides applied to back outer technical layers

Definition at line 534 of file padstack.h.

Referenced by BackOuterLayers(), BackOuterLayers(), operator=(), and operator==().

◆ m_backPostMachining

POST_MACHINING_PROPS PADSTACK::m_backPostMachining
private

Definition at line 556 of file padstack.h.

Referenced by BackPostMachining(), BackPostMachining(), operator=(), operator==(), and Serialize().

◆ m_copperProps

std::unordered_map<PCB_LAYER_ID, COPPER_LAYER_PROPS> PADSTACK::m_copperProps
private

! The properties applied to copper layers if they aren't overridden

Definition at line 528 of file padstack.h.

Referenced by CopperLayer(), CopperLayer(), EffectiveLayerFor(), ForEachUniqueLayer(), operator=(), and PADSTACK().

◆ m_customName

wxString PADSTACK::m_customName
private

! An override for the IPC-7351 padstack name

Definition at line 521 of file padstack.h.

Referenced by Name(), operator=(), and operator==().

◆ m_customShapeInZoneMode

CUSTOM_SHAPE_ZONE_MODE PADSTACK::m_customShapeInZoneMode
private

How to build the custom shape in zone, to create the clearance area: CUSTOM_SHAPE_ZONE_MODE::OUTLINE = use pad shape CUSTOM_SHAPE_ZONE_MODE::CONVEXHULL = use the convex hull of the pad shape.

Definition at line 543 of file padstack.h.

Referenced by CustomShapeInZoneMode(), operator=(), operator==(), PADSTACK(), and SetCustomShapeInZoneMode().

◆ m_drill

DRILL_PROPS PADSTACK::m_drill
private

!

The primary drill parameters, which also define the start and end layers for through-hole vias and pads (F_Cu to B_Cu for normal holes; a subset of layers for blind/buried vias)

Definition at line 547 of file padstack.h.

Referenced by Drill(), Drill(), DrillShape(), EndLayer(), IsCapped(), IsFilled(), operator=(), operator==(), PADSTACK(), Serialize(), SetBackdrillMode(), SetDrillShape(), and StartLayer().

◆ m_frontMaskProps

MASK_LAYER_PROPS PADSTACK::m_frontMaskProps
private

! The overrides applied to front outer technical layers

Definition at line 531 of file padstack.h.

Referenced by FrontOuterLayers(), FrontOuterLayers(), operator=(), and operator==().

◆ m_frontPostMachining

POST_MACHINING_PROPS PADSTACK::m_frontPostMachining
private

Definition at line 555 of file padstack.h.

Referenced by FrontPostMachining(), FrontPostMachining(), operator=(), operator==(), and Serialize().

◆ m_layerSet

LSET PADSTACK::m_layerSet
private

! The board layers that this padstack is active on

Definition at line 518 of file padstack.h.

Referenced by LayerSet(), LayerSet(), operator=(), operator==(), Serialize(), and SetLayerSet().

◆ m_mode

MODE PADSTACK::m_mode
private

! The copper layer variation mode this padstack is in

Definition at line 515 of file padstack.h.

Referenced by CopperLayer(), CopperLayer(), Deserialize(), EffectiveLayerFor(), ForEachUniqueLayer(), Mode(), operator=(), operator==(), PADSTACK(), RelevantShapeLayers(), Serialize(), SetMode(), and unpackCopperLayer().

◆ m_orientation

EDA_ANGLE PADSTACK::m_orientation
private

! The rotation of the pad relative to an outer reference frame

Definition at line 524 of file padstack.h.

Referenced by Deserialize(), GetOrientation(), operator=(), operator==(), PADSTACK(), Serialize(), and SetOrientation().

◆ m_parent

BOARD_ITEM* PADSTACK::m_parent
private

! The BOARD_ITEM this PADSTACK belongs to; will be used as the parent for owned shapes

Definition at line 512 of file padstack.h.

Referenced by AppendPrimitives(), PADSTACK(), PADSTACK(), and unpackCopperLayer().

◆ m_secondaryDrill

DRILL_PROPS PADSTACK::m_secondaryDrill
private

! Secondary drill, used to define back-drilling starting from the bottom side

Definition at line 550 of file padstack.h.

Referenced by GetBackdrillEndLayer(), GetBackdrillMode(), GetBackdrillSize(), operator=(), operator==(), PADSTACK(), SecondaryDrill(), SecondaryDrill(), Serialize(), SetBackdrillEndLayer(), SetBackdrillMode(), and SetBackdrillSize().

◆ m_tertiaryDrill

DRILL_PROPS PADSTACK::m_tertiaryDrill
private

! Tertiary drill, used to define back-drilling starting from the top side

Definition at line 553 of file padstack.h.

Referenced by GetBackdrillEndLayer(), GetBackdrillMode(), GetBackdrillSize(), operator=(), operator==(), PADSTACK(), Serialize(), SetBackdrillEndLayer(), SetBackdrillMode(), SetBackdrillSize(), TertiaryDrill(), and TertiaryDrill().

◆ m_unconnectedLayerMode

UNCONNECTED_LAYER_MODE PADSTACK::m_unconnectedLayerMode
private

The documentation for this class was generated from the following files: