Add GetLayerID method to BOARD.
This method is added for scripting purposes, to be able to query specific board layer names thru a board object. If no board specific layer name is found, it will fallback to standard layer names.
This commit is contained in:
parent
b1ace1607b
commit
1e2af7fed1
|
@ -314,6 +314,32 @@ bool BOARD::SetLayerDescr( LAYER_ID aIndex, const LAYER& aLayer )
|
|||
return false;
|
||||
}
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
const LAYER_ID BOARD::GetLayerID(wxString aLayerName) const
|
||||
{
|
||||
|
||||
// Look for the BOARD specific copper layer names
|
||||
for( LAYER_NUM layer = 0; layer < LAYER_ID_COUNT; ++layer )
|
||||
{
|
||||
if ( IsCopperLayer( layer ) &&
|
||||
( m_Layer[ layer ].m_name == aLayerName) )
|
||||
{
|
||||
return ToLAYER_ID( layer );
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise fall back to the system standard layer names
|
||||
for ( LAYER_NUM layer = 0; layer < LAYER_ID_COUNT; ++layer )
|
||||
{
|
||||
if ( GetStandardLayerName( ToLAYER_ID( layer ) ) == aLayerName )
|
||||
{
|
||||
return ToLAYER_ID( layer );
|
||||
}
|
||||
}
|
||||
|
||||
return UNDEFINED_LAYER;
|
||||
}
|
||||
|
||||
const wxString BOARD::GetLayerName( LAYER_ID aLayer ) const
|
||||
{
|
||||
|
@ -331,7 +357,6 @@ const wxString BOARD::GetLayerName( LAYER_ID aLayer ) const
|
|||
return GetStandardLayerName( aLayer );
|
||||
}
|
||||
|
||||
|
||||
bool BOARD::SetLayerName( LAYER_ID aLayer, const wxString& aLayerName )
|
||||
{
|
||||
if( !IsCopperLayer( aLayer ) )
|
||||
|
|
|
@ -621,6 +621,18 @@ public:
|
|||
*/
|
||||
void ConvertBrdLayerToPolygonalContours( LAYER_ID aLayer, CPOLYGONS_LIST& aOutlines );
|
||||
|
||||
/**
|
||||
* Function GetLayerID
|
||||
* returns the ID of a layer given by aLayerName. Copper layers may
|
||||
* have custom names.
|
||||
*
|
||||
* @param aLayerName = A layer name, like wxT("B.Cu"), etc.
|
||||
*
|
||||
* @return LAYER_ID - the layer id, which for copper layers may
|
||||
* be custom, else standard.
|
||||
*/
|
||||
const LAYER_ID GetLayerID( wxString aLayerName ) const;
|
||||
|
||||
/**
|
||||
* Function GetLayerName
|
||||
* returns the name of a layer given by aLayer. Copper layers may
|
||||
|
|
|
@ -8,6 +8,12 @@ import tempfile
|
|||
|
||||
from pcbnew import *
|
||||
|
||||
|
||||
BACK_COPPER = 'Back_Copper'
|
||||
B_CU = 'B.Cu'
|
||||
NEW_NAME = 'My_Fancy_Layer_Name'
|
||||
|
||||
|
||||
class TestBoardClass(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
@ -97,9 +103,30 @@ class TestBoardClass(unittest.TestCase):
|
|||
|
||||
os.remove(self.FILENAME)
|
||||
|
||||
def test_pcb_layer_name_set_get(self):
|
||||
pcb = BOARD()
|
||||
pcb.SetLayerName(31, BACK_COPPER)
|
||||
self.assertEqual(pcb.GetLayerName(31), BACK_COPPER)
|
||||
|
||||
def test_pcb_layer_name_set_get(self):
|
||||
pcb = BOARD()
|
||||
pcb.SetLayerName(31, BACK_COPPER)
|
||||
self.assertEqual(pcb.GetLayerName(31), BACK_COPPER)
|
||||
|
||||
def test_pcb_layer_id_get(self):
|
||||
pcb = BOARD()
|
||||
b_cu_id = pcb.GetLayerID(B_CU)
|
||||
pcb.SetLayerName(b_cu_id, NEW_NAME)
|
||||
|
||||
# ensure we can get the ID for the new name
|
||||
self.assertEqual(pcb.GetLayerID(NEW_NAME), b_cu_id)
|
||||
|
||||
# ensure we can get to the ID via the STD name too
|
||||
self.assertEqual(pcb.GetLayerID(B_CU), b_cu_id)
|
||||
|
||||
#def test_interactive(self):
|
||||
# code.interact(local=locals())
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue