Handle alt pins in plot code.
Fixes https://gitlab.com/kicad/code/kicad/issues/11728
(cherry picked from commit e4798199c6
)
This commit is contained in:
parent
797cb2aaac
commit
16d63b7772
|
@ -886,7 +886,7 @@ void SCH_SYMBOL::GetLibPins( std::vector<LIB_PIN*>& aPinsList ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_PIN* SCH_SYMBOL::GetPin( LIB_PIN* aLibPin )
|
SCH_PIN* SCH_SYMBOL::GetPin( LIB_PIN* aLibPin ) const
|
||||||
{
|
{
|
||||||
wxASSERT( m_pinMap.count( aLibPin ) );
|
wxASSERT( m_pinMap.count( aLibPin ) );
|
||||||
return m_pins[ m_pinMap.at( aLibPin ) ].get();
|
return m_pins[ m_pinMap.at( aLibPin ) ].get();
|
||||||
|
@ -1877,10 +1877,32 @@ void SCH_SYMBOL::Plot( PLOTTER* aPlotter ) const
|
||||||
{
|
{
|
||||||
if( m_part )
|
if( m_part )
|
||||||
{
|
{
|
||||||
|
LIB_PINS libPins;
|
||||||
|
m_part->GetPins( libPins, GetUnit(), GetConvert() );
|
||||||
|
|
||||||
|
// Copy the source so we can re-orient and translate it.
|
||||||
|
LIB_SYMBOL tempSymbol( *m_part );
|
||||||
|
LIB_PINS tempPins;
|
||||||
|
tempSymbol.GetPins( tempPins, GetUnit(), GetConvert() );
|
||||||
|
|
||||||
|
// Copy the pin info from the symbol to the temp pins
|
||||||
|
for( unsigned i = 0; i < tempPins.size(); ++ i )
|
||||||
|
{
|
||||||
|
SCH_PIN* symbolPin = GetPin( libPins[ i ] );
|
||||||
|
LIB_PIN* tempPin = tempPins[ i ];
|
||||||
|
|
||||||
|
tempPin->SetName( symbolPin->GetShownName() );
|
||||||
|
tempPin->SetType( symbolPin->GetType() );
|
||||||
|
tempPin->SetShape( symbolPin->GetShape() );
|
||||||
|
|
||||||
|
if( symbolPin->IsDangling() )
|
||||||
|
tempPin->SetFlags( IS_DANGLING );
|
||||||
|
}
|
||||||
|
|
||||||
TRANSFORM temp = GetTransform();
|
TRANSFORM temp = GetTransform();
|
||||||
aPlotter->StartBlock( nullptr );
|
aPlotter->StartBlock( nullptr );
|
||||||
|
|
||||||
m_part->Plot( aPlotter, GetUnit(), GetConvert(), m_pos, temp );
|
tempSymbol.Plot( aPlotter, GetUnit(), GetConvert(), m_pos, temp );
|
||||||
|
|
||||||
for( SCH_FIELD field : m_fields )
|
for( SCH_FIELD field : m_fields )
|
||||||
field.Plot( aPlotter );
|
field.Plot( aPlotter );
|
||||||
|
|
|
@ -456,7 +456,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void GetLibPins( std::vector<LIB_PIN*>& aPinsList ) const;
|
void GetLibPins( std::vector<LIB_PIN*>& aPinsList ) const;
|
||||||
|
|
||||||
SCH_PIN* GetPin( LIB_PIN* aLibPin );
|
SCH_PIN* GetPin( LIB_PIN* aLibPin ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve a list of the SCH_PINs for the given sheet path.
|
* Retrieve a list of the SCH_PINs for the given sheet path.
|
||||||
|
|
Loading…
Reference in New Issue