3D viewer: catch an exception thrown when a fp library is not found in table,
when the 3D viewer try to rebuild the 3D shape of a footprint. Fixes #12524 https://gitlab.com/kicad/code/kicad/issues/12524
This commit is contained in:
parent
dc07ab9df1
commit
5b8cf96736
|
@ -2,7 +2,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
||||
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2015-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -928,6 +928,9 @@ void RENDER_3D_OPENGL::load3dModels( REPORTER* aStatusReporter )
|
|||
|
||||
if( m_boardAdapter.GetBoard()->GetProject() )
|
||||
{
|
||||
try
|
||||
{
|
||||
// FindRow() can throw an exception
|
||||
const FP_LIB_TABLE_ROW* fpRow =
|
||||
m_boardAdapter.GetBoard()->GetProject()->PcbFootprintLibs()->FindRow(
|
||||
libraryName, false );
|
||||
|
@ -935,6 +938,11 @@ void RENDER_3D_OPENGL::load3dModels( REPORTER* aStatusReporter )
|
|||
if( fpRow )
|
||||
footprintBasePath = fpRow->GetFullURI( true );
|
||||
}
|
||||
catch( ... )
|
||||
{
|
||||
// Do nothing if the libraryName is not found in lib table
|
||||
}
|
||||
}
|
||||
|
||||
for( const FP_3DMODEL& fp_model : footprint->Models() )
|
||||
{
|
||||
|
|
|
@ -1258,6 +1258,9 @@ void RENDER_3D_RAYTRACE::load3DModels( CONTAINER_3D& aDstContainer, bool aSkipMa
|
|||
wxString footprintBasePath = wxEmptyString;
|
||||
if( m_boardAdapter.GetBoard()->GetProject() )
|
||||
{
|
||||
try
|
||||
{
|
||||
// FindRow() can throw an exception
|
||||
const FP_LIB_TABLE_ROW* fpRow =
|
||||
m_boardAdapter.GetBoard()->GetProject()->PcbFootprintLibs()->FindRow(
|
||||
libraryName, false );
|
||||
|
@ -1265,6 +1268,11 @@ void RENDER_3D_RAYTRACE::load3DModels( CONTAINER_3D& aDstContainer, bool aSkipMa
|
|||
if( fpRow )
|
||||
footprintBasePath = fpRow->GetFullURI( true );
|
||||
}
|
||||
catch( ... )
|
||||
{
|
||||
// Do nothing if the libraryName is not found in lib table
|
||||
}
|
||||
}
|
||||
|
||||
while( sM != eM )
|
||||
{
|
||||
|
|
|
@ -219,7 +219,7 @@ TOOL_ACTION EDA_3D_ACTIONS::showSMD( "3DViewer.Control.attributesSMD",
|
|||
TOOL_ACTION EDA_3D_ACTIONS::showVirtual( "3DViewer.Control.attributesOther",
|
||||
AS_ACTIVE,
|
||||
'V', "",
|
||||
_( "Toggle Other 3D models" ), _( "Toggle 3D models for 'Other' type components" ),
|
||||
_( "Toggle unspecified 3D models" ), _( "Toggle 3D models for 'unspecified' type components" ),
|
||||
BITMAPS::show_other, AF_NONE );
|
||||
|
||||
TOOL_ACTION EDA_3D_ACTIONS::showNotInPosFile( "3DViewer.Control.attribute_not_in_posfile",
|
||||
|
|
Loading…
Reference in New Issue