Commit 1c754344 authored by dickelbeck's avatar dickelbeck

smt pads can be on ALL layers

parent ae3c3b6c
...@@ -287,62 +287,36 @@ PADSTACK* SPECCTRA_DB::makePADSTACK( BOARD* aBoard, D_PAD* aPad ) ...@@ -287,62 +287,36 @@ PADSTACK* SPECCTRA_DB::makePADSTACK( BOARD* aBoard, D_PAD* aPad )
int reportedLayers = 0; // how many in reported padstack int reportedLayers = 0; // how many in reported padstack
const char* layerName[NB_COPPER_LAYERS]; const char* layerName[NB_COPPER_LAYERS];
if( aPad->m_Attribut==PAD_SMD || aPad->m_Attribut==PAD_CONN ) uniqifier = '[';
{
// PAD_SMD and PAD_CONN are reported on each layer for which
// they are present.
uniqifier = '[';
if( aPad->IsOnLayer( LAYER_CMP_N ) ) bool onAllCopperLayers = ( (aPad->m_Masque_Layer & ALL_CU_LAYERS) == ALL_CU_LAYERS );
{
layerName[reportedLayers++] = layerIds[0].c_str();
uniqifier += 'T'; // T for top, could have used a layer index here alternatively
}
if( aPad->IsOnLayer( COPPER_LAYER_N ) )
{
int pcbLayerNdx = kicadLayer2pcb[COPPER_LAYER_N];
layerName[reportedLayers++] = layerIds[ pcbLayerNdx ].c_str();
uniqifier += 'B'; // B for bottom
}
uniqifier += ']'; if( onAllCopperLayers )
} uniqifier += 'A'; // A for all layers
else // through hole pad const int copperCount = aBoard->GetCopperLayerCount();
for( int layer=0; layer<copperCount; ++layer )
{ {
uniqifier = '['; int kilayer = pcbLayer2kicad[layer];
bool onAllCopperLayers = false; if( onAllCopperLayers || aPad->IsOnLayer( kilayer ) )
if( (aPad->m_Masque_Layer & ALL_CU_LAYERS) == ALL_CU_LAYERS )
{ {
onAllCopperLayers = true; layerName[reportedLayers++] = layerIds[layer].c_str();
uniqifier += 'A'; // A for all layers
}
const int copperCount = aBoard->GetCopperLayerCount(); if( !onAllCopperLayers )
for( int layer=0; layer<copperCount; ++layer )
{
int kilayer = pcbLayer2kicad[layer];
if( onAllCopperLayers || aPad->IsOnLayer( kilayer ) )
{ {
layerName[reportedLayers++] = layerIds[layer].c_str(); if( layer == 0 )
uniqifier += 'T';
if( !onAllCopperLayers ) else if( layer == copperCount-1 )
{ uniqifier += 'B';
if( layer == 0 ) else
uniqifier += 'T'; uniqifier += char('0' + layer); // layer index char
else if( layer == copperCount-1 )
uniqifier += 'B';
else
uniqifier += char('0' + layer); // layer index char
}
} }
} }
uniqifier += ']';
} }
uniqifier += ']';
POINT dsnOffset; POINT dsnOffset;
if( aPad->m_Offset.x || aPad->m_Offset.y ) if( aPad->m_Offset.x || aPad->m_Offset.y )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment