7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-21 19:03:45 +00:00

pcbnew: distinguish between KEEPOUT and PLACEMENT rule areas in the DRC (ignore PLACEMENT for the moment)

This commit is contained in:
Tomasz Wlostowski 2024-02-02 00:22:07 +01:00
parent c4d5c99b42
commit 60ba72ad5c
3 changed files with 8 additions and 3 deletions

View File

@ -106,6 +106,9 @@ static bool isKeepoutZone( const BOARD_ITEM* aItem, bool aCheckFlags )
if( !zone->GetIsRuleArea() )
return false;
if( zone->GetRuleAreaType() != RULE_AREA_TYPE::KEEPOUT )
return false;
if( aCheckFlags )
{
if( !zone->GetDoNotAllowTracks()

View File

@ -171,7 +171,7 @@ void DRC_INTERACTIVE_COURTYARD_CLEARANCE::testCourtyardClearances()
for( ZONE* zone : m_board->Zones() )
{
if( !zone->GetIsRuleArea() || !zone->GetDoNotAllowFootprints() )
if( !zone->GetIsRuleArea() || zone->GetRuleAreaType() != RULE_AREA_TYPE::KEEPOUT || !zone->GetDoNotAllowFootprints() )
continue;
bool disallowFront = ( zone->GetLayerSet() & LSET::FrontMask() ).any();

View File

@ -90,7 +90,9 @@ bool DRC_TEST_PROVIDER_DISALLOW::Run()
{
ZONE* zone = dynamic_cast<ZONE*>( item );
if( zone && zone->GetIsRuleArea() && zone->GetDoNotAllowCopperPour() )
if( zone && zone->GetIsRuleArea()
&& zone->GetRuleAreaType() == RULE_AREA_TYPE::KEEPOUT
&& zone->GetDoNotAllowCopperPour() )
antiCopperKeepouts.push_back( zone );
else if( zone && zone->IsOnCopperLayer() )
copperZones.push_back( zone );
@ -260,7 +262,7 @@ bool DRC_TEST_PROVIDER_DISALLOW::Run()
{
ZONE* zone = dynamic_cast<ZONE*>( item );
if( zone && zone->GetIsRuleArea() )
if( zone && zone->GetIsRuleArea() && zone->GetRuleAreaType() == RULE_AREA_TYPE::KEEPOUT )
return true;
item->ClearFlags( HOLE_PROXY ); // Just in case