Browse Source

Fix logic error when filling zones.

Fixes https://gitlab.com/kicad/code/kicad/issues/12542
7.0
Jeff Young 3 years ago
parent
commit
b6efb88ee9
  1. 16
      pcbnew/pcb_expr_evaluator.cpp

16
pcbnew/pcb_expr_evaluator.cpp

@ -714,13 +714,23 @@ static void enclosedByAreaFunc( LIBEVAL::CONTEXT* aCtx, void* self )
return i->second;
SHAPE_POLY_SET itemShape;
bool enclosedByArea;
item->TransformShapeWithClearanceToPolygon( itemShape, layer, 0,
maxError, ERROR_OUTSIDE );
itemShape.BooleanSubtract( *aArea->Outline(), SHAPE_POLY_SET::PM_FAST );
bool enclosedByArea = itemShape.IsEmpty();
if( itemShape.IsEmpty() )
{
// If it's already empty then our test will have no meaning.
enclosedByArea = false;
}
else
{
itemShape.BooleanSubtract( *aArea->Outline(),
SHAPE_POLY_SET::PM_FAST );
enclosedByArea = itemShape.IsEmpty();
}
board->m_EnclosedByAreaCache[ key ] = enclosedByArea;

Loading…
Cancel
Save