47 virtual bool Run()
override;
49 virtual const wxString
GetName()
const override 56 return "Tests via diameters";
67 const int delta = 100;
71 reportAux(
"Via diameter violations ignored. Tests not run." );
77 reportAux(
"No via diameter constraints found. Tests not run." );
84 auto checkViaDiameter =
90 VIA*
via = dyn_cast<VIA*>( item );
99 bool fail_min =
false;
100 bool fail_max =
false;
101 int constraintDiameter = 0;
102 int actual =
via->GetWidth();
104 if( constraint.Value().HasMin() && actual < constraint.Value().Min() )
107 constraintDiameter = constraint.Value().Min();
110 if( constraint.Value().HasMax() && actual > constraint.Value().Max() )
113 constraintDiameter = constraint.Value().Max();
118 m_msg.Printf(
_(
"(%s min diameter %s; actual %s)" ),
119 constraint.GetName(),
125 m_msg.Printf(
_(
"(%s max diameter %s; actual %s)" ),
126 constraint.GetName(),
131 if( fail_min || fail_max )
135 drcItem->SetErrorMessage( drcItem->GetErrorText() + wxS(
" " ) +
m_msg );
136 drcItem->SetItems( item );
137 drcItem->SetViolatingRule( constraint.GetParentRule() );
152 if( !checkViaDiameter( item ) )
wxString MessageTextFromValue(EDA_UNITS aUnits, int aValue, bool aAddUnitLabel, EDA_DATA_TYPE aType)
Convert a value to a string using double notation.
static std::shared_ptr< DRC_ITEM > Create(int aErrorCode)
Constructs a DRC_ITEM for the given error code.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
static DRC_REGISTER_TEST_PROVIDER< DRC_TEST_PROVIDER_ANNULUS > dummy
bool IsErrorLimitExceeded(int error_code)
virtual bool reportProgress(int aCount, int aSize, int aDelta)
virtual void reportRuleStatistics()
bool HasRulesForConstraintType(DRC_CONSTRAINT_T constraintID)
virtual bool reportPhase(const wxString &aStageName)
virtual ~DRC_TEST_PROVIDER_VIA_DIAMETER()
EDA_UNITS userUnits() const
virtual std::set< DRC_CONSTRAINT_T > GetConstraintTypes() const override
DRC_CONSTRAINT EvalRules(DRC_CONSTRAINT_T aConstraintId, const BOARD_ITEM *a, const BOARD_ITEM *b, PCB_LAYER_ID aLayer, REPORTER *aReporter=nullptr)
virtual void reportViolation(std::shared_ptr< DRC_ITEM > &item, wxPoint aMarkerPos)
virtual const wxString GetDescription() const override
DRC_TEST_PROVIDER is a base class that represents a DRC "provider" which runs some DRC functions over...
int GetNumPhases() const override
virtual const wxString GetName() const override
DRC_TEST_PROVIDER_VIA_DIAMETER()
virtual void reportAux(wxString fmt,...)
virtual bool Run() override
Runs this provider against the given PCB with configured options (if any).