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
 ! The features of a padstack that can vary on outer layers. More...
 
struct  SHAPE_PROPS
 ! The set of properties that define a pad's shape on a given layer More...
 

Public Types

enum class  TYPE { NORMAL , VIA , MOUNTING }
 ! Padstack type, mostly for IPC-7351 naming and attributes Note that TYPE::MOUNTING is probably not currently supported by KiCad More...
 
enum class  MODE { NORMAL , FRONT_INNER_BACK , CUSTOM }
 ! Copper geometry mode: controls how many unique copper layer shapes this padstack has More...
 
enum class  UNCONNECTED_LAYER_MODE { KEEP_ALL , REMOVE_ALL , REMOVE_EXCEPT_START_AND_END }
 ! Whether or not to remove the copper shape for unconnected layers More...
 
enum class  CUSTOM_SHAPE_ZONE_MODE { OUTLINE , CONVEXHULL }
 

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
 
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.
 
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)
 

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
 ! 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)
 
DRILL_PROPS m_secondaryDrill
 ! Secondary drill, used to define back-drilling
 

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 123 of file padstack.h.

Member Enumeration Documentation

◆ CUSTOM_SHAPE_ZONE_MODE

Enumerator
OUTLINE 
CONVEXHULL 

Definition at line 157 of file padstack.h.

◆ 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 136 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 128 of file padstack.h.

◆ UNCONNECTED_LAYER_MODE

! Whether or not to remove the copper shape for unconnected layers

Enumerator
KEEP_ALL 
REMOVE_ALL 
REMOVE_EXCEPT_START_AND_END 

Definition at line 150 of file padstack.h.

Constructor & Destructor Documentation

◆ PADSTACK() [1/2]

◆ ~PADSTACK()

virtual PADSTACK::~PADSTACK ( )
virtualdefault

◆ PADSTACK() [2/2]

PADSTACK::PADSTACK ( const PADSTACK aOther)

Definition at line 57 of file padstack.cpp.

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

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 1288 of file padstack.cpp.

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

Referenced by PAD::AddPrimitive(), PAD::AddPrimitivePoly(), AppendPrimitives(), 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 1295 of file padstack.cpp.

References AddPrimitive().

Referenced by ReplacePrimitives().

◆ BackOuterLayers() [1/2]

◆ BackOuterLayers() [2/2]

const MASK_LAYER_PROPS & PADSTACK::BackOuterLayers ( ) const
inline

Definition at line 316 of file padstack.h.

References m_backMaskProps.

◆ 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]

◆ Clearance() [2/2]

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

Definition at line 1168 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 526 of file padstack.cpp.

References ChamferPositions(), ChamferRatio(), BASE_SET::compare(), Drill(), DrillShape(), ForEachUniqueLayer(), LayerSet(), Offset(), Primitives(), RoundRectRadiusRatio(), Shape(), PADSTACK::DRILL_PROPS::size, Size(), TrapezoidDeltaSize(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by PAD::Compare().

◆ CopperLayer() [1/2]

◆ CopperLayer() [2/2]

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

Definition at line 1016 of file padstack.cpp.

References ALL_LAYERS, EffectiveLayerFor(), and m_copperProps.

◆ CustomShapeInZoneMode()

CUSTOM_SHAPE_ZONE_MODE PADSTACK::CustomShapeInZoneMode ( ) const
inline

Definition at line 326 of file padstack.h.

References m_customShapeInZoneMode.

Referenced by PAD::GetCustomShapeInZoneOpt(), and Similarity().

◆ DefaultThermalSpokeAngleForShape()

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

◆ Deserialize()

◆ Drill() [1/2]

◆ Drill() [2/2]

const DRILL_PROPS & PADSTACK::Drill ( ) const
inline

Definition at line 301 of file padstack.h.

References m_drill.

◆ DrillShape()

PAD_DRILL_SHAPE PADSTACK::DrillShape ( ) const

Definition at line 1055 of file padstack.cpp.

References m_drill, and PADSTACK::DRILL_PROPS::shape.

Referenced by Compare(), and Similarity().

◆ 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 922 of file padstack.cpp.

References ALL_LAYERS, LSET::AllCuMask(), B_Cu, BOARD_ITEM::BoardLayerSet(), LSET::Contains(), CUSTOM, F_Cu, FRONT_INNER_BACK, INNER_LAYERS, IsBackLayer(), IsCopperLayer(), IsFrontLayer(), LAYER_PAD_BK_NETNAMES, LAYER_PAD_FR_NETNAMES, LAYER_PAD_HOLEWALLS, LAYER_PAD_NETNAMES, LAYER_PAD_PLATEDHOLES, LAYER_PADS, LAYER_VIA_HOLES, LAYER_VIA_HOLEWALLS, m_parent, Mode(), and NORMAL.

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

◆ EndLayer()

PCB_LAYER_ID PADSTACK::EndLayer ( ) const

Definition at line 702 of file padstack.cpp.

References PADSTACK::DRILL_PROPS::end, and m_drill.

Referenced by Serialize().

◆ 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 708 of file padstack.cpp.

References B_Cu, CUSTOM, F_Cu, FRONT_INNER_BACK, In1_Cu, KI_FALLTHROUGH, m_backMaskProps, m_copperProps, m_frontMaskProps, m_mode, MAX_CU_LAYERS, and NORMAL.

Referenced by PAD::Flip().

◆ 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 313 of file padstack.h.

References m_frontMaskProps.

◆ GetOrientation()

EDA_ANGLE PADSTACK::GetOrientation ( ) const
inline

Definition at line 293 of file padstack.h.

References m_orientation.

Referenced by PAD::GetOrientation(), PAD::GetOrientationDegrees(), PAD::Rotate(), and Similarity().

◆ 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 1319 of file padstack.cpp.

References PADSTACK::MASK_LAYER_PROPS::has_solder_mask, IsBackLayer(), IsFrontLayer(), m_backMaskProps, and m_frontMaskProps.

◆ LayerSet() [1/2]

LSET & PADSTACK::LayerSet ( )
inline

Definition at line 275 of file padstack.h.

References m_layerSet.

◆ LayerSet() [2/2]

◆ Mode()

◆ Name()

wxString PADSTACK::Name ( ) const

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

Definition at line 689 of file padstack.cpp.

◆ Offset() [1/2]

◆ Offset() [2/2]

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

◆ operator!=()

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

Definition at line 255 of file padstack.h.

References operator==().

◆ operator=()

◆ operator==()

bool PADSTACK::operator== ( const PADSTACK aOther) const

◆ packCopperLayer()

◆ Primitives() [1/2]

◆ Primitives() [2/2]

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

Definition at line 1282 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 988 of file padstack.cpp.

References BOARD_ITEM::BoardCopperLayerCount(), CUSTOM, ForEachUniqueLayer(), m_mode, m_parent, 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 1303 of file padstack.cpp.

References AppendPrimitives(), and ClearPrimitives().

Referenced by operator=().

◆ RoundRectRadius()

int PADSTACK::RoundRectRadius ( PCB_LAYER_ID  aLayer) const

◆ RoundRectRadiusRatio()

◆ SecondaryDrill() [1/2]

DRILL_PROPS & PADSTACK::SecondaryDrill ( )
inline

Definition at line 303 of file padstack.h.

References m_secondaryDrill.

◆ SecondaryDrill() [2/2]

const DRILL_PROPS & PADSTACK::SecondaryDrill ( ) const
inline

Definition at line 304 of file padstack.h.

References m_secondaryDrill.

◆ Serialize()

◆ SetAnchorShape()

◆ 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 327 of file padstack.h.

References m_customShapeInZoneMode.

Referenced by PAD::SetCustomShapeInZoneOpt().

◆ SetDrillShape()

void PADSTACK::SetDrillShape ( PAD_DRILL_SHAPE  aShape)

Definition at line 1061 of file padstack.cpp.

References m_drill, and PADSTACK::DRILL_PROPS::shape.

◆ SetLayerSet()

void PADSTACK::SetLayerSet ( const LSET aSet)
inline

Definition at line 276 of file padstack.h.

References m_layerSet.

Referenced by Deserialize(), PAD::PAD(), and PAD::SetLayerSet().

◆ SetMode()

◆ SetOrientation()

void PADSTACK::SetOrientation ( EDA_ANGLE  aAngle)
inline

Definition at line 294 of file padstack.h.

References m_orientation, and EDA_ANGLE::Normalize().

Referenced by PAD::Rotate(), and PAD::SetOrientation().

◆ SetRoundRectRadius()

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

◆ SetRoundRectRadiusRatio()

◆ SetShape()

◆ SetSize()

◆ SetThermalSpokeAngle()

◆ 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 605 of file padstack.cpp.

References AnchorShape(), ChamferPositions(), ChamferRatio(), Clearance(), CustomShapeInZoneMode(), Drill(), DrillShape(), ForEachUniqueLayer(), GetOrientation(), LayerSet(), Offset(), Primitives(), RoundRectRadiusRatio(), Shape(), Size(), SolderMaskMargin(), SolderPasteMargin(), SolderPasteMarginRatio(), ThermalGap(), ThermalSpokeAngle(), ThermalSpokeWidth(), and ZoneConnection().

Referenced by PAD::Similarity().

◆ Size()

◆ SolderMaskMargin() [1/2]

◆ SolderMaskMargin() [2/2]

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

◆ SolderPasteMargin() [1/2]

◆ SolderPasteMargin() [2/2]

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

◆ SolderPasteMarginRatio() [1/2]

◆ 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 696 of file padstack.cpp.

References m_drill, and PADSTACK::DRILL_PROPS::start.

Referenced by PAD::Deserialize(), and Serialize().

◆ ThermalGap() [1/2]

◆ ThermalGap() [2/2]

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

Definition at line 1245 of file padstack.cpp.

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

◆ ThermalSpokeAngle()

◆ ThermalSpokeWidth() [1/2]

◆ ThermalSpokeWidth() [2/2]

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

◆ TrapezoidDeltaSize() [1/2]

◆ TrapezoidDeltaSize() [2/2]

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

◆ UnconnectedLayerMode()

◆ UniqueLayers()

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

◆ unpackCopperLayer()

◆ ZoneConnection() [1/2]

◆ ZoneConnection() [2/2]

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

Definition at line 1221 of file padstack.cpp.

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

Member Data Documentation

◆ ALL_LAYERS

constexpr PCB_LAYER_ID PADSTACK::ALL_LAYERS = F_Cu
staticconstexpr

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

Definition at line 144 of file padstack.h.

Referenced by PCB_IO_IPC2581::addLocationNode(), PCB_IO_IPC2581::addPadStack(), EDA_DATA::PACKAGE::AddPin(), PCB_IO_IPC2581::addShape(), PCB_IO_IPC2581::addSlotCavity(), 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_FIXTURE_TEST_CASE(), build_via_testpoints(), EDIT_TOOL::ChangeTrackWidth(), KI_TEST::CheckFpPad(), DRC_TEST_PROVIDER_SOLDER_MASK::checkMaskAperture(), ALTIUM_PCB::ConvertFills6ToFootprintItemOnLayer(), ALTIUM_PCB::ConvertPads6ToFootprintItemOnCopper(), ALTIUM_PCB::ConvertShapeBasedRegions6ToFootprintItemOnLayer(), ALTIUM_PCB::ConvertVias6ToFootprintItem(), CopperLayer(), MICROWAVE_TOOL::createBaseFootprint(), PNS_KICAD_IFACE::createBoardItem(), MICROWAVE_TOOL::createFootprint(), MICROWAVE_TOOL::createMicrowaveInductor(), PCB_IO_EASYEDAPRO_PARSER::createPAD(), GENCAD_EXPORTER::CreatePadsShapesSection(), Deserialize(), doPushPadProperties(), DRAWING_TOOL::DrawVia(), EffectiveLayerFor(), PAD_TOOL::explodePad(), 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(), PAD::ImportSettingsFrom(), 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_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(), PAD_TOOL::PlacePad(), AR_MATRIX::PlacePad(), BRDITEMS_PLOTTER::PlotDrillMarks(), BRDITEMS_PLOTTER::PlotPadNumber(), DIALOG_GLOBAL_EDIT_TEARDROPS::processItem(), OUTSET_ROUTINE::ProcessItem(), DRC_TEST_PROVIDER_ANNULAR_WIDTH::Run(), DRC_TEST_PROVIDER_SOLDER_MASK::Run(), DRC_TEST_PROVIDER_VIA_DIAMETER::Run(), Serialize(), BOARD_DESIGN_SETTINGS::SetDefaultMasterPad(), SetMode(), PAD::SetSizeX(), PAD::SetSizeY(), PCB_VIA::SetWidth(), PNS_KICAD_IFACE_BASE::syncVia(), DRC_TEST_PROVIDER_SOLDER_MASK::testItemAgainstItems(), DRC_TEST_PROVIDER_SOLDER_MASK::testMaskBridges(), DRC_TEST_PROVIDER_SOLDER_MASK::testMaskItemAgainstZones(), 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 473 of file padstack.h.

Referenced by BackOuterLayers(), FlipLayers(), IsTented(), operator=(), operator==(), SolderMaskMargin(), SolderPasteMargin(), and SolderPasteMarginRatio().

◆ 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 467 of file padstack.h.

Referenced by CopperLayer(), FlipLayers(), operator=(), PADSTACK(), and SetMode().

◆ m_customName

wxString PADSTACK::m_customName
private

! An override for the IPC-7351 padstack name

Definition at line 460 of file padstack.h.

Referenced by 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 482 of file padstack.h.

Referenced by CustomShapeInZoneMode(), operator=(), operator==(), 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 486 of file padstack.h.

Referenced by Drill(), DrillShape(), EndLayer(), operator=(), operator==(), PADSTACK(), SetDrillShape(), and StartLayer().

◆ m_frontMaskProps

MASK_LAYER_PROPS PADSTACK::m_frontMaskProps
private

! The overrides applied to front outer technical layers

Definition at line 470 of file padstack.h.

Referenced by FlipLayers(), FrontOuterLayers(), IsTented(), operator=(), operator==(), SolderMaskMargin(), SolderPasteMargin(), and SolderPasteMarginRatio().

◆ m_layerSet

LSET PADSTACK::m_layerSet
private

! The board layers that this padstack is active on

Definition at line 457 of file padstack.h.

Referenced by 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 454 of file padstack.h.

Referenced by Deserialize(), FlipLayers(), Mode(), operator=(), operator==(), 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 463 of file padstack.h.

Referenced by Deserialize(), GetOrientation(), operator=(), operator==(), 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 451 of file padstack.h.

Referenced by AddPrimitive(), EffectiveLayerFor(), ForEachUniqueLayer(), PADSTACK(), RelevantShapeLayers(), SetMode(), UniqueLayers(), and unpackCopperLayer().

◆ m_secondaryDrill

DRILL_PROPS PADSTACK::m_secondaryDrill
private

! Secondary drill, used to define back-drilling

Definition at line 489 of file padstack.h.

Referenced by operator=(), operator==(), PADSTACK(), and SecondaryDrill().

◆ m_unconnectedLayerMode

UNCONNECTED_LAYER_MODE PADSTACK::m_unconnectedLayerMode
private

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