7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-18 21:29:17 +00:00

Make polygon built by BOARD::GetBoardPolygonOutlines strictly simple.

It fixes issues in 3d viewer (crashes and incorrect 3D board outline in some cases)

Fixes: lp:167484
https://bugs.launchpad.net/kicad/+bug/1674844
This commit is contained in:
jean-pierre charras 2017-03-23 08:56:52 +01:00
parent 9fe780f1b3
commit 68b141dcb8
2 changed files with 10 additions and 1 deletions
3d-viewer/3d_canvas
pcbnew

View File

@ -484,6 +484,9 @@ void CINFO3D_VISU::createBoardPolygon()
wxLogMessage( errmsg );
}
// Be sure the polygon is strictly simple to avoid issues.
m_board_poly.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
Polygon_Calc_BBox_3DU( m_board_poly, m_board2dBBox3DU, m_biuTo3Dunits );
}

View File

@ -2881,5 +2881,11 @@ extern bool BuildBoardPolygonOutlines( BOARD* aBoard,
bool BOARD::GetBoardPolygonOutlines( SHAPE_POLY_SET& aOutlines,
wxString* aErrorText )
{
return BuildBoardPolygonOutlines( this, aOutlines, aErrorText );
bool success = BuildBoardPolygonOutlines( this, aOutlines, aErrorText );
// Make polygon strictly simple to avoid issues (especially in 3D viewer)
aOutlines.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
return success;
}