KiCad PCB EDA Suite
router_tool.cpp File Reference
#include <wx/hyperlink.h>
#include <advanced_config.h>
#include <functional>
#include <iomanip>
#include <utility>
#include <sstream>
#include <board.h>
#include <board_design_settings.h>
#include <board_item.h>
#include <footprint.h>
#include <fp_shape.h>
#include <pad.h>
#include <zone.h>
#include <pcb_edit_frame.h>
#include <pcbnew_id.h>
#include <dialogs/dialog_pns_settings.h>
#include <dialogs/dialog_pns_diff_pair_dimensions.h>
#include <dialogs/dialog_track_via_size.h>
#include <widgets/wx_infobar.h>
#include <widgets/appearance_controls.h>
#include <connectivity/connectivity_data.h>
#include <connectivity/connectivity_algo.h>
#include <confirm.h>
#include <bitmaps.h>
#include <string_utils.h>
#include <painter.h>
#include <tool/action_menu.h>
#include <tool/tool_manager.h>
#include <tool/tool_menu.h>
#include <tools/pcb_actions.h>
#include <tools/pcb_selection_tool.h>
#include <tools/pcb_grid_helper.h>
#include <tools/drc_tool.h>
#include <tools/zone_filler_tool.h>
#include <drc/drc_interactive_courtyard_clearance.h>
#include <project.h>
#include <project/project_file.h>
#include "router_tool.h"
#include "pns_segment.h"
#include "pns_router.h"
#include "pns_itemset.h"
#include "pns_logger.h"
#include "pns_placement_algo.h"
#include "pns_line_placer.h"
#include "pns_topology.h"
#include "pns_kicad_iface.h"
#include <ratsnest/ratsnest_data.h>
#include <plugins/kicad/pcb_plugin.h>

Go to the source code of this file.

Classes

class  TRACK_WIDTH_MENU
 
class  DIFF_PAIR_MENU
 

Macros

#define _(s)   s
 
#define _(s)   wxGetTranslation((s))
 
#define FORMAT_VALUE(x)   frame()->MessageTextFromValue( x )
 

Enumerations

enum  VIA_ACTION_FLAGS {
  VIA_MASK = 0x03 , VIA = 0x00 , BLIND_VIA = 0x01 , MICROVIA = 0x02 ,
  SELECT_LAYER = VIA_MASK + 1
}
 Flags used by via tool actions. More...
 

Functions

static VIATYPE getViaTypeFromFlags (int aFlags)
 
static PCB_LAYER_ID getTargetLayerFromEvent (const TOOL_EVENT &aEvent)
 

Variables

static const TOOL_ACTION ACT_EndTrack ("pcbnew.InteractiveRouter.EndTrack", AS_CONTEXT, WXK_END, "", _("Finish Track"), _("Stops laying the current track."), BITMAPS::checked_ok)
 
static const TOOL_ACTION ACT_PlaceThroughVia ("pcbnew.InteractiveRouter.PlaceVia", AS_CONTEXT, 'V', LEGACY_HK_NAME("Add Through Via"), _("Place Through Via"), _("Adds a through-hole via at the end of currently routed track."), BITMAPS::via, AF_NONE,(void *) VIA_ACTION_FLAGS::VIA)
 
static const TOOL_ACTION ACT_PlaceBlindVia ("pcbnew.InteractiveRouter.PlaceBlindVia", AS_CONTEXT, MD_ALT+MD_SHIFT+ 'V', LEGACY_HK_NAME("Add Blind/Buried Via"), _("Place Blind/Buried Via"), _("Adds a blind or buried via at the end of currently routed track."), BITMAPS::via_buried, AF_NONE,(void *) VIA_ACTION_FLAGS::BLIND_VIA)
 
static const TOOL_ACTION ACT_PlaceMicroVia ("pcbnew.InteractiveRouter.PlaceMicroVia", AS_CONTEXT, MD_CTRL+ 'V', LEGACY_HK_NAME("Add MicroVia"), _("Place Microvia"), _("Adds a microvia at the end of currently routed track."), BITMAPS::via_microvia, AF_NONE,(void *) VIA_ACTION_FLAGS::MICROVIA)
 
static const TOOL_ACTION ACT_SelLayerAndPlaceThroughVia ("pcbnew.InteractiveRouter.SelLayerAndPlaceVia", AS_CONTEXT, '<', LEGACY_HK_NAME("Select Layer and Add Through Via"), _("Select Layer and Place Through Via..."), _("Select a layer, then add a through-hole via at the end of currently routed track."), BITMAPS::select_w_layer, AF_NONE,(void *)(VIA_ACTION_FLAGS::VIA|VIA_ACTION_FLAGS::SELECT_LAYER))
 
static const TOOL_ACTION ACT_SelLayerAndPlaceBlindVia ("pcbnew.InteractiveRouter.SelLayerAndPlaceBlindVia", AS_CONTEXT, MD_ALT+'<', LEGACY_HK_NAME("Select Layer and Add Blind/Buried Via"), _("Select Layer and Place Blind/Buried Via..."), _("Select a layer, then add a blind or buried via at the end of currently routed track."), BITMAPS::select_w_layer, AF_NONE,(void *)(VIA_ACTION_FLAGS::BLIND_VIA|VIA_ACTION_FLAGS::SELECT_LAYER))
 
static const TOOL_ACTION ACT_SelLayerAndPlaceMicroVia ("pcbnew.InteractiveRouter.SelLayerAndPlaceMicroVia", AS_CONTEXT, 0, "", _("Select Layer and Place Micro Via..."), _("Select a layer, then add a micro via at the end of currently routed track."), BITMAPS::select_w_layer, AF_NONE,(void *)(VIA_ACTION_FLAGS::MICROVIA|VIA_ACTION_FLAGS::SELECT_LAYER))
 
static const TOOL_ACTION ACT_CustomTrackWidth ("pcbnew.InteractiveRouter.CustomTrackViaSize", AS_CONTEXT, 'Q', LEGACY_HK_NAME("Custom Track/Via Size"), _("Custom Track/Via Size..."), _("Shows a dialog for changing the track width and via size."), BITMAPS::width_track)
 
static const TOOL_ACTION ACT_SwitchPosture ("pcbnew.InteractiveRouter.SwitchPosture", AS_CONTEXT, '/', LEGACY_HK_NAME("Switch Track Posture"), _("Switch Track Posture"), _("Switches posture of the currently routed track."), BITMAPS::change_entry_orient)
 
static const TOOL_ACTION ACT_SwitchCornerMode ("pcbnew.InteractiveRouter.SwitchRounding", AS_CONTEXT, MD_CTRL+'/', "", _("Track Corner Mode"), _("Switches between sharp/rounded and 45°/90° corners when routing tracks."), BITMAPS::switch_corner_rounding_shape)
 

Macro Definition Documentation

◆ _ [1/2]

#define _ (   s)    s

Definition at line 180 of file router_tool.cpp.

◆ _ [2/2]

#define _ (   s)    wxGetTranslation((s))

Definition at line 180 of file router_tool.cpp.

◆ FORMAT_VALUE

#define FORMAT_VALUE (   x)    frame()->MessageTextFromValue( x )

Enumeration Type Documentation

◆ VIA_ACTION_FLAGS

Flags used by via tool actions.

Enumerator
VIA_MASK 
VIA 

Normal via.

BLIND_VIA 

blind/buried via

MICROVIA 

Microvia.

SELECT_LAYER 

Ask user to select layer before adding via.

Definition at line 85 of file router_tool.cpp.

86{
87 // Via type
88 VIA_MASK = 0x03,
89 VIA = 0x00,
90 BLIND_VIA = 0x01,
91 MICROVIA = 0x02,
92
93 // Select layer
95};
@ BLIND_VIA
blind/buried via
Definition: router_tool.cpp:90
@ SELECT_LAYER
Ask user to select layer before adding via.
Definition: router_tool.cpp:94
@ MICROVIA
Microvia.
Definition: router_tool.cpp:91
@ VIA_MASK
Definition: router_tool.cpp:88
@ VIA
Normal via.
Definition: router_tool.cpp:89

Function Documentation

◆ getTargetLayerFromEvent()

static PCB_LAYER_ID getTargetLayerFromEvent ( const TOOL_EVENT aEvent)
static

Definition at line 793 of file router_tool.cpp.

794{
795 if( aEvent.IsAction( &PCB_ACTIONS::layerTop ) )
796 return F_Cu;
797 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner1 ) )
798 return In1_Cu;
799 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner2 ) )
800 return In2_Cu;
801 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner3 ) )
802 return In3_Cu;
803 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner4 ) )
804 return In4_Cu;
805 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner5 ) )
806 return In5_Cu;
807 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner6 ) )
808 return In6_Cu;
809 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner7 ) )
810 return In7_Cu;
811 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner8 ) )
812 return In8_Cu;
813 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner9 ) )
814 return In9_Cu;
815 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner10 ) )
816 return In10_Cu;
817 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner11 ) )
818 return In11_Cu;
819 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner12 ) )
820 return In12_Cu;
821 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner13 ) )
822 return In13_Cu;
823 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner14 ) )
824 return In14_Cu;
825 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner15 ) )
826 return In15_Cu;
827 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner16 ) )
828 return In16_Cu;
829 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner17 ) )
830 return In17_Cu;
831 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner18 ) )
832 return In18_Cu;
833 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner19 ) )
834 return In19_Cu;
835 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner20 ) )
836 return In20_Cu;
837 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner21 ) )
838 return In21_Cu;
839 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner22 ) )
840 return In22_Cu;
841 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner23 ) )
842 return In23_Cu;
843 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner24 ) )
844 return In24_Cu;
845 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner25 ) )
846 return In25_Cu;
847 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner26 ) )
848 return In26_Cu;
849 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner27 ) )
850 return In27_Cu;
851 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner28 ) )
852 return In28_Cu;
853 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner29 ) )
854 return In29_Cu;
855 else if( aEvent.IsAction( &PCB_ACTIONS::layerInner30 ) )
856 return In30_Cu;
857 else if( aEvent.IsAction( &PCB_ACTIONS::layerBottom ) )
858 return B_Cu;
859 else
860 return UNDEFINED_LAYER;
861}
static TOOL_ACTION layerInner12
Definition: pcb_actions.h:302
static TOOL_ACTION layerInner8
Definition: pcb_actions.h:298
static TOOL_ACTION layerInner3
Definition: pcb_actions.h:293
static TOOL_ACTION layerInner2
Definition: pcb_actions.h:292
static TOOL_ACTION layerInner25
Definition: pcb_actions.h:315
static TOOL_ACTION layerInner24
Definition: pcb_actions.h:314
static TOOL_ACTION layerInner29
Definition: pcb_actions.h:319
static TOOL_ACTION layerInner11
Definition: pcb_actions.h:301
static TOOL_ACTION layerInner16
Definition: pcb_actions.h:306
static TOOL_ACTION layerInner26
Definition: pcb_actions.h:316
static TOOL_ACTION layerInner18
Definition: pcb_actions.h:308
static TOOL_ACTION layerInner14
Definition: pcb_actions.h:304
static TOOL_ACTION layerInner6
Definition: pcb_actions.h:296
static TOOL_ACTION layerInner22
Definition: pcb_actions.h:312
static TOOL_ACTION layerInner5
Definition: pcb_actions.h:295
static TOOL_ACTION layerInner20
Definition: pcb_actions.h:310
static TOOL_ACTION layerInner7
Definition: pcb_actions.h:297
static TOOL_ACTION layerInner27
Definition: pcb_actions.h:317
static TOOL_ACTION layerInner1
Definition: pcb_actions.h:291
static TOOL_ACTION layerInner10
Definition: pcb_actions.h:300
static TOOL_ACTION layerInner15
Definition: pcb_actions.h:305
static TOOL_ACTION layerInner17
Definition: pcb_actions.h:307
static TOOL_ACTION layerBottom
Definition: pcb_actions.h:321
static TOOL_ACTION layerInner19
Definition: pcb_actions.h:309
static TOOL_ACTION layerInner9
Definition: pcb_actions.h:299
static TOOL_ACTION layerInner30
Definition: pcb_actions.h:320
static TOOL_ACTION layerTop
Definition: pcb_actions.h:290
static TOOL_ACTION layerInner4
Definition: pcb_actions.h:294
static TOOL_ACTION layerInner13
Definition: pcb_actions.h:303
static TOOL_ACTION layerInner21
Definition: pcb_actions.h:311
static TOOL_ACTION layerInner23
Definition: pcb_actions.h:313
static TOOL_ACTION layerInner28
Definition: pcb_actions.h:318
bool IsAction(const TOOL_ACTION *aAction) const
Test if the event contains an action issued upon activation of the given TOOL_ACTION.
Definition: tool_event.cpp:88
@ In22_Cu
Definition: layer_ids.h:86
@ In11_Cu
Definition: layer_ids.h:75
@ In29_Cu
Definition: layer_ids.h:93
@ In30_Cu
Definition: layer_ids.h:94
@ In17_Cu
Definition: layer_ids.h:81
@ In9_Cu
Definition: layer_ids.h:73
@ In19_Cu
Definition: layer_ids.h:83
@ In7_Cu
Definition: layer_ids.h:71
@ In28_Cu
Definition: layer_ids.h:92
@ In26_Cu
Definition: layer_ids.h:90
@ B_Cu
Definition: layer_ids.h:95
@ In21_Cu
Definition: layer_ids.h:85
@ In23_Cu
Definition: layer_ids.h:87
@ In15_Cu
Definition: layer_ids.h:79
@ In2_Cu
Definition: layer_ids.h:66
@ In10_Cu
Definition: layer_ids.h:74
@ In4_Cu
Definition: layer_ids.h:68
@ UNDEFINED_LAYER
Definition: layer_ids.h:60
@ In16_Cu
Definition: layer_ids.h:80
@ In24_Cu
Definition: layer_ids.h:88
@ In1_Cu
Definition: layer_ids.h:65
@ In13_Cu
Definition: layer_ids.h:77
@ In8_Cu
Definition: layer_ids.h:72
@ In14_Cu
Definition: layer_ids.h:78
@ In12_Cu
Definition: layer_ids.h:76
@ In27_Cu
Definition: layer_ids.h:91
@ In6_Cu
Definition: layer_ids.h:70
@ In5_Cu
Definition: layer_ids.h:69
@ In3_Cu
Definition: layer_ids.h:67
@ In20_Cu
Definition: layer_ids.h:84
@ F_Cu
Definition: layer_ids.h:64
@ In18_Cu
Definition: layer_ids.h:82
@ In25_Cu
Definition: layer_ids.h:89

References B_Cu, F_Cu, In10_Cu, In11_Cu, In12_Cu, In13_Cu, In14_Cu, In15_Cu, In16_Cu, In17_Cu, In18_Cu, In19_Cu, In1_Cu, In20_Cu, In21_Cu, In22_Cu, In23_Cu, In24_Cu, In25_Cu, In26_Cu, In27_Cu, In28_Cu, In29_Cu, In2_Cu, In30_Cu, In3_Cu, In4_Cu, In5_Cu, In6_Cu, In7_Cu, In8_Cu, In9_Cu, TOOL_EVENT::IsAction(), PCB_ACTIONS::layerBottom, PCB_ACTIONS::layerInner1, PCB_ACTIONS::layerInner10, PCB_ACTIONS::layerInner11, PCB_ACTIONS::layerInner12, PCB_ACTIONS::layerInner13, PCB_ACTIONS::layerInner14, PCB_ACTIONS::layerInner15, PCB_ACTIONS::layerInner16, PCB_ACTIONS::layerInner17, PCB_ACTIONS::layerInner18, PCB_ACTIONS::layerInner19, PCB_ACTIONS::layerInner2, PCB_ACTIONS::layerInner20, PCB_ACTIONS::layerInner21, PCB_ACTIONS::layerInner22, PCB_ACTIONS::layerInner23, PCB_ACTIONS::layerInner24, PCB_ACTIONS::layerInner25, PCB_ACTIONS::layerInner26, PCB_ACTIONS::layerInner27, PCB_ACTIONS::layerInner28, PCB_ACTIONS::layerInner29, PCB_ACTIONS::layerInner3, PCB_ACTIONS::layerInner30, PCB_ACTIONS::layerInner4, PCB_ACTIONS::layerInner5, PCB_ACTIONS::layerInner6, PCB_ACTIONS::layerInner7, PCB_ACTIONS::layerInner8, PCB_ACTIONS::layerInner9, PCB_ACTIONS::layerTop, and UNDEFINED_LAYER.

Referenced by ROUTER_TOOL::handleLayerSwitch().

◆ getViaTypeFromFlags()

static VIATYPE getViaTypeFromFlags ( int  aFlags)
static

Definition at line 776 of file router_tool.cpp.

777{
778 switch( aFlags & VIA_ACTION_FLAGS::VIA_MASK )
779 {
781 return VIATYPE::THROUGH;
785 return VIATYPE::MICROVIA;
786 default:
787 wxASSERT_MSG( false, wxT( "Unhandled via type" ) );
788 return VIATYPE::THROUGH;
789 }
790}
@ BLIND_BURIED

References BLIND_BURIED, BLIND_VIA, MICROVIA, THROUGH, VIA, and VIA_MASK.

Referenced by ROUTER_TOOL::handleLayerSwitch().

Variable Documentation

◆ ACT_CustomTrackWidth

const TOOL_ACTION ACT_CustomTrackWidth("pcbnew.InteractiveRouter.CustomTrackViaSize", AS_CONTEXT, 'Q', LEGACY_HK_NAME("Custom Track/Via Size"), _("Custom Track/Via Size..."), _("Shows a dialog for changing the track width and via size."), BITMAPS::width_track) ( "pcbnew.InteractiveRouter.CustomTrackViaSize"  ,
AS_CONTEXT  ,
'Q ,
LEGACY_HK_NAME("Custom Track/Via Size")  ,
_("Custom Track/Via Size...")  ,
_("Shows a dialog for changing the track width and via size.")  ,
BITMAPS::width_track   
)
static

◆ ACT_EndTrack

const TOOL_ACTION ACT_EndTrack("pcbnew.InteractiveRouter.EndTrack", AS_CONTEXT, WXK_END, "", _("Finish Track"), _("Stops laying the current track."), BITMAPS::checked_ok) ( "pcbnew.InteractiveRouter.EndTrack"  ,
AS_CONTEXT  ,
WXK_END  ,
""  ,
_("Finish Track")  ,
_("Stops laying the current track.")  ,
BITMAPS::checked_ok   
)
static

◆ ACT_PlaceBlindVia

const TOOL_ACTION ACT_PlaceBlindVia("pcbnew.InteractiveRouter.PlaceBlindVia", AS_CONTEXT, MD_ALT+MD_SHIFT+'V', LEGACY_HK_NAME("Add Blind/Buried Via"), _("Place Blind/Buried Via"), _("Adds a blind or buried via at the end of currently routed track."), BITMAPS::via_buried, AF_NONE,(void *) VIA_ACTION_FLAGS::BLIND_VIA) ( "pcbnew.InteractiveRouter.PlaceBlindVia"  ,
AS_CONTEXT  ,
MD_ALT+MD_SHIFT+ 'V'  ,
LEGACY_HK_NAME("Add Blind/Buried Via")  ,
_("Place Blind/Buried Via")  ,
_("Adds a blind or buried via at the end of currently routed track.")  ,
BITMAPS::via_buried  ,
AF_NONE  ,
(void *) VIA_ACTION_FLAGS::BLIND_VIA   
)
static

◆ ACT_PlaceMicroVia

const TOOL_ACTION ACT_PlaceMicroVia("pcbnew.InteractiveRouter.PlaceMicroVia", AS_CONTEXT, MD_CTRL+'V', LEGACY_HK_NAME("Add MicroVia"), _("Place Microvia"), _("Adds a microvia at the end of currently routed track."), BITMAPS::via_microvia, AF_NONE,(void *) VIA_ACTION_FLAGS::MICROVIA) ( "pcbnew.InteractiveRouter.PlaceMicroVia"  ,
AS_CONTEXT  ,
MD_CTRL+ 'V'  ,
LEGACY_HK_NAME("Add MicroVia")  ,
_("Place Microvia")  ,
_("Adds a microvia at the end of currently routed track.")  ,
BITMAPS::via_microvia  ,
AF_NONE  ,
(void *) VIA_ACTION_FLAGS::MICROVIA   
)
static

◆ ACT_PlaceThroughVia

const TOOL_ACTION ACT_PlaceThroughVia("pcbnew.InteractiveRouter.PlaceVia", AS_CONTEXT, 'V', LEGACY_HK_NAME("Add Through Via"), _("Place Through Via"), _("Adds a through-hole via at the end of currently routed track."), BITMAPS::via, AF_NONE,(void *) VIA_ACTION_FLAGS::VIA) ( "pcbnew.InteractiveRouter.PlaceVia"  ,
AS_CONTEXT  ,
'V'  ,
LEGACY_HK_NAME("Add Through Via")  ,
_("Place Through Via")  ,
_("Adds a through-hole via at the end of currently routed track.")  ,
BITMAPS::via  ,
AF_NONE  ,
(void *) VIA_ACTION_FLAGS::VIA   
)
static

◆ ACT_SelLayerAndPlaceBlindVia

const TOOL_ACTION ACT_SelLayerAndPlaceBlindVia("pcbnew.InteractiveRouter.SelLayerAndPlaceBlindVia", AS_CONTEXT, MD_ALT+'<', LEGACY_HK_NAME("Select Layer and Add Blind/Buried Via"), _("Select Layer and Place Blind/Buried Via..."), _("Select a layer, then add a blind or buried via at the end of currently routed track."), BITMAPS::select_w_layer, AF_NONE,(void *)(VIA_ACTION_FLAGS::BLIND_VIA|VIA_ACTION_FLAGS::SELECT_LAYER)) ( "pcbnew.InteractiveRouter.SelLayerAndPlaceBlindVia"  ,
AS_CONTEXT   
)
static

◆ ACT_SelLayerAndPlaceMicroVia

const TOOL_ACTION ACT_SelLayerAndPlaceMicroVia("pcbnew.InteractiveRouter.SelLayerAndPlaceMicroVia", AS_CONTEXT, 0, "", _("Select Layer and Place Micro Via..."), _("Select a layer, then add a micro via at the end of currently routed track."), BITMAPS::select_w_layer, AF_NONE,(void *)(VIA_ACTION_FLAGS::MICROVIA|VIA_ACTION_FLAGS::SELECT_LAYER)) ( "pcbnew.InteractiveRouter.SelLayerAndPlaceMicroVia"  ,
AS_CONTEXT  ,
,
""  ,
_("Select Layer and Place Micro Via...")  ,
_("Select a layer, then add a micro via at the end of currently routed track.")  ,
BITMAPS::select_w_layer  ,
AF_NONE  ,
(void *)(VIA_ACTION_FLAGS::MICROVIA|VIA_ACTION_FLAGS::SELECT_LAYER  
)
static

◆ ACT_SelLayerAndPlaceThroughVia

const TOOL_ACTION ACT_SelLayerAndPlaceThroughVia("pcbnew.InteractiveRouter.SelLayerAndPlaceVia", AS_CONTEXT, '<', LEGACY_HK_NAME("Select Layer and Add Through Via"), _("Select Layer and Place Through Via..."), _("Select a layer, then add a through-hole via at the end of currently routed track."), BITMAPS::select_w_layer, AF_NONE,(void *)(VIA_ACTION_FLAGS::VIA|VIA_ACTION_FLAGS::SELECT_LAYER)) ( "pcbnew.InteractiveRouter.SelLayerAndPlaceVia"  ,
AS_CONTEXT   
)
static

◆ ACT_SwitchCornerMode

const TOOL_ACTION ACT_SwitchCornerMode("pcbnew.InteractiveRouter.SwitchRounding", AS_CONTEXT, MD_CTRL+'/', "", _("Track Corner Mode"), _("Switches between sharp/rounded and 45°/90° corners when routing tracks."), BITMAPS::switch_corner_rounding_shape) ( "pcbnew.InteractiveRouter.SwitchRounding"  ,
AS_CONTEXT  ,
MD_CTRL+'/'  ,
""  ,
_("Track Corner Mode")  ,
_("Switches between sharp/rounded and 45°/90° corners when routing tracks.")  ,
BITMAPS::switch_corner_rounding_shape   
)
static

◆ ACT_SwitchPosture

const TOOL_ACTION ACT_SwitchPosture("pcbnew.InteractiveRouter.SwitchPosture", AS_CONTEXT, '/', LEGACY_HK_NAME("Switch Track Posture"), _("Switch Track Posture"), _("Switches posture of the currently routed track."), BITMAPS::change_entry_orient) ( "pcbnew.InteractiveRouter.SwitchPosture"  ,
AS_CONTEXT  ,
'/'  ,
LEGACY_HK_NAME("Switch Track Posture")  ,
_("Switch Track Posture")  ,
_("Switches posture of the currently routed track.")  ,
BITMAPS::change_entry_orient   
)
static