Loading change_log.txt +13 −2 Original line number Diff line number Diff line Loading @@ -5,6 +5,17 @@ Please add newer entries at the top, list the date and your name with email address. 2007-Dec-13 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ +pcbnew * surbrill.cpp's int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) was re-written to use the GENERAL_COLLECTOR, and the scanList is set to give pads a higher search priority than tracks, vias or pads. The objective was to use the pad if possible, rather than a track on a pad, so the pad can be sent to eeschema. Finding the track only (even though on a pad) would not send anything to eeschema. 2007-Dec-12 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ +pcbnew Loading pcbnew/collectors.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,16 @@ const KICAD_T GENERAL_COLLECTOR::PadsOrModules[] = { EOT }; const KICAD_T GENERAL_COLLECTOR::PadsOrTracks[] = { TYPEPAD, TYPEVIA, TYPETRACK, TYPEZONE, EOT }; const KICAD_T GENERAL_COLLECTOR::ModulesAndTheirItems[] = { TYPETEXTEMODULE, TYPEEDGEMODULE, Loading pcbnew/collectors.h +6 −0 Original line number Diff line number Diff line Loading @@ -226,6 +226,12 @@ public: */ static const KICAD_T PadsOrModules[]; /** * A scan list for PADs, TRACKs, VIAs, or ZONEs */ static const KICAD_T PadsOrTracks[]; /** * A scan list for MODULEs and their items (for Modedit) */ Loading pcbnew/surbrill.cpp +28 −18 Original line number Diff line number Diff line Loading @@ -9,6 +9,8 @@ #include "pcbnew.h" #include "protos.h" #include "collectors.h" #define Pad_fill (Pad_Fill_Item.State == RUN) Loading Loading @@ -88,32 +90,40 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) /* Localise track ou pad et met en surbrillance le net correspondant * Retourne le netcode, ou -1 si pas de net localis�*/ { TRACK* pt_piste; D_PAD* pt_pad; int masquelayer = g_TabOneLayerMask[GetScreen()->m_Active_Layer]; int code = -1; if( g_HightLigt_Status ) Hight_Light( DC ); pt_piste = Locate_Pistes( m_Pcb->m_Track, masquelayer, CURSEUR_OFF_GRILLE ); if( pt_piste ) { code = g_HightLigth_NetCode = pt_piste->GetNet(); Hight_Light( DC ); } else // use this scheme because of pad is higher priority than tracks in the // search, and finding a pad, instead of a track on a pad, // allows us to fire a message to eescema. GENERAL_COLLECTORS_GUIDE guide = GetCollectorsGuide(); // tweak the collector m_Collector->Collect( m_Pcb, GENERAL_COLLECTOR::PadsOrTracks, GetScreen()->RefPos( true ), guide ); BOARD_ITEM* item = (*m_Collector)[0]; if( item ) { pt_pad = Locate_Any_Pad( m_Pcb, CURSEUR_OFF_GRILLE ); if( pt_pad != NULL ) switch( item->Type() ) { code = g_HightLigth_NetCode = pt_pad->GetNet(); case TYPEPAD: g_HightLigth_NetCode = ((D_PAD*)item)->GetNet(); Hight_Light( DC ); SendMessageToEESCHEMA( item ); return g_HightLigth_NetCode; default: g_HightLigth_NetCode = ((TRACK*)item)->GetNet(); Hight_Light( DC ); SendMessageToEESCHEMA( pt_pad ); return g_HightLigth_NetCode; } } return code; return -1; // HitTest() failed. } Loading Loading
change_log.txt +13 −2 Original line number Diff line number Diff line Loading @@ -5,6 +5,17 @@ Please add newer entries at the top, list the date and your name with email address. 2007-Dec-13 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ +pcbnew * surbrill.cpp's int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) was re-written to use the GENERAL_COLLECTOR, and the scanList is set to give pads a higher search priority than tracks, vias or pads. The objective was to use the pad if possible, rather than a track on a pad, so the pad can be sent to eeschema. Finding the track only (even though on a pad) would not send anything to eeschema. 2007-Dec-12 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ +pcbnew Loading
pcbnew/collectors.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,16 @@ const KICAD_T GENERAL_COLLECTOR::PadsOrModules[] = { EOT }; const KICAD_T GENERAL_COLLECTOR::PadsOrTracks[] = { TYPEPAD, TYPEVIA, TYPETRACK, TYPEZONE, EOT }; const KICAD_T GENERAL_COLLECTOR::ModulesAndTheirItems[] = { TYPETEXTEMODULE, TYPEEDGEMODULE, Loading
pcbnew/collectors.h +6 −0 Original line number Diff line number Diff line Loading @@ -226,6 +226,12 @@ public: */ static const KICAD_T PadsOrModules[]; /** * A scan list for PADs, TRACKs, VIAs, or ZONEs */ static const KICAD_T PadsOrTracks[]; /** * A scan list for MODULEs and their items (for Modedit) */ Loading
pcbnew/surbrill.cpp +28 −18 Original line number Diff line number Diff line Loading @@ -9,6 +9,8 @@ #include "pcbnew.h" #include "protos.h" #include "collectors.h" #define Pad_fill (Pad_Fill_Item.State == RUN) Loading Loading @@ -88,32 +90,40 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) /* Localise track ou pad et met en surbrillance le net correspondant * Retourne le netcode, ou -1 si pas de net localis�*/ { TRACK* pt_piste; D_PAD* pt_pad; int masquelayer = g_TabOneLayerMask[GetScreen()->m_Active_Layer]; int code = -1; if( g_HightLigt_Status ) Hight_Light( DC ); pt_piste = Locate_Pistes( m_Pcb->m_Track, masquelayer, CURSEUR_OFF_GRILLE ); if( pt_piste ) { code = g_HightLigth_NetCode = pt_piste->GetNet(); Hight_Light( DC ); } else // use this scheme because of pad is higher priority than tracks in the // search, and finding a pad, instead of a track on a pad, // allows us to fire a message to eescema. GENERAL_COLLECTORS_GUIDE guide = GetCollectorsGuide(); // tweak the collector m_Collector->Collect( m_Pcb, GENERAL_COLLECTOR::PadsOrTracks, GetScreen()->RefPos( true ), guide ); BOARD_ITEM* item = (*m_Collector)[0]; if( item ) { pt_pad = Locate_Any_Pad( m_Pcb, CURSEUR_OFF_GRILLE ); if( pt_pad != NULL ) switch( item->Type() ) { code = g_HightLigth_NetCode = pt_pad->GetNet(); case TYPEPAD: g_HightLigth_NetCode = ((D_PAD*)item)->GetNet(); Hight_Light( DC ); SendMessageToEESCHEMA( item ); return g_HightLigth_NetCode; default: g_HightLigth_NetCode = ((TRACK*)item)->GetNet(); Hight_Light( DC ); SendMessageToEESCHEMA( pt_pad ); return g_HightLigth_NetCode; } } return code; return -1; // HitTest() failed. } Loading