48 virtual bool Run()
override;
50 virtual const wxString
GetName()
const override
52 return wxT(
"diameter" );
57 return wxT(
"Tests via diameters" );
66 reportAux( wxT(
"Via diameter violations ignored. Tests not run." ) );
72 reportAux( wxT(
"No via diameter constraints found. Tests not run." ) );
79 auto checkViaDiameter =
94 bool fail_min =
false;
95 bool fail_max =
false;
96 int constraintDiameter = 0;
97 int actual =
via->GetWidth();
101 if( constraint.Value().HasMin() && actual < constraint.Value().Min() )
104 constraintDiameter = constraint.Value().Min();
107 if( constraint.Value().HasMax() && actual > constraint.Value().Max() )
110 constraintDiameter = constraint.Value().Max();
114 if( fail_min || fail_max )
121 msg =
formatMsg(
_(
"(%s min diameter %s; actual %s)" ),
122 constraint.GetName(),
128 msg =
formatMsg(
_(
"(%s max diameter %s; actual %s)" ),
129 constraint.GetName(),
134 drcItem->SetErrorMessage( drcItem->GetErrorText() + wxS(
" " ) + msg );
135 drcItem->SetItems( item );
136 drcItem->SetViolatingRule( constraint.GetParentRule() );
144 const int progressDelta = 500;
152 if( !checkViaDiameter( item ) )
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
bool HasRulesForConstraintType(DRC_CONSTRAINT_T constraintID)
bool IsErrorLimitExceeded(int error_code)
DRC_CONSTRAINT EvalRules(DRC_CONSTRAINT_T aConstraintType, const BOARD_ITEM *a, const BOARD_ITEM *b, PCB_LAYER_ID aLayer, REPORTER *aReporter=nullptr)
static std::shared_ptr< DRC_ITEM > Create(int aErrorCode)
Constructs a DRC_ITEM for the given error code.
virtual bool Run() override
Run this provider against the given PCB with configured options (if any).
virtual const wxString GetName() const override
virtual const wxString GetDescription() const override
DRC_TEST_PROVIDER_VIA_DIAMETER()
virtual ~DRC_TEST_PROVIDER_VIA_DIAMETER()
Represent a DRC "provider" which runs some DRC functions over a BOARD and spits out DRC_ITEM and posi...
virtual bool reportPhase(const wxString &aStageName)
virtual bool reportProgress(int aCount, int aSize, int aDelta)
virtual void reportViolation(std::shared_ptr< DRC_ITEM > &item, const VECTOR2I &aMarkerPos, int aMarkerLayer)
void reportAux(const wxString &aMsg)
wxString formatMsg(const wxString &aFormatString, const wxString &aSource, int aConstraint, int aActual)
virtual void reportRuleStatistics()
@ VIA_DIAMETER_CONSTRAINT
static DRC_REGISTER_TEST_PROVIDER< DRC_TEST_PROVIDER_ANNULAR_WIDTH > dummy