/* Used after a track change (delete a track ou add a track) * Connections to pads are recalculated * Note also aFirstTrack (and aLastTrack ) can be NULL */ void CONNECTIONS::Build_CurrNet_SubNets_Connections( TRACK* aFirstTrack, TRACK* aLastTrack, int aNetcode ) { m_firstTrack = aFirstTrack; // The first track used to build m_Candidates m_lastTrack = aLastTrack; // The last track used to build m_Candidates // Pads subnets are expected already cleared, because this function // does not know the full list of pads BuildTracksCandidatesList( aFirstTrack, aLastTrack ); TRACK* curr_track; for( curr_track = aFirstTrack; curr_track != NULL; curr_track = curr_track->Next() ) { // Clear track subnet id (Pads subnets are cleared outside this function) curr_track->SetSubNet( 0 ); curr_track->m_TracksConnected.clear(); curr_track->m_PadsConnected.clear(); // Update connections between tracks: SearchConnectedTracks( curr_track ); curr_track->m_TracksConnected = m_connected; if( curr_track == aLastTrack ) break; } // Update connections between tracks and pads BuildPadsList( aNetcode ); SearchTracksConnectedToPads(); // Update connections between intersecting pads (no tracks) SearchConnectionsPadsToIntersectingPads(); // Creates sub nets (clusters) for the current net: Propagate_SubNets(); }
TRACKS_CLEANER::TRACKS_CLEANER( BOARD * aPcb ): CONNECTIONS( aPcb ) { m_Brd = aPcb; // Build connections info BuildPadsList(); buildTrackConnectionInfo(); }
TRACKS_CLEANER::TRACKS_CLEANER( BOARD * aPcb ): CONNECTIONS( aPcb ) { m_Brd = aPcb; m_deleteUnconnectedTracks = false; m_mergeSegments = false; // Build connections info BuildPadsList(); buildTrackConnectionInfo(); }