Merge branch 'master' into 'master'

add feature to render capped vias

See merge request kicad/code/kicad!2237
This commit is contained in:
Rafa Fox 2025-09-11 19:08:26 +00:00
commit 28611118fc
5 changed files with 23 additions and 2 deletions

View File

@ -362,12 +362,13 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// Add a hole for this layer
layerHoleContainer->Add( new FILLED_CIRCLE_2D( via_center, hole_inner_radius + thickness,
*track ) );
*track ) );
}
else if( layer == layer_ids[0] ) // it only adds once the THT holes
{
// Add through hole object
m_TH_ODs.Add( new FILLED_CIRCLE_2D( via_center, hole_inner_radius + thickness, *track ) );
if ( !m_Cfg->m_CapVias )
m_TH_ODs.Add( new FILLED_CIRCLE_2D( via_center, hole_inner_radius + thickness, *track ) );
m_viaTH_ODs.Add( new FILLED_CIRCLE_2D( via_center, hole_inner_radius + thickness, *track ) );
if( cfg.clip_silk_on_via_annuli && ring_radius > 0.0 )

View File

@ -417,6 +417,8 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
m_params.emplace_back( new PARAM<int>( "camera.projection_mode",
&m_Camera.projection_mode, 1 ) );
m_params.emplace_back( new PARAM<bool>( "cap_vias",
&m_CapVias, false ) );
m_params.emplace_back( new PARAM<bool>( "use_stackup_colors",
&m_UseStackupColors, true ) );
m_params.emplace_back( new PARAM_LAYER_PRESET_3D( "layer_presets",

View File

@ -190,6 +190,7 @@ public:
RENDER_SETTINGS m_Render;
CAMERA_SETTINGS m_Camera;
bool m_CapVias;
bool m_UseStackupColors;
std::vector<LAYER_PRESET_3D> m_LayerPresets;
wxString m_CurrentPreset;

View File

@ -166,6 +166,20 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent, wx
m_viewportsLabel->SetFont( infoFont );
// Create display options
m_cbCapVias = new wxCheckBox( m_panelLayers, wxID_ANY,
_( "Cap vias" ) );
m_cbCapVias->SetFont( infoFont );
m_cbCapVias->Bind( wxEVT_CHECKBOX,
[this]( wxCommandEvent& aEvent )
{
EDA_3D_VIEWER_SETTINGS* cfg = m_frame->GetAdapter().m_Cfg;
cfg->m_CapVias = aEvent.IsChecked();
UpdateLayerCtls();
m_frame->NewDisplay( true );
} );
m_cbUseBoardStackupColors = new wxCheckBox( m_panelLayers, wxID_ANY,
_( "Use board stackup colors" ) );
m_cbUseBoardStackupColors->SetFont( infoFont );
@ -196,6 +210,7 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent, wx
m_frame->NewDisplay( true );
} );
m_panelLayersSizer->Add( m_cbCapVias, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5 );
m_panelLayersSizer->Add( m_cbUseBoardStackupColors, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5 );
m_panelLayersSizer->Add( m_cbUseBoardEditorCopperColors, 0,
wxEXPAND | wxALL, 5 );
@ -702,6 +717,7 @@ void APPEARANCE_CONTROLS_3D::UpdateLayerCtls()
if( cfg )
{
m_cbCapVias->SetValue( cfg->m_CapVias );
m_cbUseBoardStackupColors->SetValue( cfg->m_UseStackupColors );
m_cbUseBoardEditorCopperColors->SetValue( cfg->m_Render.use_board_editor_copper_colors );
}

View File

@ -190,6 +190,7 @@ private:
int m_pointSize;
wxColour m_layerPanelColour;
GRID_BITMAP_TOGGLE_RENDERER* m_toggleGridRenderer;
wxCheckBox* m_cbCapVias;
wxCheckBox* m_cbUseBoardStackupColors;
wxCheckBox* m_cbUseBoardEditorCopperColors;
};