Allow min/max/opt to come from different rules.
This commit is contained in:
parent
1d9337a917
commit
3aa6d73770
|
@ -738,8 +738,8 @@ DRC_CONSTRAINT DRC_ENGINE::EvalRules( DRC_CONSTRAINT_T aConstraintType, const BO
|
|||
bool a_is_non_copper = a && ( !a->IsOnCopperLayer() || isKeepoutZone( a, false ) );
|
||||
bool b_is_non_copper = b && ( !b->IsOnCopperLayer() || isKeepoutZone( b, false ) );
|
||||
|
||||
const PAD* pad = nullptr;
|
||||
const ZONE* zone = nullptr;
|
||||
const PAD* pad = nullptr;
|
||||
const ZONE* zone = nullptr;
|
||||
|
||||
if( aConstraintType == ZONE_CONNECTION_CONSTRAINT
|
||||
|| aConstraintType == THERMAL_RELIEF_GAP_CONSTRAINT
|
||||
|
@ -1113,6 +1113,8 @@ DRC_CONSTRAINT DRC_ENGINE::EvalRules( DRC_CONSTRAINT_T aConstraintType, const BO
|
|||
// boolean here.
|
||||
constraint.m_DisallowFlags = c->constraint.m_DisallowFlags;
|
||||
|
||||
constraint.m_ZoneConnection = c->constraint.m_ZoneConnection;
|
||||
|
||||
constraint.SetParentRule( c->constraint.GetParentRule() );
|
||||
|
||||
return true;
|
||||
|
|
|
@ -37,6 +37,16 @@ DRC_RULE::DRC_RULE() :
|
|||
}
|
||||
|
||||
|
||||
DRC_RULE::DRC_RULE( const wxString& aName ) :
|
||||
m_Unary( false ),
|
||||
m_Implicit( false ),
|
||||
m_Name( aName ),
|
||||
m_LayerCondition( LSET::AllLayersMask() ),
|
||||
m_Condition( nullptr )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
DRC_RULE::~DRC_RULE()
|
||||
{
|
||||
delete m_Condition;
|
||||
|
|
|
@ -89,6 +89,8 @@ class DRC_RULE
|
|||
{
|
||||
public:
|
||||
DRC_RULE();
|
||||
DRC_RULE( const wxString& aName );
|
||||
|
||||
virtual ~DRC_RULE();
|
||||
|
||||
virtual bool AppliesTo( const BOARD_ITEM* a, const BOARD_ITEM* b = nullptr ) const
|
||||
|
|
|
@ -188,9 +188,10 @@ bool DRC_TEST_PROVIDER_SILK_CLEARANCE::Run()
|
|||
if( isInvisibleText( aRefItem->parent ) || isInvisibleText( aTestItem->parent ) )
|
||||
return true;
|
||||
|
||||
auto constraint = m_drcEngine->EvalRules( SILK_CLEARANCE_CONSTRAINT,
|
||||
aRefItem->parent, aTestItem->parent,
|
||||
aLayers.second );
|
||||
DRC_CONSTRAINT constraint = m_drcEngine->EvalRules( SILK_CLEARANCE_CONSTRAINT,
|
||||
aRefItem->parent,
|
||||
aTestItem->parent,
|
||||
aLayers.second );
|
||||
|
||||
if( constraint.IsNull() )
|
||||
return true;
|
||||
|
|
|
@ -600,10 +600,9 @@ void ZONE_FILLER::knockoutThermalReliefs( const ZONE* aZone, PCB_LAYER_ID aLayer
|
|||
{
|
||||
for( PAD* pad : footprint->Pads() )
|
||||
{
|
||||
if( !pad->IsOnLayer( aLayer ) )
|
||||
continue;
|
||||
|
||||
if( pad->GetNetCode() != aZone->GetNetCode() || pad->GetNetCode() <= 0 )
|
||||
if( !pad->IsOnLayer( aLayer )
|
||||
|| pad->GetNetCode() != aZone->GetNetCode()
|
||||
|| pad->GetNetCode() <= 0 )
|
||||
{
|
||||
aNoConnectionPads.push_back( pad );
|
||||
continue;
|
||||
|
|
|
@ -33,9 +33,9 @@
|
|||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.0,
|
||||
"height": 1.80086,
|
||||
"width": 2.49936
|
||||
"drill": 2.7,
|
||||
"height": 5.0,
|
||||
"width": 5.0
|
||||
},
|
||||
"silk_line_width": 0.15239999999999998,
|
||||
"silk_text_italic": false,
|
||||
|
|
Loading…
Reference in New Issue