58 virtual bool Run()
override;
60 virtual const wxString
GetName()
const override
62 return wxT(
"miscellaneous" );
67 return wxT(
"Misc checks (board outline, missing textvars)" );
83 bool errorHandled =
false;
90 drcItem->SetErrorMessage( drcItem->GetErrorText() + wxS(
" " ) + msg );
91 drcItem->SetItems( itemA, itemB );
102 chainingEpsilon, &errorHandler ) )
113 msg.Printf(
_(
"(no edges found on Edge.Cuts layer)" ) );
115 drcItem->SetErrorMessage( drcItem->GetErrorText() + wxS(
" " ) + msg );
126 const int progressDelta = 2000;
142 auto checkDisabledLayers =
160 if( disabledLayers.test(
pad->GetPrincipalLayer() ) )
174 via->LayerPair( &top, &bottom );
176 if( disabledLayers.test( top ) )
178 else if( disabledLayers.test( bottom ) )
188 LSET badLayers = disabledLayers & item->GetLayerSet();
190 if( badLayers.any() )
191 badLayer = badLayers.
Seq().front();
199 msg.Printf(
_(
"(layer %s)" ),
LayerName( badLayer ) );
201 drcItem->SetErrorMessage( drcItem->GetErrorText() + wxS(
" " ) + msg );
202 drcItem->SetItems( item );
217 const int progressDelta = 2000;
228 auto checkAssertions =
241 drcItem->SetErrorMessage( drcItem->GetErrorText() + wxS(
" (" )
243 drcItem->SetItems( item );
258 const int progressDelta = 2000;
262 static const std::vector<KICAD_T> itemTypes = {
286 wxCHECK( boardItem,
false );
288 if(
text &&
text->GetShownText().Matches( wxT(
"*${*}*" ) ) )
291 drcItem->SetItems( item );
312 drawItems.
BuildDrawItemsList( drawingSheet->GetPageInfo(), drawingSheet->GetTitleBlock() );
324 if(
text &&
text->GetShownText().Matches( wxT(
"*${*}*" ) ) )
327 drcItem->SetItems( drawingSheet );
349 if( !
reportPhase(
_(
"Checking disabled layers..." ) ) )
constexpr EDA_IU_SCALE pcbIUScale
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Information pertinent to a Pcbnew printed circuit board.
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
int GetOutlinesChainingEpsilon()
PROJECT * GetProject() const
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
DS_PROXY_VIEW_ITEM * GetDrawingSheet() const
bool IsErrorLimitExceeded(int error_code)
void ProcessAssertions(const BOARD_ITEM *a, std::function< void(const DRC_CONSTRAINT *)> aFailureHandler, REPORTER *aReporter=nullptr)
static std::shared_ptr< DRC_ITEM > Create(int aErrorCode)
Constructs a DRC_ITEM for the given error code.
virtual const wxString GetName() const override
virtual ~DRC_TEST_PROVIDER_MISC()
void testDisabledLayers()
virtual const wxString GetDescription() const override
virtual bool Run() override
Run this provider against the given PCB with configured options (if any).
Represent a DRC "provider" which runs some DRC functions over a BOARD and spits out #DRC_ITEMs and po...
virtual bool reportPhase(const wxString &aStageName)
int forEachGeometryItem(const std::vector< KICAD_T > &aTypes, LSET aLayers, const std::function< bool(BOARD_ITEM *)> &aFunc)
virtual bool reportProgress(int aCount, int aSize, int aDelta)
virtual void reportViolation(std::shared_ptr< DRC_ITEM > &item, const VECTOR2I &aMarkerPos, int aMarkerLayer)
static std::vector< KICAD_T > s_allBasicItems
Base class to handle basic graphic items.
Store the list of graphic items: rect, lines, polygons and texts to draw/plot the title block and fra...
DS_DRAW_ITEM_BASE * GetFirst()
void BuildDrawItemsList(const PAGE_INFO &aPageInfo, const TITLE_BLOCK &aTitleBlock)
Drawing or plot the drawing sheet.
void SetFileName(const wxString &aFileName)
Set the filename to draw/plot.
void SetSheetName(const wxString &aSheetName)
Set the sheet name to draw/plot.
void SetSheetLayer(const wxString &aSheetLayer)
Set the sheet layer to draw/plot.
void SetSheetCount(int aSheetCount)
Set the value of the count of sheets, for basic inscriptions.
void SetPageNumber(const wxString &aPageNumber)
Set the value of the sheet number.
DS_DRAW_ITEM_BASE * GetNext()
void SetMilsToIUfactor(double aMils2Iu)
Set the scalar to convert pages units (mils) to draw/plot units.
void SetProject(const PROJECT *aProject)
virtual VECTOR2I GetPosition() const
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
LSET is a set of PCB_LAYER_IDs.
static LSET AllLayersMask()
LSEQ Seq(const PCB_LAYER_ID *aWishListSequence, unsigned aCount) const
Return an LSEQ from the union of this LSET and a desired sequence.
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
PCB_LAYER_ID GetLayer() const override
Return the primary layer this item is on.
Represent a set of closed polygons.
bool BuildBoardPolygonOutlines(BOARD *aBoard, SHAPE_POLY_SET &aOutlines, int aErrorMax, int aChainingEpsilon, OUTLINE_ERROR_HANDLER *aErrorHandler)
Extracts the board outlines and build a closed polygon from lines, arcs and circle items on edge cut ...
const std::function< void(const wxString &msg, BOARD_ITEM *itemA, BOARD_ITEM *itemB, const VECTOR2I &pt)> OUTLINE_ERROR_HANDLER
@ DRCE_DISABLED_LAYER_ITEM
@ DRCE_UNRESOLVED_VARIABLE
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
@ LAYER_DRAWINGSHEET
drawingsheet frame and titleblock
PCB_LAYER_ID
A quick note on layer IDs:
static DRC_REGISTER_TEST_PROVIDER< DRC_TEST_PROVIDER_ANNULAR_WIDTH > dummy
@ SMD
Smd pad, appears on the solder paste layer (default)
@ CONN
Like smd, does not appear on the solder paste layer (default)
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
@ PCB_FP_TEXTBOX_T
class FP_TEXTBOX, wrapped text in a footprint
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
@ PCB_FP_ZONE_T
class ZONE, managed by a footprint
@ PCB_PAD_T
class PAD, a pad in a footprint
@ PCB_FP_TEXT_T
class FP_TEXT, text in a footprint
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type