3dviewer: Show footprint board regardless of proj
The settings for the project in terms of visibility should not impact our ability to preview the 3d model of a footprint Fixes https://gitlab.com/kicad/code/kicad/issues/14246
This commit is contained in:
parent
5041bddc3b
commit
d7a6875b0b
|
@ -251,7 +251,8 @@ bool BOARD_ADAPTER::Is3dLayerEnabled( PCB_LAYER_ID aLayer ) const
|
||||||
|
|
||||||
case B_Cu:
|
case B_Cu:
|
||||||
case F_Cu:
|
case F_Cu:
|
||||||
return !m_board || m_board->IsLayerVisible( aLayer ) || m_Cfg->m_Render.realistic;
|
return !m_board || m_board->IsLayerVisible( aLayer ) || m_Cfg->m_Render.realistic
|
||||||
|
|| m_board->IsFootprintHolder();
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// the layer is an internal copper layer, used the visibility
|
// the layer is an internal copper layer, used the visibility
|
||||||
|
|
|
@ -56,14 +56,16 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
|
||||||
m_userUnits = aFrame->GetUserUnits();
|
m_userUnits = aFrame->GetUserUnits();
|
||||||
|
|
||||||
m_dummyBoard = new BOARD();
|
m_dummyBoard = new BOARD();
|
||||||
|
|
||||||
m_dummyBoard->SetProject( &aFrame->Prj(), true );
|
m_dummyBoard->SetProject( &aFrame->Prj(), true );
|
||||||
|
|
||||||
// This board will only be used to hold a footprint for viewing
|
// This board will only be used to hold a footprint for viewing
|
||||||
m_dummyBoard->SetBoardUse( BOARD_USE::FPHOLDER );
|
m_dummyBoard->SetBoardUse( BOARD_USE::FPHOLDER );
|
||||||
|
|
||||||
BOARD_DESIGN_SETTINGS parent_bds = aFrame->GetDesignSettings();
|
BOARD_DESIGN_SETTINGS parent_bds = aFrame->GetDesignSettings();
|
||||||
BOARD_DESIGN_SETTINGS dummy_bds = m_dummyBoard->GetDesignSettings();
|
BOARD_DESIGN_SETTINGS& dummy_bds = m_dummyBoard->GetDesignSettings();
|
||||||
dummy_bds.SetBoardThickness( parent_bds.GetBoardThickness() );
|
dummy_bds.SetBoardThickness( parent_bds.GetBoardThickness() );
|
||||||
|
dummy_bds.SetEnabledLayers( LSET::FrontMask() | LSET::BackMask() );
|
||||||
BOARD_STACKUP& dummy_board_stackup = m_dummyBoard->GetDesignSettings().GetStackupDescriptor();
|
BOARD_STACKUP& dummy_board_stackup = m_dummyBoard->GetDesignSettings().GetStackupDescriptor();
|
||||||
dummy_board_stackup.RemoveAll();
|
dummy_board_stackup.RemoveAll();
|
||||||
dummy_board_stackup.BuildDefaultStackupList( &dummy_bds, 2 );
|
dummy_board_stackup.BuildDefaultStackupList( &dummy_bds, 2 );
|
||||||
|
|
|
@ -1258,6 +1258,11 @@ BOX2I BOARD::ComputeBoundingBox( bool aBoardEdgesOnly ) const
|
||||||
bool showInvisibleText = IsElementVisible( LAYER_MOD_TEXT_INVISIBLE )
|
bool showInvisibleText = IsElementVisible( LAYER_MOD_TEXT_INVISIBLE )
|
||||||
&& PgmOrNull() && !PgmOrNull()->m_Printing;
|
&& PgmOrNull() && !PgmOrNull()->m_Printing;
|
||||||
|
|
||||||
|
// If the board is just showing a footprint, we want all footprint layers
|
||||||
|
// included in the bounding box
|
||||||
|
if( IsFootprintHolder() )
|
||||||
|
visible.set();
|
||||||
|
|
||||||
if( aBoardEdgesOnly )
|
if( aBoardEdgesOnly )
|
||||||
visible.set( Edge_Cuts );
|
visible.set( Edge_Cuts );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue