Rename "Keepout" to "Rule Area"

These objects can now be used in advanced DRC rules and
not just for keeping things out.  Also remove the restriction
that at least one of the "basic" keepout rules must be set,
so that these areas can be used for more advanced rules.
This commit is contained in:
Jon Evans 2020-09-21 19:32:07 -04:00
parent 6ee866ba6e
commit 18e17abd6a
43 changed files with 217 additions and 158 deletions

View File

@ -109,8 +109,8 @@ set( PCBNEW_DIALOGS
dialogs/dialog_graphic_item_properties_base.cpp dialogs/dialog_graphic_item_properties_base.cpp
dialogs/dialog_import_settings.cpp dialogs/dialog_import_settings.cpp
dialogs/dialog_import_settings_base.cpp dialogs/dialog_import_settings_base.cpp
dialogs/dialog_keepout_area_properties.cpp dialogs/dialog_rule_area_properties.cpp
dialogs/dialog_keepout_area_properties_base.cpp dialogs/dialog_rule_area_properties_base.cpp
dialogs/dialog_layer_selection_base.cpp dialogs/dialog_layer_selection_base.cpp
dialogs/dialog_move_exact.cpp dialogs/dialog_move_exact.cpp
dialogs/dialog_move_exact_base.cpp dialogs/dialog_move_exact_base.cpp

View File

@ -58,12 +58,12 @@ ZONE_CONTAINER::ZONE_CONTAINER( BOARD_ITEM_CONTAINER* aParent, bool aInModule )
m_hatchBorderAlgorithm = 1; // 0 = use zone min thickness; 1 = use hatch width m_hatchBorderAlgorithm = 1; // 0 = use zone min thickness; 1 = use hatch width
m_priority = 0; m_priority = 0;
m_cornerSmoothingType = ZONE_SETTINGS::SMOOTHING_NONE; m_cornerSmoothingType = ZONE_SETTINGS::SMOOTHING_NONE;
SetIsKeepout( aInModule ? true : false ); // Zones living in modules have the keepout option. SetIsRuleArea( aInModule ? true : false ); // Zones living in modules have the rule area option
SetDoNotAllowCopperPour( false ); // has meaning only if m_isKeepout == true SetDoNotAllowCopperPour( false ); // has meaning only if m_isRuleArea == true
SetDoNotAllowVias( true ); // has meaning only if m_isKeepout == true SetDoNotAllowVias( true ); // has meaning only if m_isRuleArea == true
SetDoNotAllowTracks( true ); // has meaning only if m_isKeepout == true SetDoNotAllowTracks( true ); // has meaning only if m_isRuleArea == true
SetDoNotAllowPads( true ); // has meaning only if m_isKeepout == true SetDoNotAllowPads( true ); // has meaning only if m_isRuleArea == true
SetDoNotAllowFootprints( false ); // has meaning only if m_isKeepout == true SetDoNotAllowFootprints( false ); // has meaning only if m_isRuleArea == true
m_cornerRadius = 0; m_cornerRadius = 0;
SetLocalFlags( 0 ); // flags tempoarry used in zone calculations SetLocalFlags( 0 ); // flags tempoarry used in zone calculations
m_Poly = new SHAPE_POLY_SET(); // Outlines m_Poly = new SHAPE_POLY_SET(); // Outlines
@ -120,7 +120,7 @@ void ZONE_CONTAINER::InitDataFromSrcInCopyCtor( const ZONE_CONTAINER& aZone )
m_zoneName = aZone.m_zoneName; m_zoneName = aZone.m_zoneName;
SetLayerSet( aZone.GetLayerSet() ); SetLayerSet( aZone.GetLayerSet() );
m_priority = aZone.m_priority; m_priority = aZone.m_priority;
m_isKeepout = aZone.m_isKeepout; m_isRuleArea = aZone.m_isRuleArea;
m_doNotAllowCopperPour = aZone.m_doNotAllowCopperPour; m_doNotAllowCopperPour = aZone.m_doNotAllowCopperPour;
m_doNotAllowVias = aZone.m_doNotAllowVias; m_doNotAllowVias = aZone.m_doNotAllowVias;
@ -241,9 +241,9 @@ void ZONE_CONTAINER::SetLayer( PCB_LAYER_ID aLayer )
void ZONE_CONTAINER::SetLayerSet( LSET aLayerSet ) void ZONE_CONTAINER::SetLayerSet( LSET aLayerSet )
{ {
if( GetIsKeepout() ) if( GetIsRuleArea() )
{ {
// Keepouts can only exist on copper layers // Rule areas can only exist on copper layers
aLayerSet &= LSET::AllCuMask(); aLayerSet &= LSET::AllCuMask();
} }
@ -459,7 +459,7 @@ bool ZONE_CONTAINER::HitTest( const EDA_RECT& aRect, bool aContained, int aAccur
int ZONE_CONTAINER::GetLocalClearance( wxString* aSource ) const int ZONE_CONTAINER::GetLocalClearance( wxString* aSource ) const
{ {
if( m_isKeepout ) if( m_isRuleArea )
return 0; return 0;
if( aSource ) if( aSource )
@ -472,9 +472,9 @@ int ZONE_CONTAINER::GetLocalClearance( wxString* aSource ) const
bool ZONE_CONTAINER::HitTestFilledArea( PCB_LAYER_ID aLayer, const wxPoint &aRefPos, bool ZONE_CONTAINER::HitTestFilledArea( PCB_LAYER_ID aLayer, const wxPoint &aRefPos,
int aAccuracy ) const int aAccuracy ) const
{ {
// Keepouts have no filled area, but it's generally nice to treat their interior as if it were // Rule areas have no filled area, but it's generally nice to treat their interior as if it were
// filled so that people don't have to select keepouts by their outline (which is min-width) // filled so that people don't have to select them by their outline (which is min-width)
if( GetIsKeepout() ) if( GetIsRuleArea() )
return m_Poly->Contains( VECTOR2I( aRefPos.x, aRefPos.y ), -1, aAccuracy ); return m_Poly->Contains( VECTOR2I( aRefPos.x, aRefPos.y ), -1, aAccuracy );
if( !m_FilledPolysList.count( aLayer ) ) if( !m_FilledPolysList.count( aLayer ) )
@ -515,8 +515,8 @@ void ZONE_CONTAINER::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PA
EDA_UNITS units = aFrame->GetUserUnits(); EDA_UNITS units = aFrame->GetUserUnits();
wxString msg, msg2; wxString msg, msg2;
if( GetIsKeepout() ) if( GetIsRuleArea() )
msg = _( "Keepout Area" ); msg = _( "Rule Area" );
else if( IsOnCopperLayer() ) else if( IsOnCopperLayer() )
msg = _( "Copper Zone" ); msg = _( "Copper Zone" );
else else
@ -529,7 +529,7 @@ void ZONE_CONTAINER::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PA
aList.emplace_back( _( "Type" ), msg, DARKCYAN ); aList.emplace_back( _( "Type" ), msg, DARKCYAN );
if( GetIsKeepout() ) if( GetIsRuleArea() )
{ {
msg.Empty(); msg.Empty();
@ -548,7 +548,8 @@ void ZONE_CONTAINER::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PA
if( GetDoNotAllowFootprints() ) if( GetDoNotAllowFootprints() )
AccumulateDescription( msg, _( "No footprints" ) ); AccumulateDescription( msg, _( "No footprints" ) );
aList.emplace_back( MSG_PANEL_ITEM( _( "Keepout" ), msg, RED ) ); if( !msg.IsEmpty() )
aList.emplace_back( MSG_PANEL_ITEM( _( "Restrictions" ), msg, RED ) );
} }
else if( IsOnCopperLayer() ) else if( IsOnCopperLayer() )
{ {
@ -716,7 +717,7 @@ void ZONE_CONTAINER::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
Mirror( aCentre, aFlipLeftRight ); Mirror( aCentre, aFlipLeftRight );
int copperLayerCount = GetBoard()->GetCopperLayerCount(); int copperLayerCount = GetBoard()->GetCopperLayerCount();
if( GetIsKeepout() ) if( GetIsRuleArea() )
SetLayerSet( FlipLayerMask( GetLayerSet(), copperLayerCount ) ); SetLayerSet( FlipLayerMask( GetLayerSet(), copperLayerCount ) );
else else
SetLayer( FlipLayer( GetLayer(), copperLayerCount ) ); SetLayer( FlipLayer( GetLayer(), copperLayerCount ) );
@ -842,8 +843,8 @@ wxString ZONE_CONTAINER::GetSelectMenuText( EDA_UNITS aUnits ) const
if( m_CornerSelection != nullptr && m_CornerSelection->m_contour > 0 ) if( m_CornerSelection != nullptr && m_CornerSelection->m_contour > 0 )
text << wxT( " " ) << _( "(Cutout)" ); text << wxT( " " ) << _( "(Cutout)" );
if( GetIsKeepout() ) if( GetIsRuleArea() )
text << wxT( " " ) << _( "(Keepout)" ); text << wxT( " " ) << _( "(Rule Area)" );
else else
text << GetNetnameMsg(); text << GetNetnameMsg();
@ -1129,7 +1130,7 @@ void ZONE_CONTAINER::GetInteractingZones( PCB_LAYER_ID aLayer,
if( !candidate->GetLayerSet().test( aLayer ) ) if( !candidate->GetLayerSet().test( aLayer ) )
continue; continue;
if( candidate->GetIsKeepout() ) if( candidate->GetIsRuleArea() )
continue; continue;
if( candidate->GetNetCode() != GetNetCode() ) if( candidate->GetNetCode() != GetNetCode() )

View File

@ -719,16 +719,16 @@ public:
EDA_ITEM* Clone() const override; EDA_ITEM* Clone() const override;
/** /**
* Accessors to parameters used in Keepout zones: * Accessors to parameters used in Rule Area zones:
*/ */
bool GetIsKeepout() const { return m_isKeepout; } bool GetIsRuleArea() const { return m_isRuleArea; }
bool GetDoNotAllowCopperPour() const { return m_doNotAllowCopperPour; } bool GetDoNotAllowCopperPour() const { return m_doNotAllowCopperPour; }
bool GetDoNotAllowVias() const { return m_doNotAllowVias; } bool GetDoNotAllowVias() const { return m_doNotAllowVias; }
bool GetDoNotAllowTracks() const { return m_doNotAllowTracks; } bool GetDoNotAllowTracks() const { return m_doNotAllowTracks; }
bool GetDoNotAllowPads() const { return m_doNotAllowPads; } bool GetDoNotAllowPads() const { return m_doNotAllowPads; }
bool GetDoNotAllowFootprints() const { return m_doNotAllowFootprints; } bool GetDoNotAllowFootprints() const { return m_doNotAllowFootprints; }
void SetIsKeepout( bool aEnable ) { m_isKeepout = aEnable; } void SetIsRuleArea( bool aEnable ) {m_isRuleArea = aEnable; }
void SetDoNotAllowCopperPour( bool aEnable ) { m_doNotAllowCopperPour = aEnable; } void SetDoNotAllowCopperPour( bool aEnable ) { m_doNotAllowCopperPour = aEnable; }
void SetDoNotAllowVias( bool aEnable ) { m_doNotAllowVias = aEnable; } void SetDoNotAllowVias( bool aEnable ) { m_doNotAllowVias = aEnable; }
void SetDoNotAllowTracks( bool aEnable ) { m_doNotAllowTracks = aEnable; } void SetDoNotAllowTracks( bool aEnable ) { m_doNotAllowTracks = aEnable; }
@ -844,7 +844,7 @@ protected:
/* A zone outline can be a keepout zone. /* A zone outline can be a keepout zone.
* It will be never filled, and DRC should test for pads, tracks and vias * It will be never filled, and DRC should test for pads, tracks and vias
*/ */
bool m_isKeepout; bool m_isRuleArea;
/* For keepout zones only: /* For keepout zones only:
* what is not allowed inside the keepout ( pads, tracks and vias ) * what is not allowed inside the keepout ( pads, tracks and vias )

View File

@ -507,7 +507,7 @@ void DIALOG_COPPER_ZONE::ExportSetupToOtherCopperZones( wxCommandEvent& event )
{ {
// Cannot export settings from a copper zone // Cannot export settings from a copper zone
// to a zone keepout: // to a zone keepout:
if( zone->GetIsKeepout() ) if( zone->GetIsRuleArea() )
continue; continue;
m_settings.ExportSetting( *zone, false ); // false = partial export m_settings.ExportSetting( *zone, false ); // false = partial export

View File

@ -32,17 +32,17 @@
#include <class_zone.h> #include <class_zone.h>
#include <zones.h> #include <zones.h>
#include <zone_settings.h> #include <zone_settings.h>
#include <dialog_keepout_area_properties_base.h> #include <dialog_rule_area_properties_base.h>
#define LAYER_LIST_COLUMN_CHECK 0 #define LAYER_LIST_COLUMN_CHECK 0
#define LAYER_LIST_COLUMN_ICON 1 #define LAYER_LIST_COLUMN_ICON 1
#define LAYER_LIST_COLUMN_NAME 2 #define LAYER_LIST_COLUMN_NAME 2
#define LAYER_LIST_ROW_ALL_INNER_LAYERS 1 #define LAYER_LIST_ROW_ALL_INNER_LAYERS 1
class DIALOG_KEEPOUT_AREA_PROPERTIES : public DIALOG_KEEPOUT_AREA_PROPERTIES_BASE class DIALOG_RULE_AREA_PROPERTIES : public DIALOG_RULE_AREA_PROPERTIES_BASE
{ {
public: public:
DIALOG_KEEPOUT_AREA_PROPERTIES( PCB_BASE_FRAME* aParent, ZONE_SETTINGS* aSettings ); DIALOG_RULE_AREA_PROPERTIES( PCB_BASE_FRAME* aParent, ZONE_SETTINGS* aSettings );
private: private:
PCB_BASE_FRAME* m_parent; PCB_BASE_FRAME* m_parent;
@ -58,17 +58,17 @@ private:
}; };
int InvokeKeepoutAreaEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings ) int InvokeRuleAreaEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings )
{ {
DIALOG_KEEPOUT_AREA_PROPERTIES dlg( aCaller, aSettings ); DIALOG_RULE_AREA_PROPERTIES dlg( aCaller, aSettings );
return dlg.ShowModal(); return dlg.ShowModal();
} }
DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES( PCB_BASE_FRAME* aParent, DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES( PCB_BASE_FRAME* aParent,
ZONE_SETTINGS* aSettings ) : ZONE_SETTINGS* aSettings ) :
DIALOG_KEEPOUT_AREA_PROPERTIES_BASE( aParent ) DIALOG_RULE_AREA_PROPERTIES_BASE( aParent )
{ {
m_parent = aParent; m_parent = aParent;
@ -86,7 +86,7 @@ DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES( PCB_BASE_FRAME*
} }
bool DIALOG_KEEPOUT_AREA_PROPERTIES::TransferDataToWindow() bool DIALOG_RULE_AREA_PROPERTIES::TransferDataToWindow()
{ {
// Init keepout parameters: // Init keepout parameters:
m_cbTracksCtrl->SetValue( m_zonesettings.GetDoNotAllowTracks() ); m_cbTracksCtrl->SetValue( m_zonesettings.GetDoNotAllowTracks() );
@ -112,7 +112,7 @@ bool DIALOG_KEEPOUT_AREA_PROPERTIES::TransferDataToWindow()
} }
void DIALOG_KEEPOUT_AREA_PROPERTIES::OnLayerSelection( wxDataViewEvent& event ) void DIALOG_RULE_AREA_PROPERTIES::OnLayerSelection( wxDataViewEvent& event )
{ {
if( event.GetColumn() != 0 ) if( event.GetColumn() != 0 )
return; return;
@ -137,27 +137,16 @@ void DIALOG_KEEPOUT_AREA_PROPERTIES::OnLayerSelection( wxDataViewEvent& event )
} }
bool DIALOG_KEEPOUT_AREA_PROPERTIES::TransferDataFromWindow() bool DIALOG_RULE_AREA_PROPERTIES::TransferDataFromWindow()
{ {
// Init keepout parameters: // Init keepout parameters:
m_zonesettings.SetIsKeepout( true ); m_zonesettings.SetIsRuleArea( true );
m_zonesettings.SetDoNotAllowTracks( m_cbTracksCtrl->GetValue() ); m_zonesettings.SetDoNotAllowTracks( m_cbTracksCtrl->GetValue() );
m_zonesettings.SetDoNotAllowVias( m_cbViasCtrl->GetValue() ); m_zonesettings.SetDoNotAllowVias( m_cbViasCtrl->GetValue() );
m_zonesettings.SetDoNotAllowCopperPour( m_cbCopperPourCtrl->GetValue() ); m_zonesettings.SetDoNotAllowCopperPour( m_cbCopperPourCtrl->GetValue() );
m_zonesettings.SetDoNotAllowPads( m_cbPadsCtrl->GetValue() ); m_zonesettings.SetDoNotAllowPads( m_cbPadsCtrl->GetValue() );
m_zonesettings.SetDoNotAllowFootprints( m_cbFootprintsCtrl->GetValue() ); m_zonesettings.SetDoNotAllowFootprints( m_cbFootprintsCtrl->GetValue() );
// Test for not allowed items: should have at least one item not allowed:
if( ! m_zonesettings.GetDoNotAllowTracks() &&
! m_zonesettings.GetDoNotAllowVias() &&
! m_zonesettings.GetDoNotAllowPads() &&
! m_zonesettings.GetDoNotAllowFootprints() &&
! m_zonesettings.GetDoNotAllowCopperPour() )
{
DisplayError( NULL, _("No items are disallowed. The keepout will have no effect." ) );
return false;
}
if( m_zonesettings.m_Layers.count() == 0 ) if( m_zonesettings.m_Layers.count() == 0 )
{ {
DisplayError( NULL, _( "No layers selected." ) ); DisplayError( NULL, _( "No layers selected." ) );

View File

@ -5,11 +5,11 @@
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
#include "dialog_keepout_area_properties_base.h" #include "dialog_rule_area_properties_base.h"
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::DIALOG_KEEPOUT_AREA_PROPERTIES_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) DIALOG_RULE_AREA_PROPERTIES_BASE::DIALOG_RULE_AREA_PROPERTIES_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
{ {
this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
@ -35,6 +35,10 @@ DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::DIALOG_KEEPOUT_AREA_PROPERTIES_BASE( wxWind
wxBoxSizer* bSizerRight; wxBoxSizer* bSizerRight;
bSizerRight = new wxBoxSizer( wxVERTICAL ); bSizerRight = new wxBoxSizer( wxVERTICAL );
m_staticTextBasicRules = new wxStaticText( this, wxID_ANY, _("Basic Rules"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextBasicRules->Wrap( -1 );
bSizerRight->Add( m_staticTextBasicRules, 0, wxALL, 5 );
m_cbTracksCtrl = new wxCheckBox( this, wxID_ANY, _("Keep out tracks"), wxDefaultPosition, wxDefaultSize, 0 ); m_cbTracksCtrl = new wxCheckBox( this, wxID_ANY, _("Keep out tracks"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerRight->Add( m_cbTracksCtrl, 0, wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 5 ); bSizerRight->Add( m_cbTracksCtrl, 0, wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 5 );
@ -81,13 +85,15 @@ DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::DIALOG_KEEPOUT_AREA_PROPERTIES_BASE( wxWind
wxBoxSizer* bSizer6; wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxHORIZONTAL ); bSizer6 = new wxBoxSizer( wxHORIZONTAL );
m_staticText3 = new wxStaticText( this, wxID_ANY, _("Keepout name:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText3 = new wxStaticText( this, wxID_ANY, _("Area name:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3->Wrap( -1 ); m_staticText3->Wrap( -1 );
m_staticText3->SetToolTip( _("A unique name for this zone to identify it for DRC") ); m_staticText3->SetToolTip( _("A unique name for this rule area for use in DRC rules") );
bSizer6->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); bSizer6->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_tcName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_tcName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_tcName->SetToolTip( _("A unique name for this rule area for use in DRC rules") );
bSizer6->Add( m_tcName, 1, wxALL, 5 ); bSizer6->Add( m_tcName, 1, wxALL, 5 );
@ -119,16 +125,16 @@ DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::DIALOG_KEEPOUT_AREA_PROPERTIES_BASE( wxWind
this->Centre( wxBOTH ); this->Centre( wxBOTH );
// Connect Events // Connect Events
m_layers->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEventHandler( DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::OnLayerSelection ), NULL, this ); m_layers->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEventHandler( DIALOG_RULE_AREA_PROPERTIES_BASE::OnLayerSelection ), NULL, this );
m_layers->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::onLayerListRightDown ), NULL, this ); m_layers->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( DIALOG_RULE_AREA_PROPERTIES_BASE::onLayerListRightDown ), NULL, this );
m_layers->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::OnSizeLayersList ), NULL, this ); m_layers->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_RULE_AREA_PROPERTIES_BASE::OnSizeLayersList ), NULL, this );
} }
DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::~DIALOG_KEEPOUT_AREA_PROPERTIES_BASE() DIALOG_RULE_AREA_PROPERTIES_BASE::~DIALOG_RULE_AREA_PROPERTIES_BASE()
{ {
// Disconnect Events // Disconnect Events
m_layers->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEventHandler( DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::OnLayerSelection ), NULL, this ); m_layers->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEventHandler( DIALOG_RULE_AREA_PROPERTIES_BASE::OnLayerSelection ), NULL, this );
m_layers->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::onLayerListRightDown ), NULL, this ); m_layers->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( DIALOG_RULE_AREA_PROPERTIES_BASE::onLayerListRightDown ), NULL, this );
m_layers->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::OnSizeLayersList ), NULL, this ); m_layers->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_RULE_AREA_PROPERTIES_BASE::OnSizeLayersList ), NULL, this );
} }

View File

@ -11,12 +11,12 @@
<property name="embedded_files_path">res</property> <property name="embedded_files_path">res</property>
<property name="encoding">UTF-8</property> <property name="encoding">UTF-8</property>
<property name="event_generation">connect</property> <property name="event_generation">connect</property>
<property name="file">dialog_keepout_area_properties_base</property> <property name="file">dialog_rule_area_properties_base</property>
<property name="first_id">1000</property> <property name="first_id">1000</property>
<property name="help_provider">none</property> <property name="help_provider">none</property>
<property name="indent_with_spaces"></property> <property name="indent_with_spaces"></property>
<property name="internationalize">1</property> <property name="internationalize">1</property>
<property name="name">dialog_keepout_areas_properties_base</property> <property name="name">dialog_rule_areas_properties_base</property>
<property name="namespace"></property> <property name="namespace"></property>
<property name="path">.</property> <property name="path">.</property>
<property name="precompiled_header"></property> <property name="precompiled_header"></property>
@ -43,12 +43,12 @@
<property name="id">wxID_ANY</property> <property name="id">wxID_ANY</property>
<property name="maximum_size"></property> <property name="maximum_size"></property>
<property name="minimum_size">-1,-1</property> <property name="minimum_size">-1,-1</property>
<property name="name">DIALOG_KEEPOUT_AREA_PROPERTIES_BASE</property> <property name="name">DIALOG_RULE_AREA_PROPERTIES_BASE</property>
<property name="pos"></property> <property name="pos"></property>
<property name="size">-1,-1</property> <property name="size">-1,-1</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property> <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property> <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
<property name="title">Keepout Area Properties</property> <property name="title">Rule Area Properties</property>
<property name="tooltip"></property> <property name="tooltip"></property>
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
@ -178,6 +178,67 @@
<property name="name">bSizerRight</property> <property name="name">bSizerRight</property>
<property name="orient">wxVERTICAL</property> <property name="orient">wxVERTICAL</property>
<property name="permission">none</property> <property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Basic Rules</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticTextBasicRules</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="0"> <object class="sizeritem" expanded="0">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT|wxEXPAND</property> <property name="flag">wxTOP|wxRIGHT|wxLEFT|wxEXPAND</property>
@ -769,7 +830,7 @@
<property name="gripper">0</property> <property name="gripper">0</property>
<property name="hidden">0</property> <property name="hidden">0</property>
<property name="id">wxID_ANY</property> <property name="id">wxID_ANY</property>
<property name="label">Keepout name:</property> <property name="label">Area name:</property>
<property name="markup">0</property> <property name="markup">0</property>
<property name="max_size"></property> <property name="max_size"></property>
<property name="maximize_button">0</property> <property name="maximize_button">0</property>
@ -791,7 +852,7 @@
<property name="style"></property> <property name="style"></property>
<property name="subclass">; ; forward_declare</property> <property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property> <property name="toolbar_pane">0</property>
<property name="tooltip">A unique name for this zone to identify it for DRC</property> <property name="tooltip">A unique name for this rule area for use in DRC rules</property>
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
<property name="window_style"></property> <property name="window_style"></property>
@ -851,7 +912,7 @@
<property name="style"></property> <property name="style"></property>
<property name="subclass">; ; forward_declare</property> <property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property> <property name="toolbar_pane">0</property>
<property name="tooltip"></property> <property name="tooltip">A unique name for this rule area for use in DRC rules</property>
<property name="validator_data_type"></property> <property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property> <property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property> <property name="validator_type">wxDefaultValidator</property>

View File

@ -30,15 +30,16 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_KEEPOUT_AREA_PROPERTIES_BASE /// Class DIALOG_RULE_AREA_PROPERTIES_BASE
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
class DIALOG_KEEPOUT_AREA_PROPERTIES_BASE : public DIALOG_SHIM class DIALOG_RULE_AREA_PROPERTIES_BASE : public DIALOG_SHIM
{ {
private: private:
protected: protected:
wxStaticText* m_staticTextLayerSelection; wxStaticText* m_staticTextLayerSelection;
wxDataViewListCtrl* m_layers; wxDataViewListCtrl* m_layers;
wxStaticText* m_staticTextBasicRules;
wxCheckBox* m_cbTracksCtrl; wxCheckBox* m_cbTracksCtrl;
wxCheckBox* m_cbViasCtrl; wxCheckBox* m_cbViasCtrl;
wxCheckBox* m_cbPadsCtrl; wxCheckBox* m_cbPadsCtrl;
@ -62,8 +63,8 @@ class DIALOG_KEEPOUT_AREA_PROPERTIES_BASE : public DIALOG_SHIM
public: public:
DIALOG_KEEPOUT_AREA_PROPERTIES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Keepout Area Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxBORDER_SUNKEN ); DIALOG_RULE_AREA_PROPERTIES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Rule Area Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxBORDER_SUNKEN );
~DIALOG_KEEPOUT_AREA_PROPERTIES_BASE(); ~DIALOG_RULE_AREA_PROPERTIES_BASE();
}; };

View File

@ -477,7 +477,7 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::doTrackDrc( TRACK* aRefSeg, PCB_LAYER_I
if( m_drcEngine->IsErrorLimitExceeded( DRCE_CLEARANCE ) ) if( m_drcEngine->IsErrorLimitExceeded( DRCE_CLEARANCE ) )
break; break;
if( !zone->GetLayerSet().test( aLayer ) || zone->GetIsKeepout() ) if( !zone->GetLayerSet().test( aLayer ) || zone->GetIsRuleArea() )
continue; continue;
if( zone->GetNetCode() && zone->GetNetCode() == aRefSeg->GetNetCode() ) if( zone->GetNetCode() && zone->GetNetCode() == aRefSeg->GetNetCode() )
@ -722,7 +722,7 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testZones()
continue; continue;
// test for different types // test for different types
if( zoneRef->GetIsKeepout() != zoneToTest->GetIsKeepout() ) if( zoneRef->GetIsRuleArea() != zoneToTest->GetIsRuleArea() )
continue; continue;
// Examine a candidate zone: compare zoneToTest to zoneRef // Examine a candidate zone: compare zoneToTest to zoneRef
@ -736,7 +736,7 @@ void DRC_TEST_PROVIDER_COPPER_CLEARANCE::testZones()
// Keepout areas have no clearance, so set zone2zoneClearance to 1 // Keepout areas have no clearance, so set zone2zoneClearance to 1
// ( zone2zoneClearance = 0 can create problems in test functions) // ( zone2zoneClearance = 0 can create problems in test functions)
if( zoneRef->GetIsKeepout() ) // fixme: really? if( zoneRef->GetIsRuleArea() ) // fixme: really?
zone2zoneClearance = 1; zone2zoneClearance = 1;
// test for some corners of zoneRef inside zoneToTest // test for some corners of zoneRef inside zoneToTest

View File

@ -180,7 +180,7 @@ static void setKeepoutSettingsToZone( ZONE_CONTAINER* aZone, LAYER_NUM aLayer )
{ {
if( aLayer == EAGLE_LAYER::TRESTRICT || aLayer == EAGLE_LAYER::BRESTRICT ) if( aLayer == EAGLE_LAYER::TRESTRICT || aLayer == EAGLE_LAYER::BRESTRICT )
{ {
aZone->SetIsKeepout( true ); aZone->SetIsRuleArea( true );
aZone->SetDoNotAllowVias( true ); aZone->SetDoNotAllowVias( true );
aZone->SetDoNotAllowTracks( true ); aZone->SetDoNotAllowTracks( true );
aZone->SetDoNotAllowCopperPour( true ); aZone->SetDoNotAllowCopperPour( true );
@ -194,7 +194,7 @@ static void setKeepoutSettingsToZone( ZONE_CONTAINER* aZone, LAYER_NUM aLayer )
} }
else if( aLayer == EAGLE_LAYER::VRESTRICT ) else if( aLayer == EAGLE_LAYER::VRESTRICT )
{ {
aZone->SetIsKeepout( true ); aZone->SetIsRuleArea( true );
aZone->SetDoNotAllowVias( true ); aZone->SetDoNotAllowVias( true );
aZone->SetDoNotAllowTracks( false ); aZone->SetDoNotAllowTracks( false );
aZone->SetDoNotAllowCopperPour( false ); aZone->SetDoNotAllowCopperPour( false );
@ -1318,7 +1318,7 @@ ZONE_CONTAINER* EAGLE_PLUGIN::loadPolygon( wxXmlNode* aPolyNode )
// If the pour is a cutout it needs to be set to a keepout // If the pour is a cutout it needs to be set to a keepout
if( p.pour == EPOLYGON::CUTOUT ) if( p.pour == EPOLYGON::CUTOUT )
{ {
zone->SetIsKeepout( true ); zone->SetIsRuleArea( true );
zone->SetDoNotAllowVias( false ); zone->SetDoNotAllowVias( false );
zone->SetDoNotAllowTracks( false ); zone->SetDoNotAllowTracks( false );
zone->SetDoNotAllowPads( false ); zone->SetDoNotAllowPads( false );
@ -2422,7 +2422,7 @@ void EAGLE_PLUGIN::loadSignals( wxXmlNode* aSignals )
{ {
zones.push_back( zone ); zones.push_back( zone );
if( !zone->GetIsKeepout() ) if( !zone->GetIsRuleArea() )
zone->SetNetCode( netCode ); zone->SetNetCode( netCode );
} }

View File

@ -518,7 +518,7 @@ void GERBER_JOBFILE_WRITER::addJSONDesignRules()
for( ZONE_CONTAINER* zone : m_pcb->Zones() ) for( ZONE_CONTAINER* zone : m_pcb->Zones() )
{ {
if( zone->GetIsKeepout() || !zone->IsOnCopperLayer() ) if( zone->GetIsRuleArea() || !zone->IsOnCopperLayer() )
continue; continue;
for( PCB_LAYER_ID layer : zone->GetLayerSet().Seq() ) for( PCB_LAYER_ID layer : zone->GetLayerSet().Seq() )

View File

@ -1010,7 +1010,7 @@ void FOOTPRINT_EDIT_FRAME::setupUIConditions()
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawCircle ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawCircle );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawArc ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawArc );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawPolygon ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawPolygon );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawZoneKeepout ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawRuleArea );
CURRENT_EDIT_TOOL( PCB_ACTIONS::placeText ); CURRENT_EDIT_TOOL( PCB_ACTIONS::placeText );
CURRENT_EDIT_TOOL( PCB_ACTIONS::setAnchor ); CURRENT_EDIT_TOOL( PCB_ACTIONS::setAnchor );
CURRENT_EDIT_TOOL( PCB_ACTIONS::gridSetOrigin ); CURRENT_EDIT_TOOL( PCB_ACTIONS::gridSetOrigin );

View File

@ -387,9 +387,9 @@ void FOOTPRINT_EDIT_FRAME::OnEditItemRequest( BOARD_ITEM* aItem )
zoneSettings << *static_cast<ZONE_CONTAINER*>( aItem ); zoneSettings << *static_cast<ZONE_CONTAINER*>( aItem );
if( zone->GetIsKeepout() ) if( zone->GetIsRuleArea() )
{ {
success = InvokeKeepoutAreaEditor( this, &zoneSettings ); success = InvokeRuleAreaEditor( this, &zoneSettings );
} }
else if( zone->IsOnCopperLayer() ) else if( zone->IsOnCopperLayer() )
{ {

View File

@ -1714,8 +1714,8 @@ void PCB_IO::format( ZONE_CONTAINER* aZone, int aNestLevel ) const
// so be sure a dummy value is stored, just for ZONE_CONTAINER compatibility // so be sure a dummy value is stored, just for ZONE_CONTAINER compatibility
// (perhaps netcode and netname should be not stored) // (perhaps netcode and netname should be not stored)
m_out->Print( aNestLevel, "(zone (net %d) (net_name %s)", m_out->Print( aNestLevel, "(zone (net %d) (net_name %s)",
aZone->GetIsKeepout() ? 0 : m_mapping->Translate( aZone->GetNetCode() ), aZone->GetIsRuleArea() ? 0 : m_mapping->Translate( aZone->GetNetCode() ),
m_out->Quotew( aZone->GetIsKeepout() ? wxT("") : aZone->GetNetname() ).c_str() ); m_out->Quotew( aZone->GetIsRuleArea() ? wxT("") : aZone->GetNetname() ).c_str() );
// If a zone exists on multiple layers, format accordingly // If a zone exists on multiple layers, format accordingly
if( aZone->GetLayerSet().count() > 1 ) if( aZone->GetLayerSet().count() > 1 )
@ -1783,7 +1783,7 @@ void PCB_IO::format( ZONE_CONTAINER* aZone, int aNestLevel ) const
m_out->Print( 0, "\n" ); m_out->Print( 0, "\n" );
if( aZone->GetIsKeepout() ) if( aZone->GetIsRuleArea() )
{ {
m_out->Print( aNestLevel+1, "(keepout (tracks %s) (vias %s) (pads %s ) (copperpour %s) (footprints %s))\n", m_out->Print( aNestLevel+1, "(keepout (tracks %s) (vias %s) (pads %s ) (copperpour %s) (footprints %s))\n",
aZone->GetDoNotAllowTracks() ? "not_allowed" : "allowed", aZone->GetDoNotAllowTracks() ? "not_allowed" : "allowed",

View File

@ -2544,7 +2544,7 @@ void LEGACY_PLUGIN::loadZONE_CONTAINER()
else if( TESTLINE( "ZKeepout" ) ) else if( TESTLINE( "ZKeepout" ) )
{ {
char* token; char* token;
zc->SetIsKeepout( true ); zc->SetIsRuleArea( true );
zc->SetDoNotAllowPads( false ); // Not supported in legacy zc->SetDoNotAllowPads( false ); // Not supported in legacy
zc->SetDoNotAllowFootprints( false ); // Not supported in legacy zc->SetDoNotAllowFootprints( false ); // Not supported in legacy
@ -2700,7 +2700,7 @@ void LEGACY_PLUGIN::loadZONE_CONTAINER()
{ {
// Ensure keepout does not have a net // Ensure keepout does not have a net
// (which have no sense for a keepout zone) // (which have no sense for a keepout zone)
if( zc->GetIsKeepout() ) if( zc->GetIsRuleArea() )
zc->SetNetCode( NETINFO_LIST::UNCONNECTED ); zc->SetNetCode( NETINFO_LIST::UNCONNECTED );
// should always occur, but who knows, a zone without two corners // should always occur, but who knows, a zone without two corners

View File

@ -192,7 +192,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar()
placeMenu->Add( PCB_ACTIONS::drawCircle ); placeMenu->Add( PCB_ACTIONS::drawCircle );
placeMenu->Add( PCB_ACTIONS::drawLine ); placeMenu->Add( PCB_ACTIONS::drawLine );
placeMenu->Add( PCB_ACTIONS::drawPolygon ); placeMenu->Add( PCB_ACTIONS::drawPolygon );
placeMenu->Add( PCB_ACTIONS::drawZoneKeepout ); placeMenu->Add( PCB_ACTIONS::drawRuleArea );
placeMenu->AppendSeparator(); placeMenu->AppendSeparator();
placeMenu->Add( PCB_ACTIONS::setAnchor ); placeMenu->Add( PCB_ACTIONS::setAnchor );

View File

@ -311,7 +311,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
placeMenu->Add( PCB_ACTIONS::placeModule ); placeMenu->Add( PCB_ACTIONS::placeModule );
placeMenu->Add( PCB_ACTIONS::drawVia ); placeMenu->Add( PCB_ACTIONS::drawVia );
placeMenu->Add( PCB_ACTIONS::drawZone ); placeMenu->Add( PCB_ACTIONS::drawZone );
placeMenu->Add( PCB_ACTIONS::drawZoneKeepout ); placeMenu->Add( PCB_ACTIONS::drawRuleArea );
placeMenu->Add( PCB_ACTIONS::placeText ); placeMenu->Add( PCB_ACTIONS::placeText );
placeMenu->Add( PCB_ACTIONS::drawArc ); placeMenu->Add( PCB_ACTIONS::drawArc );
placeMenu->Add( PCB_ACTIONS::drawRectangle ); placeMenu->Add( PCB_ACTIONS::drawRectangle );

View File

@ -484,7 +484,7 @@ void BOARD_NETLIST_UPDATER::cacheCopperZoneConnections()
{ {
for( ZONE_CONTAINER* zone : m_board->Zones() ) for( ZONE_CONTAINER* zone : m_board->Zones() )
{ {
if( !zone->IsOnCopperLayer() || zone->GetIsKeepout() ) if( !zone->IsOnCopperLayer() || zone->GetIsRuleArea() )
continue; continue;
m_zoneConnectionsCache[ zone ] = m_board->GetConnectivity()->GetConnectedPads( zone ); m_zoneConnectionsCache[ zone ] = m_board->GetConnectivity()->GetConnectedPads( zone );
@ -557,7 +557,7 @@ bool BOARD_NETLIST_UPDATER::updateCopperZoneNets( NETLIST& aNetlist )
// Test copper zones to detect "dead" nets (nets without any pad): // Test copper zones to detect "dead" nets (nets without any pad):
for( ZONE_CONTAINER* zone : m_board->Zones() ) for( ZONE_CONTAINER* zone : m_board->Zones() )
{ {
if( !zone->IsOnCopperLayer() || zone->GetIsKeepout() ) if( !zone->IsOnCopperLayer() || zone->GetIsRuleArea() )
continue; continue;
if( netlistNetnames.count( zone->GetNetname() ) == 0 ) if( netlistNetnames.count( zone->GetNetname() ) == 0 )
@ -690,7 +690,7 @@ bool BOARD_NETLIST_UPDATER::deleteSinglePadNets()
if( !zone->IsOnCopperLayer() ) if( !zone->IsOnCopperLayer() )
continue; continue;
if( zone->GetIsKeepout() ) if( zone->GetIsRuleArea() )
continue; continue;
if( zone->GetNetname() == getNetname( previouspad ) ) if( zone->GetNetname() == getNetname( previouspad ) )

View File

@ -207,7 +207,7 @@ void PCB_POLYGON::AddToBoard()
if ( m_objType == wxT( 'K' ) ) if ( m_objType == wxT( 'K' ) )
{ {
zone->SetIsKeepout( true ); zone->SetIsRuleArea( true );
zone->SetDoNotAllowTracks( true ); zone->SetDoNotAllowTracks( true );
zone->SetDoNotAllowVias( true ); zone->SetDoNotAllowVias( true );
zone->SetDoNotAllowPads( true ); zone->SetDoNotAllowPads( true );
@ -217,7 +217,7 @@ void PCB_POLYGON::AddToBoard()
else if( m_objType == wxT( 'C' ) ) else if( m_objType == wxT( 'C' ) )
{ {
// convert cutouts to keepouts because standalone cutouts are not supported in KiCad // convert cutouts to keepouts because standalone cutouts are not supported in KiCad
zone->SetIsKeepout( true ); zone->SetIsRuleArea( true );
zone->SetDoNotAllowCopperPour( true ); zone->SetDoNotAllowCopperPour( true );
zone->SetDoNotAllowTracks( false ); zone->SetDoNotAllowTracks( false );
zone->SetDoNotAllowVias( false ); zone->SetDoNotAllowVias( false );

View File

@ -734,7 +734,7 @@ void PCB_EDIT_FRAME::setupUIConditions()
CURRENT_EDIT_TOOL( PCB_ACTIONS::routeSingleTrack); CURRENT_EDIT_TOOL( PCB_ACTIONS::routeSingleTrack);
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawVia ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawVia );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawZone ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawZone );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawZoneKeepout ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawRuleArea );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawLine ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawLine );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawRectangle ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawRectangle );
CURRENT_EDIT_TOOL( PCB_ACTIONS::drawCircle ); CURRENT_EDIT_TOOL( PCB_ACTIONS::drawCircle );

View File

@ -4466,12 +4466,12 @@ ZONE_CONTAINER* PCB_PARSER::parseZONE_CONTAINER( BOARD_ITEM_CONTAINER* aParent )
break; break;
case T_chamfer: case T_chamfer:
if( !zone->GetIsKeepout() ) // smoothing has meaning only for filled zones if( !zone->GetIsRuleArea() ) // smoothing has meaning only for filled zones
zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_CHAMFER ); zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_CHAMFER );
break; break;
case T_fillet: case T_fillet:
if( !zone->GetIsKeepout() ) // smoothing has meaning only for filled zones if( !zone->GetIsRuleArea() ) // smoothing has meaning only for filled zones
zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_FILLET ); zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_FILLET );
break; break;
@ -4483,7 +4483,7 @@ ZONE_CONTAINER* PCB_PARSER::parseZONE_CONTAINER( BOARD_ITEM_CONTAINER* aParent )
case T_radius: case T_radius:
tmp = parseBoardUnits( "corner radius" ); tmp = parseBoardUnits( "corner radius" );
if( !zone->GetIsKeepout() ) // smoothing has meaning only for filled zones if( !zone->GetIsRuleArea() ) // smoothing has meaning only for filled zones
zone->SetCornerRadius( tmp ); zone->SetCornerRadius( tmp );
NeedRIGHT(); NeedRIGHT();
break; break;
@ -4517,7 +4517,8 @@ ZONE_CONTAINER* PCB_PARSER::parseZONE_CONTAINER( BOARD_ITEM_CONTAINER* aParent )
break; break;
case T_keepout: case T_keepout:
zone->SetIsKeepout( true ); // "keepout" now means rule area, but the file token stays the same
zone->SetIsRuleArea( true );
// Initialize these two because their tokens won't appear in older files: // Initialize these two because their tokens won't appear in older files:
zone->SetDoNotAllowPads( false ); zone->SetDoNotAllowPads( false );
@ -4734,7 +4735,7 @@ ZONE_CONTAINER* PCB_PARSER::parseZONE_CONTAINER( BOARD_ITEM_CONTAINER* aParent )
// Ensure keepout and non copper zones do not have a net // Ensure keepout and non copper zones do not have a net
// (which have no sense for these zones) // (which have no sense for these zones)
// the netcode 0 is used for these zones // the netcode 0 is used for these zones
bool zone_has_net = zone->IsOnCopperLayer() && !zone->GetIsKeepout(); bool zone_has_net = zone->IsOnCopperLayer() && !zone->GetIsRuleArea();
if( !zone_has_net ) if( !zone_has_net )
zone->SetNetCode( NETINFO_LIST::UNCONNECTED ); zone->SetNetCode( NETINFO_LIST::UNCONNECTED );

View File

@ -1425,7 +1425,7 @@ void ALTIUM_PCB::ParseShapeBasedRegions6Data(
ZONE_CONTAINER* zone = new ZONE_CONTAINER( m_board ); ZONE_CONTAINER* zone = new ZONE_CONTAINER( m_board );
m_board->Add( zone, ADD_MODE::APPEND ); m_board->Add( zone, ADD_MODE::APPEND );
zone->SetIsKeepout( true ); zone->SetIsRuleArea( true );
zone->SetDoNotAllowTracks( false ); zone->SetDoNotAllowTracks( false );
zone->SetDoNotAllowVias( false ); zone->SetDoNotAllowVias( false );
zone->SetDoNotAllowPads( false ); zone->SetDoNotAllowPads( false );
@ -1613,7 +1613,7 @@ void ALTIUM_PCB::ParseArcs6Data(
m_board->Add( zone, ADD_MODE::APPEND ); m_board->Add( zone, ADD_MODE::APPEND );
zone->SetLayer( klayer ); zone->SetLayer( klayer );
zone->SetIsKeepout( true ); zone->SetIsRuleArea( true );
zone->SetDoNotAllowTracks( false ); zone->SetDoNotAllowTracks( false );
zone->SetDoNotAllowVias( false ); zone->SetDoNotAllowVias( false );
zone->SetDoNotAllowPads( false ); zone->SetDoNotAllowPads( false );
@ -2168,7 +2168,7 @@ void ALTIUM_PCB::ParseTracks6Data(
ZONE_CONTAINER* zone = new ZONE_CONTAINER( m_board ); ZONE_CONTAINER* zone = new ZONE_CONTAINER( m_board );
m_board->Add( zone, ADD_MODE::APPEND ); m_board->Add( zone, ADD_MODE::APPEND );
zone->SetLayer( klayer ); zone->SetLayer( klayer );
zone->SetIsKeepout( true ); zone->SetIsRuleArea( true );
zone->SetDoNotAllowTracks( false ); zone->SetDoNotAllowTracks( false );
zone->SetDoNotAllowVias( false ); zone->SetDoNotAllowVias( false );
zone->SetDoNotAllowPads( false ); zone->SetDoNotAllowPads( false );
@ -2434,7 +2434,7 @@ void ALTIUM_PCB::ParseFills6Data(
if( elem.is_keepout ) if( elem.is_keepout )
{ {
zone->SetIsKeepout( true ); zone->SetIsRuleArea( true );
zone->SetDoNotAllowTracks( false ); zone->SetDoNotAllowTracks( false );
zone->SetDoNotAllowVias( false ); zone->SetDoNotAllowVias( false );
zone->SetDoNotAllowPads( false ); zone->SetDoNotAllowPads( false );

View File

@ -514,7 +514,7 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryAreas( const SYMDEF& aComponent, MOD
else else
zone->SetLayer( getKiCadLayer( area.LayerID ) ); zone->SetLayer( getKiCadLayer( area.LayerID ) );
zone->SetIsKeepout( true ); //import all CADSTAR areas as Keepout zones zone->SetIsRuleArea( true ); //import all CADSTAR areas as Keepout zones
zone->SetDoNotAllowPads( false ); //no CADSTAR equivalent zone->SetDoNotAllowPads( false ); //no CADSTAR equivalent
zone->SetZoneName( area.ID ); zone->SetZoneName( area.ID );
@ -871,7 +871,7 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadAreas()
else else
zone->SetLayer( getKiCadLayer( area.LayerID ) ); zone->SetLayer( getKiCadLayer( area.LayerID ) );
zone->SetIsKeepout( true ); //import all CADSTAR areas as Keepout zones zone->SetIsRuleArea( true ); //import all CADSTAR areas as Keepout zones
zone->SetDoNotAllowPads( false ); //no CADSTAR equivalent zone->SetDoNotAllowPads( false ); //no CADSTAR equivalent
zone->SetZoneName( area.Name ); zone->SetZoneName( area.Name );

View File

@ -736,7 +736,7 @@ bool PNS_KICAD_IFACE_BASE::syncZone( PNS::NODE* aWorld, ZONE_CONTAINER* aZone )
SHAPE_POLY_SET poly; SHAPE_POLY_SET poly;
// TODO handle no-via restriction // TODO handle no-via restriction
if( !aZone->GetIsKeepout() || !aZone->GetDoNotAllowTracks() ) if( !aZone->GetIsRuleArea() || !aZone->GetDoNotAllowTracks() )
return false; return false;
LSET layers = aZone->GetLayerSet(); LSET layers = aZone->GetLayerSet();

View File

@ -1077,7 +1077,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
{ {
ZONE_CONTAINER* item = (ZONE_CONTAINER*) items[i]; ZONE_CONTAINER* item = (ZONE_CONTAINER*) items[i];
if( item->GetIsKeepout() ) if( item->GetIsRuleArea() )
continue; continue;
// Currently, we export only copper layers // Currently, we export only copper layers
@ -1195,7 +1195,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
{ {
ZONE_CONTAINER* item = (ZONE_CONTAINER*) items[i]; ZONE_CONTAINER* item = (ZONE_CONTAINER*) items[i];
if( ! item->GetIsKeepout() ) if( !item->GetIsRuleArea() )
continue; continue;
// keepout areas have a type. types are // keepout areas have a type. types are

View File

@ -154,7 +154,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateVToolbar()
m_drawToolBar->Add( PCB_ACTIONS::drawCircle, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawCircle, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PCB_ACTIONS::drawArc, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawArc, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PCB_ACTIONS::drawPolygon, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawPolygon, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PCB_ACTIONS::drawZoneKeepout, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawRuleArea, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PCB_ACTIONS::placeText, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::placeText, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( ACTIONS::deleteTool, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( ACTIONS::deleteTool, ACTION_TOOLBAR::TOGGLE );

View File

@ -369,7 +369,7 @@ void PCB_EDIT_FRAME::ReCreateVToolbar()
m_drawToolBar->Add( PCB_ACTIONS::routeSingleTrack, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::routeSingleTrack, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PCB_ACTIONS::drawVia, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawVia, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PCB_ACTIONS::drawZone, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawZone, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->Add( PCB_ACTIONS::drawZoneKeepout, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawRuleArea, ACTION_TOOLBAR::TOGGLE );
m_drawToolBar->AddScaledSeparator( this ); m_drawToolBar->AddScaledSeparator( this );
m_drawToolBar->Add( PCB_ACTIONS::drawLine, ACTION_TOOLBAR::TOGGLE ); m_drawToolBar->Add( PCB_ACTIONS::drawLine, ACTION_TOOLBAR::TOGGLE );

View File

@ -187,7 +187,7 @@ int CONVERT_TOOL::LinesToPoly( const TOOL_EVENT& aEvent )
int ret; int ret;
if( aEvent.IsAction( &PCB_ACTIONS::convertToKeepout ) ) if( aEvent.IsAction( &PCB_ACTIONS::convertToKeepout ) )
ret = InvokeKeepoutAreaEditor( frame, &zoneInfo ); ret = InvokeRuleAreaEditor( frame, &zoneInfo );
else else
ret = InvokeCopperZonesEditor( frame, &zoneInfo ); ret = InvokeCopperZonesEditor( frame, &zoneInfo );

View File

@ -1638,7 +1638,7 @@ int DRAWING_TOOL::DrawZone( const TOOL_EVENT& aEvent )
ZONE_MODE zoneMode = aEvent.Parameter<ZONE_MODE>(); ZONE_MODE zoneMode = aEvent.Parameter<ZONE_MODE>();
MODE drawMode = MODE::ZONE; MODE drawMode = MODE::ZONE;
if( aEvent.IsAction( &PCB_ACTIONS::drawZoneKeepout ) ) if( aEvent.IsAction( &PCB_ACTIONS::drawRuleArea ) )
drawMode = MODE::KEEPOUT; drawMode = MODE::KEEPOUT;
if( aEvent.IsAction( &PCB_ACTIONS::drawPolygon ) ) if( aEvent.IsAction( &PCB_ACTIONS::drawPolygon ) )
@ -2179,7 +2179,7 @@ void DRAWING_TOOL::setTransitions()
Go( &DRAWING_TOOL::DrawDimension, PCB_ACTIONS::drawCenterDimension.MakeEvent() ); Go( &DRAWING_TOOL::DrawDimension, PCB_ACTIONS::drawCenterDimension.MakeEvent() );
Go( &DRAWING_TOOL::DrawDimension, PCB_ACTIONS::drawLeader.MakeEvent() ); Go( &DRAWING_TOOL::DrawDimension, PCB_ACTIONS::drawLeader.MakeEvent() );
Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawZone.MakeEvent() ); Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawZone.MakeEvent() );
Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawZoneKeepout.MakeEvent() ); Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawRuleArea.MakeEvent() );
Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawZoneCutout.MakeEvent() ); Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawZoneCutout.MakeEvent() );
Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawSimilarZone.MakeEvent() ); Go( &DRAWING_TOOL::DrawZone, PCB_ACTIONS::drawSimilarZone.MakeEvent() );
Go( &DRAWING_TOOL::DrawVia, PCB_ACTIONS::drawVia.MakeEvent() ); Go( &DRAWING_TOOL::DrawVia, PCB_ACTIONS::drawVia.MakeEvent() );

View File

@ -63,8 +63,8 @@ TOOL_ACTION PCB_ACTIONS::convertToZone( "pcbnew.Convert.convertToZone",
add_zone_xpm ); add_zone_xpm );
TOOL_ACTION PCB_ACTIONS::convertToKeepout( "pcbnew.Convert.convertToKeepout", TOOL_ACTION PCB_ACTIONS::convertToKeepout( "pcbnew.Convert.convertToKeepout",
AS_GLOBAL, 0, "", _( "Convert to Keepout" ), AS_GLOBAL, 0, "", _( "Convert to Rule Area" ),
_( "Creates a keepout zone from the selection" ), add_keepout_area_xpm ); _( "Creates a rule area from the selection" ), add_keepout_area_xpm );
TOOL_ACTION PCB_ACTIONS::convertToLines( "pcbnew.Convert.convertToLines", TOOL_ACTION PCB_ACTIONS::convertToLines( "pcbnew.Convert.convertToLines",
AS_GLOBAL, 0, "", _( "Convert to Lines" ), _( "Creates graphic lines from the selection" ), AS_GLOBAL, 0, "", _( "Convert to Lines" ), _( "Creates graphic lines from the selection" ),
@ -149,10 +149,10 @@ TOOL_ACTION PCB_ACTIONS::drawVia( "pcbnew.InteractiveDrawing.via",
_( "Add Vias" ), _( "Add free-standing vias" ), _( "Add Vias" ), _( "Add free-standing vias" ),
add_via_xpm, AF_ACTIVATE ); add_via_xpm, AF_ACTIVATE );
TOOL_ACTION PCB_ACTIONS::drawZoneKeepout( "pcbnew.InteractiveDrawing.keepout", TOOL_ACTION PCB_ACTIONS::drawRuleArea( "pcbnew.InteractiveDrawing.ruleArea",
AS_GLOBAL, AS_GLOBAL,
MD_SHIFT + MD_CTRL + 'K', LEGACY_HK_NAME( "Add Keepout Area" ), MD_SHIFT + MD_CTRL + 'K', LEGACY_HK_NAME( "Add Keepout Area" ),
_( "Add Keepout Area" ), _( "Add a keepout area" ), _( "Add Rule Area" ), _( "Add a rule area (keepout)" ),
add_keepout_area_xpm, AF_ACTIVATE, (void*) ZONE_MODE::ADD ); add_keepout_area_xpm, AF_ACTIVATE, (void*) ZONE_MODE::ADD );
TOOL_ACTION PCB_ACTIONS::drawZoneCutout( "pcbnew.InteractiveDrawing.zoneCutout", TOOL_ACTION PCB_ACTIONS::drawZoneCutout( "pcbnew.InteractiveDrawing.zoneCutout",

View File

@ -147,7 +147,7 @@ public:
static TOOL_ACTION drawLeader; static TOOL_ACTION drawLeader;
static TOOL_ACTION drawZone; static TOOL_ACTION drawZone;
static TOOL_ACTION drawVia; static TOOL_ACTION drawVia;
static TOOL_ACTION drawZoneKeepout; static TOOL_ACTION drawRuleArea;
static TOOL_ACTION drawZoneCutout; static TOOL_ACTION drawZoneCutout;
static TOOL_ACTION drawSimilarZone; static TOOL_ACTION drawSimilarZone;
static TOOL_ACTION placeTarget; static TOOL_ACTION placeTarget;

View File

@ -1435,7 +1435,7 @@ int PCB_EDITOR_CONTROL::ZoneMerge( const TOOL_EVENT& aEvent )
if( curr_area->GetPriority() != firstZone->GetPriority() ) if( curr_area->GetPriority() != firstZone->GetPriority() )
continue; continue;
if( curr_area->GetIsKeepout() != firstZone->GetIsKeepout() ) if( curr_area->GetIsRuleArea() != firstZone->GetIsRuleArea() )
continue; continue;
if( curr_area->GetLayer() != firstZone->GetLayer() ) if( curr_area->GetLayer() != firstZone->GetLayer() )
@ -1480,8 +1480,8 @@ int PCB_EDITOR_CONTROL::ZoneDuplicate( const TOOL_EVENT& aEvent )
zoneSettings << *oldZone; zoneSettings << *oldZone;
int dialogResult; int dialogResult;
if( oldZone->GetIsKeepout() ) if( oldZone->GetIsRuleArea() )
dialogResult = InvokeKeepoutAreaEditor( m_frame, &zoneSettings ); dialogResult = InvokeRuleAreaEditor( m_frame, &zoneSettings );
else if( oldZone->IsOnCopperLayer() ) else if( oldZone->IsOnCopperLayer() )
dialogResult = InvokeCopperZonesEditor( m_frame, &zoneSettings ); dialogResult = InvokeCopperZonesEditor( m_frame, &zoneSettings );
else else
@ -1500,9 +1500,9 @@ int PCB_EDITOR_CONTROL::ZoneDuplicate( const TOOL_EVENT& aEvent )
// If the new zone is on the same layer(s) as the the initial zone, // If the new zone is on the same layer(s) as the the initial zone,
// offset it a bit so it can more easily be picked. // offset it a bit so it can more easily be picked.
if( oldZone->GetIsKeepout() && ( oldZone->GetLayerSet() == zoneSettings.m_Layers ) ) if( oldZone->GetIsRuleArea() && ( oldZone->GetLayerSet() == zoneSettings.m_Layers ) )
newZone->Move( wxPoint( IU_PER_MM, IU_PER_MM ) ); newZone->Move( wxPoint( IU_PER_MM, IU_PER_MM ) );
else if( !oldZone->GetIsKeepout() && zoneSettings.m_Layers.test( oldZone->GetLayer() ) ) else if( !oldZone->GetIsRuleArea() && zoneSettings.m_Layers.test( oldZone->GetLayer() ) )
newZone->Move( wxPoint( IU_PER_MM, IU_PER_MM ) ); newZone->Move( wxPoint( IU_PER_MM, IU_PER_MM ) );
commit.Add( newZone.release() ); commit.Add( newZone.release() );

View File

@ -1497,8 +1497,8 @@ bool SELECTION_TOOL::itemPassesFilter( BOARD_ITEM* aItem )
{ {
ZONE_CONTAINER* zone = static_cast<ZONE_CONTAINER*>( aItem ); ZONE_CONTAINER* zone = static_cast<ZONE_CONTAINER*>( aItem );
if( ( !m_filter.zones && !zone->GetIsKeepout() ) if( ( !m_filter.zones && !zone->GetIsRuleArea() )
|| ( !m_filter.keepouts && zone->GetIsKeepout() ) ) || ( !m_filter.keepouts && zone->GetIsRuleArea() ) )
{ {
return false; return false;
} }

View File

@ -61,7 +61,7 @@ std::unique_ptr<ZONE_CONTAINER> ZONE_CREATE_HELPER::createNewZone( bool aKeepout
ZONE_SETTINGS zoneInfo = frame->GetZoneSettings(); ZONE_SETTINGS zoneInfo = frame->GetZoneSettings();
zoneInfo.m_Layers.reset().set( m_params.m_layer ); // TODO(JE) multilayer defaults? zoneInfo.m_Layers.reset().set( m_params.m_layer ); // TODO(JE) multilayer defaults?
zoneInfo.m_NetcodeSelection = highlightedNets.empty() ? -1 : *highlightedNets.begin(); zoneInfo.m_NetcodeSelection = highlightedNets.empty() ? -1 : *highlightedNets.begin();
zoneInfo.SetIsKeepout( m_params.m_keepout ); zoneInfo.SetIsRuleArea( m_params.m_keepout );
zoneInfo.m_Zone_45_Only = ( m_params.m_leaderMode == POLYGON_GEOM_MANAGER::LEADER_MODE::DEG45 ); zoneInfo.m_Zone_45_Only = ( m_params.m_leaderMode == POLYGON_GEOM_MANAGER::LEADER_MODE::DEG45 );
// If we don't have a net from highlighing, maybe we can get one from the selection // If we don't have a net from highlighing, maybe we can get one from the selection
@ -84,7 +84,7 @@ std::unique_ptr<ZONE_CONTAINER> ZONE_CREATE_HELPER::createNewZone( bool aKeepout
int dialogResult; int dialogResult;
if( m_params.m_keepout ) if( m_params.m_keepout )
dialogResult = InvokeKeepoutAreaEditor( frame, &zoneInfo ); dialogResult = InvokeRuleAreaEditor( frame, &zoneInfo );
else else
{ {
// TODO(JE) combine these dialogs? // TODO(JE) combine these dialogs?

View File

@ -56,7 +56,7 @@ PANEL_SELECTION_FILTER_BASE::PANEL_SELECTION_FILTER_BASE( wxWindow* parent, wxWi
m_cbZones->SetValue(true); m_cbZones->SetValue(true);
gbSizer1->Add( m_cbZones, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxLEFT|wxRIGHT, 5 ); gbSizer1->Add( m_cbZones, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxLEFT|wxRIGHT, 5 );
m_cbKeepouts = new wxCheckBox( this, wxID_ANY, wxT("Keepouts"), wxDefaultPosition, wxDefaultSize, 0 ); m_cbKeepouts = new wxCheckBox( this, wxID_ANY, wxT("Rule Areas"), wxDefaultPosition, wxDefaultSize, 0 );
m_cbKeepouts->SetValue(true); m_cbKeepouts->SetValue(true);
gbSizer1->Add( m_cbKeepouts, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxLEFT|wxRIGHT, 5 ); gbSizer1->Add( m_cbKeepouts, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxLEFT|wxRIGHT, 5 );

View File

@ -709,7 +709,7 @@
<property name="gripper">0</property> <property name="gripper">0</property>
<property name="hidden">0</property> <property name="hidden">0</property>
<property name="id">wxID_ANY</property> <property name="id">wxID_ANY</property>
<property name="label">Keepouts</property> <property name="label">Rule Areas</property>
<property name="max_size"></property> <property name="max_size"></property>
<property name="maximize_button">0</property> <property name="maximize_button">0</property>
<property name="maximum_size"></property> <property name="maximum_size"></property>

View File

@ -129,8 +129,8 @@ bool ZONE_FILLER::Fill( std::vector<ZONE_CONTAINER*>& aZones, bool aCheck, wxWin
{ {
zone->CacheBoundingBox(); zone->CacheBoundingBox();
// Keepout zones are not filled // Rule areas are not filled
if( zone->GetIsKeepout() ) if( zone->GetIsRuleArea() )
continue; continue;
m_commit->Modify( zone ); m_commit->Modify( zone );
@ -169,7 +169,7 @@ bool ZONE_FILLER::Fill( std::vector<ZONE_CONTAINER*>& aZones, bool aCheck, wxWin
// Even if keepouts exclude copper pours the exclusion is by outline, not by // Even if keepouts exclude copper pours the exclusion is by outline, not by
// filled area, so we're good-to-go here too. // filled area, so we're good-to-go here too.
if( aOtherZone->GetIsKeepout() ) if( aOtherZone->GetIsRuleArea() )
return false; return false;
// If the zones share no common layers // If the zones share no common layers
@ -313,7 +313,7 @@ bool ZONE_FILLER::Fill( std::vector<ZONE_CONTAINER*>& aZones, bool aCheck, wxWin
for( ZONE_CONTAINER* zone : aZones ) for( ZONE_CONTAINER* zone : aZones )
{ {
// Keepout zones are not filled // Keepout zones are not filled
if( zone->GetIsKeepout() ) if( zone->GetIsRuleArea() )
continue; continue;
zone->SetIsFilled( true ); zone->SetIsFilled( true );
@ -387,7 +387,7 @@ bool ZONE_FILLER::Fill( std::vector<ZONE_CONTAINER*>& aZones, bool aCheck, wxWin
for( ZONE_CONTAINER* zone : aZones ) for( ZONE_CONTAINER* zone : aZones )
{ {
// Keepout zones are not filled // Keepout zones are not filled
if( zone->GetIsKeepout() ) if( zone->GetIsRuleArea() )
continue; continue;
for( PCB_LAYER_ID layer : zone->GetLayerSet().Seq() ) for( PCB_LAYER_ID layer : zone->GetLayerSet().Seq() )
@ -829,7 +829,7 @@ void ZONE_FILLER::buildCopperItemClearances( const ZONE_CONTAINER* aZone, PCB_LA
if( aKnockout->GetBoundingBox().Intersects( zone_boundingbox ) ) if( aKnockout->GetBoundingBox().Intersects( zone_boundingbox ) )
{ {
if( aKnockout->GetIsKeepout() if( aKnockout->GetIsRuleArea()
|| aZone->GetNetCode() == aKnockout->GetNetCode() ) || aZone->GetNetCode() == aKnockout->GetNetCode() )
{ {
// Keepouts and same-net zones use outline with no clearance // Keepouts and same-net zones use outline with no clearance
@ -860,7 +860,7 @@ void ZONE_FILLER::buildCopperItemClearances( const ZONE_CONTAINER* aZone, PCB_LA
if( otherZone == aZone ) if( otherZone == aZone )
continue; continue;
if( otherZone->GetIsKeepout() ) if( otherZone->GetIsRuleArea() )
{ {
if( otherZone->GetDoNotAllowCopperPour() ) if( otherZone->GetDoNotAllowCopperPour() )
knockoutZone( otherZone ); knockoutZone( otherZone );
@ -876,7 +876,7 @@ void ZONE_FILLER::buildCopperItemClearances( const ZONE_CONTAINER* aZone, PCB_LA
{ {
for( ZONE_CONTAINER* otherZone : module->Zones() ) for( ZONE_CONTAINER* otherZone : module->Zones() )
{ {
if( otherZone->GetIsKeepout() ) if( otherZone->GetIsRuleArea() )
{ {
if( otherZone->GetDoNotAllowCopperPour() ) if( otherZone->GetDoNotAllowCopperPour() )
knockoutZone( otherZone ); knockoutZone( otherZone );

View File

@ -80,7 +80,7 @@ ZONE_SETTINGS::ZONE_SETTINGS()
m_removeIslands = ISLAND_REMOVAL_MODE::ALWAYS; m_removeIslands = ISLAND_REMOVAL_MODE::ALWAYS;
m_minIslandArea = 0; m_minIslandArea = 0;
SetIsKeepout( false ); SetIsRuleArea( false );
SetDoNotAllowCopperPour( false ); SetDoNotAllowCopperPour( false );
SetDoNotAllowVias( true ); SetDoNotAllowVias( true );
SetDoNotAllowTracks( true ); SetDoNotAllowTracks( true );
@ -110,7 +110,7 @@ ZONE_SETTINGS& ZONE_SETTINGS::operator << ( const ZONE_CONTAINER& aSource )
m_padConnection = aSource.GetPadConnection(); m_padConnection = aSource.GetPadConnection();
m_cornerSmoothingType = aSource.GetCornerSmoothingType(); m_cornerSmoothingType = aSource.GetCornerSmoothingType();
m_cornerRadius = aSource.GetCornerRadius(); m_cornerRadius = aSource.GetCornerRadius();
m_isKeepout = aSource.GetIsKeepout(); m_isRuleArea = aSource.GetIsRuleArea();
m_keepoutDoNotAllowCopperPour = aSource.GetDoNotAllowCopperPour(); m_keepoutDoNotAllowCopperPour = aSource.GetDoNotAllowCopperPour();
m_keepoutDoNotAllowVias = aSource.GetDoNotAllowVias(); m_keepoutDoNotAllowVias = aSource.GetDoNotAllowVias();
m_keepoutDoNotAllowTracks = aSource.GetDoNotAllowTracks(); m_keepoutDoNotAllowTracks = aSource.GetDoNotAllowTracks();
@ -143,7 +143,7 @@ void ZONE_SETTINGS::ExportSetting( ZONE_CONTAINER& aTarget, bool aFullExport ) c
aTarget.SetPadConnection( m_padConnection ); aTarget.SetPadConnection( m_padConnection );
aTarget.SetCornerSmoothingType( m_cornerSmoothingType ); aTarget.SetCornerSmoothingType( m_cornerSmoothingType );
aTarget.SetCornerRadius( m_cornerRadius ); aTarget.SetCornerRadius( m_cornerRadius );
aTarget.SetIsKeepout( GetIsKeepout() ); aTarget.SetIsRuleArea( GetIsRuleArea() );
aTarget.SetDoNotAllowCopperPour( GetDoNotAllowCopperPour() ); aTarget.SetDoNotAllowCopperPour( GetDoNotAllowCopperPour() );
aTarget.SetDoNotAllowVias( GetDoNotAllowVias() ); aTarget.SetDoNotAllowVias( GetDoNotAllowVias() );
aTarget.SetDoNotAllowTracks( GetDoNotAllowTracks() ); aTarget.SetDoNotAllowTracks( GetDoNotAllowTracks() );
@ -159,7 +159,7 @@ void ZONE_SETTINGS::ExportSetting( ZONE_CONTAINER& aTarget, bool aFullExport ) c
aTarget.SetLayerSet( m_Layers ); aTarget.SetLayerSet( m_Layers );
aTarget.SetZoneName( m_Name ); aTarget.SetZoneName( m_Name );
if( !m_isKeepout ) if( !m_isRuleArea )
aTarget.SetNetCode( m_NetcodeSelection ); aTarget.SetNetCode( m_NetcodeSelection );
} }

View File

@ -113,7 +113,7 @@ private:
* Keepout zones and keepout flags. * Keepout zones and keepout flags.
* Note that DRC rules can set keepouts on zones whether they're a keepout or not. * Note that DRC rules can set keepouts on zones whether they're a keepout or not.
*/ */
bool m_isKeepout; bool m_isRuleArea;
bool m_keepoutDoNotAllowCopperPour; bool m_keepoutDoNotAllowCopperPour;
bool m_keepoutDoNotAllowVias; bool m_keepoutDoNotAllowVias;
@ -175,16 +175,16 @@ public:
} }
/** /**
* Accessors to parameters used in Keepout zones: * Accessors to parameters used in Rule Area zones:
*/ */
const bool GetIsKeepout() const { return m_isKeepout; } const bool GetIsRuleArea() const { return m_isRuleArea; }
const bool GetDoNotAllowCopperPour() const { return m_keepoutDoNotAllowCopperPour; } const bool GetDoNotAllowCopperPour() const { return m_keepoutDoNotAllowCopperPour; }
const bool GetDoNotAllowVias() const { return m_keepoutDoNotAllowVias; } const bool GetDoNotAllowVias() const { return m_keepoutDoNotAllowVias; }
const bool GetDoNotAllowTracks() const { return m_keepoutDoNotAllowTracks; } const bool GetDoNotAllowTracks() const { return m_keepoutDoNotAllowTracks; }
const bool GetDoNotAllowPads() const { return m_keepoutDoNotAllowPads; } const bool GetDoNotAllowPads() const { return m_keepoutDoNotAllowPads; }
const bool GetDoNotAllowFootprints() const { return m_keepoutDoNotAllowFootprints; } const bool GetDoNotAllowFootprints() const { return m_keepoutDoNotAllowFootprints; }
void SetIsKeepout( bool aEnable ) { m_isKeepout = aEnable; } void SetIsRuleArea( bool aEnable ) { m_isRuleArea = aEnable; }
void SetDoNotAllowCopperPour( bool aEnable ) { m_keepoutDoNotAllowCopperPour = aEnable; } void SetDoNotAllowCopperPour( bool aEnable ) { m_keepoutDoNotAllowCopperPour = aEnable; }
void SetDoNotAllowVias( bool aEnable ) { m_keepoutDoNotAllowVias = aEnable; } void SetDoNotAllowVias( bool aEnable ) { m_keepoutDoNotAllowVias = aEnable; }
void SetDoNotAllowTracks( bool aEnable ) { m_keepoutDoNotAllowTracks = aEnable; } void SetDoNotAllowTracks( bool aEnable ) { m_keepoutDoNotAllowTracks = aEnable; }

View File

@ -74,7 +74,7 @@ int InvokeNonCopperZonesEditor( PCB_BASE_FRAME* aParent, ZONE_SETTINGS* aSetting
int InvokeCopperZonesEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings ); int InvokeCopperZonesEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings );
/** /**
* Function InvokeKeepoutAreaEditor * Function InvokeRuleAreaEditor
* invokes up a modal dialog window for copper zone editing. * invokes up a modal dialog window for copper zone editing.
* *
* @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog, * @param aCaller is the PCB_BASE_FRAME calling parent window for the modal dialog,
@ -82,6 +82,6 @@ int InvokeCopperZonesEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings )
* @param aSettings points to the ZONE_SETTINGS to edit. * @param aSettings points to the ZONE_SETTINGS to edit.
* @return int - tells if user aborted, changed only one zone, or all of them. * @return int - tells if user aborted, changed only one zone, or all of them.
*/ */
int InvokeKeepoutAreaEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings ); int InvokeRuleAreaEditor( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aSettings );
#endif // ZONES_H_ #endif // ZONES_H_

View File

@ -57,11 +57,11 @@ void PCB_EDIT_FRAME::Edit_Zone_Params( ZONE_CONTAINER* aZone )
s_PickedList.ClearListAndDeleteItems(); s_PickedList.ClearListAndDeleteItems();
SaveCopyOfZones( s_PickedList, GetBoard(), -1, UNDEFINED_LAYER ); SaveCopyOfZones( s_PickedList, GetBoard(), -1, UNDEFINED_LAYER );
if( aZone->GetIsKeepout() ) if( aZone->GetIsRuleArea() )
{ {
// edit a keepout area on a copper layer // edit a rule area on a copper layer
zoneInfo << *aZone; zoneInfo << *aZone;
dialogResult = InvokeKeepoutAreaEditor( this, &zoneInfo ); dialogResult = InvokeRuleAreaEditor( this, &zoneInfo );
} }
else if( IsCopperLayer( aZone->GetLayer() ) ) else if( IsCopperLayer( aZone->GetLayer() ) )
{ {

View File

@ -72,10 +72,10 @@ bool ZONE_CONTAINER::IsSame( const ZONE_CONTAINER& aZoneToCompare )
return false; return false;
// Compare zone specific parameters // Compare zone specific parameters
if( GetIsKeepout() != aZoneToCompare.GetIsKeepout() ) if( GetIsRuleArea() != aZoneToCompare.GetIsRuleArea() )
return false; return false;
if( GetIsKeepout() ) if( GetIsRuleArea() )
{ {
if( GetDoNotAllowCopperPour() != aZoneToCompare.GetDoNotAllowCopperPour() ) if( GetDoNotAllowCopperPour() != aZoneToCompare.GetDoNotAllowCopperPour() )
return false; return false;

View File

@ -90,7 +90,7 @@ bool BOARD::CombineAllAreasInNet( PICKED_ITEMS_LIST* aDeletedList, int aNetCode,
if( curr_area->GetPriority() != area2->GetPriority() ) if( curr_area->GetPriority() != area2->GetPriority() )
continue; continue;
if( curr_area->GetIsKeepout() != area2->GetIsKeepout() ) if( curr_area->GetIsRuleArea() != area2->GetIsRuleArea() )
continue; continue;
if( curr_area->GetLayerSet() != area2->GetLayerSet() ) if( curr_area->GetLayerSet() != area2->GetLayerSet() )
@ -145,11 +145,11 @@ bool BOARD::TestAreaIntersections( ZONE_CONTAINER* area_to_test )
continue; continue;
// test for different types // test for different types
if( area_to_test->GetIsKeepout() != area2->GetIsKeepout() ) if( area_to_test->GetIsRuleArea() != area2->GetIsRuleArea() )
continue; continue;
// Keepout area-specific tests // Keepout area-specific tests
if( area_to_test->GetIsKeepout() ) if( area_to_test->GetIsRuleArea() )
{ {
if( area_to_test->GetDoNotAllowCopperPour() != area2->GetDoNotAllowCopperPour() ) if( area_to_test->GetDoNotAllowCopperPour() != area2->GetDoNotAllowCopperPour() )
continue; continue;