Custom pad shape primitive not always visible
Fixes: lp:1750458 https://bugs.launchpad.net/kicad/+bug/1750458
This commit is contained in:
parent
a752f376a1
commit
79dac591c8
|
@ -238,35 +238,9 @@ bool D_PAD::buildCustomPadPolygon( SHAPE_POLY_SET* aMergedPolygon,
|
||||||
|
|
||||||
aux_polyset.Simplify( SHAPE_POLY_SET::PM_FAST );
|
aux_polyset.Simplify( SHAPE_POLY_SET::PM_FAST );
|
||||||
|
|
||||||
// Merge all polygons, if more than one, pick the largest (area-wise)
|
// Merge all polygons with the initial pad anchot shape
|
||||||
if( aux_polyset.OutlineCount() )
|
if( aux_polyset.OutlineCount() )
|
||||||
{
|
{
|
||||||
|
|
||||||
if( aux_polyset.OutlineCount() >= 2)
|
|
||||||
{
|
|
||||||
int bestOutline = 0;
|
|
||||||
double maxArea = 0.0;
|
|
||||||
|
|
||||||
for( int i = 0; i < aux_polyset.OutlineCount(); i++ )
|
|
||||||
{
|
|
||||||
double area = aux_polyset.COutline(i).Area();
|
|
||||||
|
|
||||||
if ( area > maxArea )
|
|
||||||
{
|
|
||||||
maxArea = area;
|
|
||||||
bestOutline = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( bestOutline != 0 )
|
|
||||||
aux_polyset.Polygon( 0 ) = aux_polyset.Polygon( bestOutline );
|
|
||||||
|
|
||||||
for (int i = 1; i < aux_polyset.OutlineCount(); i++ )
|
|
||||||
{
|
|
||||||
aux_polyset.DeletePolygon( i );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
aMergedPolygon->BooleanAdd( aux_polyset, SHAPE_POLY_SET::PM_FAST );
|
aMergedPolygon->BooleanAdd( aux_polyset, SHAPE_POLY_SET::PM_FAST );
|
||||||
aMergedPolygon->Fracture( SHAPE_POLY_SET::PM_FAST );
|
aMergedPolygon->Fracture( SHAPE_POLY_SET::PM_FAST );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue