Fix missing change for GetPath()
GetPath() returns the sheetpath for each component. The component KIIDs for all units are stored in m_kiids, reachable by GetKIIDs(). We no longer assume a single unit for the component but store all units in the single COMPONENT for matching reference Fixes https://gitlab.com/kicad/code/kicad/issues/7658
This commit is contained in:
parent
bac7b3e77a
commit
d3cf97847e
|
@ -528,14 +528,15 @@ void CVPCB_MAINFRAME::AssociateFootprint( const CVPCB_ASSOCIATION& aAssociation,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const KIID& id = component->GetPath().back();
|
const KIID& id = component->GetKIIDs().front();
|
||||||
|
|
||||||
// Set new footprint to all instances of the selected component
|
// Set new footprint to all instances of the selected component
|
||||||
for( unsigned int idx : GetComponentIndices() )
|
for( unsigned int idx : GetComponentIndices() )
|
||||||
{
|
{
|
||||||
COMPONENT* candidate = m_netlist.GetComponent( idx );
|
COMPONENT* candidate = m_netlist.GetComponent( idx );
|
||||||
|
const std::vector<KIID>& kiids = candidate->GetKIIDs();
|
||||||
|
|
||||||
if( candidate->GetPath().back() == id )
|
if( std::find( kiids.begin(), kiids.end(), id ) != kiids.end() )
|
||||||
{
|
{
|
||||||
// Set the new footprint
|
// Set the new footprint
|
||||||
candidate->SetFPID( fpid );
|
candidate->SetFPID( fpid );
|
||||||
|
|
Loading…
Reference in New Issue