KiCad PCB EDA Suite
Loading...
Searching...
No Matches
drc_item.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2007 Dick Hollenbeck, [email protected]
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25
26#include "wx/html/m_templ.h"
27#include "wx/html/styleparams.h"
28#include "core/kicad_algo.h"
29#include <drc/drc_item.h>
30#include <drc/drc_rule.h>
31#include <board.h>
32#include <pcb_marker.h>
33#include <i18n_utility.h>
34
35
36// These, being statically-defined, require specialized I18N handling.
37// We don't translate on initialization and instead do it in the getters.
38
39// NOTE: Avoid changing the settings key for a DRC item after it has been created
40
41
42DRC_ITEM DRC_ITEM::heading_electrical( 0, _HKI( "Electrical" ), "" );
43DRC_ITEM DRC_ITEM::heading_DFM( 0, _HKI( "Design for Manufacturing" ), "" );
44DRC_ITEM DRC_ITEM::heading_schematic_parity( 0, _HKI( "Schematic Parity" ), "" );
45DRC_ITEM DRC_ITEM::heading_signal_integrity( 0, _HKI( "Signal Integrity" ), "" );
46DRC_ITEM DRC_ITEM::heading_readability( 0, _HKI( "Readability" ), "" );
47DRC_ITEM DRC_ITEM::heading_misc( 0, _HKI( "Miscellaneous" ), "" );
50
52 _HKI( "Missing connection between items" ),
53 wxT( "unconnected_items" ) );
54
56 _HKI( "Items shorting two nets" ),
57 wxT( "shorting_items" ) );
58
60 _HKI( "Items not allowed" ),
61 wxT( "items_not_allowed" ) );
62
64 _HKI( "Text (or dimension) on Edge.Cuts layer" ),
65 wxT( "text_on_edge_cuts" ) );
66
68 _HKI( "Clearance violation" ),
69 wxT( "clearance" ) );
70
72 _HKI( "Creepage violation" ),
73 wxT( "creepage" ) );
74
76 _HKI( "Tracks crossing" ),
77 wxT( "tracks_crossing" ) );
78
80 _HKI( "Board edge clearance violation" ),
81 wxT( "copper_edge_clearance" ) );
82
84 _HKI( "Copper zones intersect" ),
85 wxT( "zones_intersect" ) );
86
88 _HKI( "Isolated copper fill" ),
89 wxT( "isolated_copper" ) );
90
92 _HKI( "Thermal relief connection to zone incomplete" ),
93 wxT( "starved_thermal" ) );
94
96 _HKI( "Via is not connected or connected on only one layer" ),
97 wxT( "via_dangling" ) );
98
100 _HKI( "Track has unconnected end" ),
101 wxT( "track_dangling" ) );
102
104 _HKI( "Hole clearance violation" ),
105 wxT( "hole_clearance" ) );
106
108 _HKI( "Drilled hole too close to other hole" ),
109 wxT( "hole_to_hole" ) );
110
112 _HKI( "Drilled holes co-located" ),
113 wxT( "holes_co_located" ) );
114
116 _HKI( "Copper connection too narrow" ),
117 wxT( "connection_width" ) );
118
120 _HKI( "Track width" ),
121 wxT( "track_width" ) );
122
124 _HKI( "Track angle" ),
125 wxT( "track_angle" ) );
126
128 _HKI( "Track segment length" ),
129 wxT( "track_segment_length" ) );
130
132 _HKI( "Annular width" ),
133 wxT( "annular_width" ) );
134
136 _HKI( "Hole size out of range" ),
137 wxT( "drill_out_of_range" ) );
138
140 _HKI( "Via diameter" ),
141 wxT( "via_diameter" ) );
142
144 _HKI( "Padstack is questionable" ),
145 wxT( "padstack" ) );
146
148 _HKI( "Padstack is not valid" ),
149 wxT( "padstack_invalid" ) );
150
152 _HKI( "Micro via hole size out of range" ),
153 wxT( "microvia_drill_out_of_range" ) );
154
156 _HKI( "Courtyards overlap" ),
157 wxT( "courtyards_overlap" ) );
158
160 _HKI( "Footprint has no courtyard defined" ),
161 wxT( "missing_courtyard" ) );
162
164 _HKI( "Footprint has malformed courtyard" ),
165 wxT( "malformed_courtyard" ) );
166
168 _HKI( "PTH inside courtyard" ),
169 wxT( "pth_inside_courtyard" ) );
170
172 _HKI( "NPTH inside courtyard" ),
173 wxT( "npth_inside_courtyard" ) );
174
176 _HKI( "Item on a disabled copper layer" ),
177 wxT( "item_on_disabled_layer" ) );
178
180 _HKI( "Board has malformed outline" ),
181 wxT( "invalid_outline" ) );
182
184 _HKI( "Duplicate footprints" ),
185 wxT( "duplicate_footprints" ) );
186
188 _HKI( "Missing footprint" ),
189 wxT( "missing_footprint" ) );
190
192 _HKI( "Extra footprint" ),
193 wxT( "extra_footprint" ) );
194
196 _HKI( "Pad net doesn't match schematic" ),
197 wxT( "net_conflict" ) );
198
200 _HKI( "Footprint attributes don't match symbol" ),
201 wxT( "footprint_symbol_mismatch" ) );
202
204 _HKI( "Footprint doesn't match symbol's footprint filters" ),
205 wxT( "footprint_filters_mismatch" ) );
206
208 _HKI( "Footprint not found in libraries" ),
209 wxT( "lib_footprint_issues" ) );
210
212 _HKI( "Footprint doesn't match copy in library" ),
213 wxT( "lib_footprint_mismatch" ) );
214
216 _HKI( "Unresolved text variable" ),
217 wxT( "unresolved_variable" ) );
218
220 _HKI( "Assertion failure" ),
221 wxT( "assertion_failure" ) );
222
224 _HKI( "Warning" ),
225 wxT( "generic_warning" ) );
226
228 _HKI( "Error" ),
229 wxT( "generic_error" ) );
230
232 _HKI( "Copper sliver" ),
233 wxT( "copper_sliver" ) );
234
236 _HKI( "Solder mask aperture bridges items with different nets" ),
237 wxT( "solder_mask_bridge" ) );
238
240 _HKI( "Silkscreen clipped by solder mask" ),
241 wxT( "silk_over_copper" ) );
242
244 _HKI( "Silkscreen clipped by board edge" ),
245 wxT( "silk_edge_clearance" ) );
246
248 _HKI( "Silkscreen overlap" ),
249 wxT( "silk_overlap" ) );
250
252 _HKI( "Text height out of range" ),
253 wxT( "text_height" ) );
254
256 _HKI( "Text thickness out of range" ),
257 wxT( "text_thickness" ) );
258
260 _HKI( "Track length out of range" ),
261 wxT( "length_out_of_range" ) );
262
264 _HKI( "Skew between tracks out of range" ),
265 wxT( "skew_out_of_range" ) );
266
267// Note: this used to only check against a max value, hence the settings key too_many_vias
269 _HKI( "Too many or too few vias on a connection" ),
270 wxT( "too_many_vias" ) );
271
273 _HKI( "Differential pair gap out of range" ),
274 wxT( "diff_pair_gap_out_of_range" ) );
275
277 _HKI( "Differential uncoupled length too long" ),
278 wxT( "diff_pair_uncoupled_length_too_long" ) );
279
281 _HKI( "Footprint is not valid" ),
282 wxT( "footprint" ) );
283
285 _HKI( "Footprint component type doesn't match footprint pads" ),
286 wxT( "footprint_type_mismatch" ) );
287
289 _HKI( "Through hole pad has no hole" ),
290 wxT( "through_hole_pad_without_hole" ) );
291
293 _HKI( "Mirrored text on front layer" ),
294 wxT( "mirrored_text_on_front_layer" ) );
295
297 _HKI( "Non-Mirrored text on back layer" ),
298 wxT( "nonmirrored_text_on_back_layer" ) );
299
302
304 _HKI( "Drilled hole too close to other hole - deprecated" ),
305 wxT( "hole_near_hole" ) );
306
307std::vector<std::reference_wrapper<RC_ITEM>> DRC_ITEM::allItemTypes(
308 {
317
336
345
352
361
376
377 // Deprecated items need to come second to last in the list
378 // They will not be shown in the panel but will be used to
379 // parse old settings files
382
383 // DRC_ITEM types with no user-editable severities
384 // NOTE: this MUST be the last grouping in the list!
389 } );
390
391
392std::shared_ptr<DRC_ITEM> DRC_ITEM::Create( int aErrorCode )
393{
394 switch( aErrorCode )
395 {
396 case DRCE_UNCONNECTED_ITEMS: return std::make_shared<DRC_ITEM>( unconnectedItems );
397 case DRCE_SHORTING_ITEMS: return std::make_shared<DRC_ITEM>( shortingItems );
398 case DRCE_ALLOWED_ITEMS: return std::make_shared<DRC_ITEM>( itemsNotAllowed );
399 case DRCE_TEXT_ON_EDGECUTS: return std::make_shared<DRC_ITEM>( textOnEdgeCuts );
400 case DRCE_CLEARANCE: return std::make_shared<DRC_ITEM>( clearance );
401 case DRCE_CREEPAGE: return std::make_shared<DRC_ITEM>( creepage );
402 case DRCE_TRACKS_CROSSING: return std::make_shared<DRC_ITEM>( tracksCrossing );
403 case DRCE_EDGE_CLEARANCE: return std::make_shared<DRC_ITEM>( edgeClearance );
404 case DRCE_ZONES_INTERSECT: return std::make_shared<DRC_ITEM>( zonesIntersect );
405 case DRCE_ISOLATED_COPPER: return std::make_shared<DRC_ITEM>( isolatedCopper );
406 case DRCE_STARVED_THERMAL: return std::make_shared<DRC_ITEM>( starvedThermal );
407 case DRCE_DANGLING_VIA: return std::make_shared<DRC_ITEM>( viaDangling );
408 case DRCE_DANGLING_TRACK: return std::make_shared<DRC_ITEM>( trackDangling );
409 case DRCE_DRILLED_HOLES_TOO_CLOSE: return std::make_shared<DRC_ITEM>( holeNearHole );
410 case DRCE_DRILLED_HOLES_COLOCATED: return std::make_shared<DRC_ITEM>( holesCoLocated );
411 case DRCE_HOLE_CLEARANCE: return std::make_shared<DRC_ITEM>( holeClearance );
412 case DRCE_CONNECTION_WIDTH: return std::make_shared<DRC_ITEM>( connectionWidth );
413 case DRCE_TRACK_WIDTH: return std::make_shared<DRC_ITEM>( trackWidth );
414 case DRCE_TRACK_ANGLE: return std::make_shared<DRC_ITEM>( trackAngle );
415 case DRCE_TRACK_SEGMENT_LENGTH: return std::make_shared<DRC_ITEM>( trackSegmentLength );
416 case DRCE_ANNULAR_WIDTH: return std::make_shared<DRC_ITEM>( annularWidth );
417 case DRCE_DRILL_OUT_OF_RANGE: return std::make_shared<DRC_ITEM>( drillTooSmall );
418 case DRCE_VIA_DIAMETER: return std::make_shared<DRC_ITEM>( viaDiameter );
419 case DRCE_PADSTACK: return std::make_shared<DRC_ITEM>( padstack );
420 case DRCE_PADSTACK_INVALID: return std::make_shared<DRC_ITEM>( padstackInvalid );
421 case DRCE_MICROVIA_DRILL_OUT_OF_RANGE: return std::make_shared<DRC_ITEM>( microviaDrillTooSmall );
422 case DRCE_OVERLAPPING_FOOTPRINTS: return std::make_shared<DRC_ITEM>( courtyardsOverlap );
423 case DRCE_MISSING_COURTYARD: return std::make_shared<DRC_ITEM>( missingCourtyard );
424 case DRCE_MALFORMED_COURTYARD: return std::make_shared<DRC_ITEM>( malformedCourtyard );
425 case DRCE_PTH_IN_COURTYARD: return std::make_shared<DRC_ITEM>( pthInsideCourtyard );
426 case DRCE_NPTH_IN_COURTYARD: return std::make_shared<DRC_ITEM>( npthInsideCourtyard );
427 case DRCE_DISABLED_LAYER_ITEM: return std::make_shared<DRC_ITEM>( itemOnDisabledLayer );
428 case DRCE_INVALID_OUTLINE: return std::make_shared<DRC_ITEM>( invalidOutline );
429 case DRCE_MISSING_FOOTPRINT: return std::make_shared<DRC_ITEM>( missingFootprint );
430 case DRCE_DUPLICATE_FOOTPRINT: return std::make_shared<DRC_ITEM>( duplicateFootprints );
431 case DRCE_NET_CONFLICT: return std::make_shared<DRC_ITEM>( netConflict );
432 case DRCE_EXTRA_FOOTPRINT: return std::make_shared<DRC_ITEM>( extraFootprint );
433 case DRCE_SCHEMATIC_PARITY: return std::make_shared<DRC_ITEM>( schematicParity );
434 case DRCE_FOOTPRINT_FILTERS: return std::make_shared<DRC_ITEM>( footprintFilters );
435 case DRCE_LIB_FOOTPRINT_ISSUES: return std::make_shared<DRC_ITEM>( libFootprintIssues );
436 case DRCE_LIB_FOOTPRINT_MISMATCH: return std::make_shared<DRC_ITEM>( libFootprintMismatch );
437 case DRCE_UNRESOLVED_VARIABLE: return std::make_shared<DRC_ITEM>( unresolvedVariable );
438 case DRCE_ASSERTION_FAILURE: return std::make_shared<DRC_ITEM>( assertionFailure );
439 case DRCE_GENERIC_WARNING: return std::make_shared<DRC_ITEM>( genericWarning );
440 case DRCE_GENERIC_ERROR: return std::make_shared<DRC_ITEM>( genericError );
441 case DRCE_COPPER_SLIVER: return std::make_shared<DRC_ITEM>( copperSliver );
442 case DRCE_OVERLAPPING_SILK: return std::make_shared<DRC_ITEM>( silkOverlaps );
443 case DRCE_SILK_CLEARANCE: return std::make_shared<DRC_ITEM>( silkClearance );
444 case DRCE_SILK_EDGE_CLEARANCE: return std::make_shared<DRC_ITEM>( silkEdgeClearance );
445 case DRCE_SOLDERMASK_BRIDGE: return std::make_shared<DRC_ITEM>( solderMaskBridge );
446 case DRCE_TEXT_HEIGHT: return std::make_shared<DRC_ITEM>( textHeightOutOfRange );
447 case DRCE_TEXT_THICKNESS: return std::make_shared<DRC_ITEM>( textThicknessOutOfRange );
448 case DRCE_LENGTH_OUT_OF_RANGE: return std::make_shared<DRC_ITEM>( lengthOutOfRange );
449 case DRCE_SKEW_OUT_OF_RANGE: return std::make_shared<DRC_ITEM>( skewOutOfRange );
450 case DRCE_VIA_COUNT_OUT_OF_RANGE: return std::make_shared<DRC_ITEM>( viaCountOutOfRange );
451 case DRCE_DIFF_PAIR_GAP_OUT_OF_RANGE: return std::make_shared<DRC_ITEM>( diffPairGapOutOfRange );
452 case DRCE_DIFF_PAIR_UNCOUPLED_LENGTH_TOO_LONG: return std::make_shared<DRC_ITEM>( diffPairUncoupledLengthTooLong );
453 case DRCE_FOOTPRINT: return std::make_shared<DRC_ITEM>( footprint );
454 case DRCE_FOOTPRINT_TYPE_MISMATCH: return std::make_shared<DRC_ITEM>( footprintTypeMismatch );
455 case DRCE_PAD_TH_WITH_NO_HOLE: return std::make_shared<DRC_ITEM>( footprintTHPadhasNoHole );
456 case DRCE_MIRRORED_TEXT_ON_FRONT_LAYER: return std::make_shared<DRC_ITEM>( mirroredTextOnFrontLayer );
457 case DRCE_NONMIRRORED_TEXT_ON_BACK_LAYER: return std::make_shared<DRC_ITEM>( nonMirroredTextOnBackLayer );
458 default:
459 wxFAIL_MSG( wxT( "Unknown DRC error code" ) );
460 return nullptr;
461 }
462}
463
464
465std::shared_ptr<DRC_ITEM> DRC_ITEM::Create( const wxString& aErrorKey )
466{
467 for( const RC_ITEM& item : allItemTypes )
468 {
469 if( aErrorKey == item.GetSettingsKey() )
470 return std::make_shared<DRC_ITEM>( static_cast<const DRC_ITEM&>( item ) );
471 }
472
473 // This can happen if a project has old-format exclusions. Just drop these items.
474 return nullptr;
475}
476
477
479{
481 {
482 // we have lots of segments, but it's enough to show the first P and the first N
483 return niluuid;
484 }
485
486 return m_ids.size() > 2 ? m_ids[2] : niluuid;
487}
488
489
491{
493 {
494 // we have lots of segments, but it's enough to show the first P and the first N
495 return niluuid;
496 }
497
498 return m_ids.size() > 3 ? m_ids[3] : niluuid;
499}
500
501
503{
504 if( m_violatingRule )
505 return wxString::Format( _( "Rule: %s" ), m_violatingRule->m_Name );
506 else
507 return _( "Local override" );
508}
509
510
512{
513 m_severities = aSeverities;
514
515 m_filteredMarkers.clear();
516
517 for( PCB_MARKER* marker : m_board->Markers() )
518 {
519 if( alg::contains( m_markerTypes, marker->GetMarkerType() )
520 && ( marker->GetSeverity() & m_severities ) > 0 )
521 {
522 m_filteredMarkers.push_back( marker );
523 }
524 }
525}
526
527
528int DRC_ITEMS_PROVIDER::GetCount( int aSeverity ) const
529{
530 if( aSeverity < 0 )
531 return m_filteredMarkers.size();
532
533 int count = 0;
534
535 for( PCB_MARKER* marker : m_board->Markers() )
536 {
537 if( alg::contains( m_markerTypes, marker->GetMarkerType() )
538 && ( marker->GetSeverity() & aSeverity ) > 0 )
539 {
540 count++;
541 }
542 }
543
544 return count;
545}
546
547
548std::shared_ptr<RC_ITEM> DRC_ITEMS_PROVIDER::GetItem( int aIndex ) const
549{
550 PCB_MARKER* marker = m_filteredMarkers[ aIndex ];
551
552 return marker ? marker->GetRCItem() : nullptr;
553}
554
555
556void DRC_ITEMS_PROVIDER::DeleteItem( int aIndex, bool aDeep )
557{
558 PCB_MARKER* marker = m_filteredMarkers[ aIndex ];
559 m_filteredMarkers.erase( m_filteredMarkers.begin() + aIndex );
560
561 if( aDeep )
562 m_board->Delete( marker );
563}
564
virtual void Delete(BOARD_ITEM *aItem)
Removes an item from the container and deletes it.
const MARKERS & Markers() const
Definition: board.h:344
void SetSeverities(int aSeverities) override
Definition: drc_item.cpp:511
std::vector< MARKER_BASE::MARKER_T > m_markerTypes
Definition: drc_item.h:291
void DeleteItem(int aIndex, bool aDeep) override
Remove (and optionally deletes) the indexed item from the list.
Definition: drc_item.cpp:556
int GetCount(int aSeverity=-1) const override
Definition: drc_item.cpp:528
std::vector< PCB_MARKER * > m_filteredMarkers
Definition: drc_item.h:294
std::shared_ptr< RC_ITEM > GetItem(int aIndex) const override
Retrieve a RC_ITEM by index.
Definition: drc_item.cpp:548
static DRC_ITEM nonMirroredTextOnBackLayer
Definition: drc_item.h:256
static DRC_ITEM lengthOutOfRange
Definition: drc_item.h:247
KIID GetAuxItem3ID() const override
Definition: drc_item.cpp:490
static DRC_ITEM viaDiameter
Definition: drc_item.h:217
static DRC_ITEM silkEdgeClearance
Definition: drc_item.h:242
static DRC_ITEM trackWidth
Definition: drc_item.h:212
static DRC_ITEM heading_DFM
Definition: drc_item.h:187
static DRC_ITEM annularWidth
Definition: drc_item.h:215
static DRC_ITEM pthInsideCourtyard
Definition: drc_item.h:224
static DRC_ITEM trackSegmentLength
Definition: drc_item.h:214
static DRC_ITEM schematicParity
Definition: drc_item.h:232
wxString GetViolatingRuleDesc() const override
Definition: drc_item.cpp:502
static DRC_ITEM holeNearHolev8
Deprecated items.
Definition: drc_item.h:259
static DRC_ITEM netConflict
Definition: drc_item.h:231
static DRC_ITEM copperSliver
Definition: drc_item.h:240
static DRC_ITEM holeNearHole
Definition: drc_item.h:208
static DRC_ITEM heading_signal_integrity
Definition: drc_item.h:189
static DRC_ITEM courtyardsOverlap
Definition: drc_item.h:221
static DRC_ITEM textThicknessOutOfRange
Definition: drc_item.h:246
static DRC_ITEM connectionWidth
Definition: drc_item.h:211
static DRC_ITEM footprint
Definition: drc_item.h:252
static DRC_ITEM unresolvedVariable
Definition: drc_item.h:236
static DRC_ITEM assertionFailure
Definition: drc_item.h:237
static DRC_ITEM npthInsideCourtyard
Definition: drc_item.h:225
static DRC_ITEM footprintFilters
Definition: drc_item.h:233
static std::shared_ptr< DRC_ITEM > Create(int aErrorCode)
Constructs a DRC_ITEM for the given error code.
Definition: drc_item.cpp:392
static DRC_ITEM textOnEdgeCuts
Definition: drc_item.h:198
static DRC_ITEM creepage
Definition: drc_item.h:200
static std::vector< std::reference_wrapper< RC_ITEM > > allItemTypes
A list of all DRC_ITEM types which are valid error codes.
Definition: drc_item.h:184
static DRC_ITEM zonesIntersect
Definition: drc_item.h:203
static DRC_ITEM starvedThermal
Definition: drc_item.h:205
static DRC_ITEM heading_deprecated
Definition: drc_item.h:193
static DRC_ITEM shortingItems
Definition: drc_item.h:196
static DRC_ITEM tracksCrossing
Definition: drc_item.h:201
static DRC_ITEM missingCourtyard
Definition: drc_item.h:222
static DRC_ITEM skewOutOfRange
Definition: drc_item.h:248
static DRC_ITEM trackDangling
Definition: drc_item.h:207
static DRC_ITEM viaDangling
Definition: drc_item.h:206
static DRC_ITEM genericError
Definition: drc_item.h:239
static DRC_ITEM drillTooSmall
Definition: drc_item.h:216
static DRC_ITEM holesCoLocated
Definition: drc_item.h:209
static DRC_ITEM missingFootprint
Definition: drc_item.h:229
static DRC_ITEM textHeightOutOfRange
Definition: drc_item.h:245
static DRC_ITEM diffPairGapOutOfRange
Definition: drc_item.h:250
static DRC_ITEM heading_electrical
Definition: drc_item.h:186
static DRC_ITEM padstack
Definition: drc_item.h:218
static DRC_ITEM itemOnDisabledLayer
Definition: drc_item.h:226
static DRC_ITEM mirroredTextOnFrontLayer
Definition: drc_item.h:255
static DRC_ITEM heading_readability
Definition: drc_item.h:190
static DRC_ITEM itemsNotAllowed
Definition: drc_item.h:197
static DRC_ITEM extraFootprint
Definition: drc_item.h:230
static DRC_ITEM diffPairUncoupledLengthTooLong
Definition: drc_item.h:251
KIID GetAuxItem2ID() const override
Definition: drc_item.cpp:478
static DRC_ITEM unconnectedItems
Definition: drc_item.h:195
static DRC_ITEM clearance
Definition: drc_item.h:199
DRC_RULE * m_violatingRule
Definition: drc_item.h:262
static DRC_ITEM libFootprintMismatch
Definition: drc_item.h:235
static DRC_ITEM viaCountOutOfRange
Definition: drc_item.h:249
static DRC_ITEM edgeClearance
Definition: drc_item.h:202
static DRC_ITEM genericWarning
Definition: drc_item.h:238
static DRC_ITEM invalidOutline
Definition: drc_item.h:227
static DRC_ITEM silkOverlaps
Definition: drc_item.h:244
static DRC_ITEM isolatedCopper
Definition: drc_item.h:204
static DRC_ITEM malformedCourtyard
Definition: drc_item.h:223
static DRC_ITEM heading_internal
Definition: drc_item.h:192
static DRC_ITEM holeClearance
Definition: drc_item.h:210
static DRC_ITEM libFootprintIssues
Definition: drc_item.h:234
static DRC_ITEM padstackInvalid
Definition: drc_item.h:219
static DRC_ITEM trackAngle
Definition: drc_item.h:213
static DRC_ITEM heading_schematic_parity
Definition: drc_item.h:188
static DRC_ITEM microviaDrillTooSmall
Definition: drc_item.h:220
static DRC_ITEM solderMaskBridge
Definition: drc_item.h:243
static DRC_ITEM heading_misc
Definition: drc_item.h:191
static DRC_ITEM footprintTypeMismatch
Definition: drc_item.h:253
static DRC_ITEM footprintTHPadhasNoHole
Definition: drc_item.h:254
static DRC_ITEM silkClearance
Definition: drc_item.h:241
static DRC_ITEM duplicateFootprints
Definition: drc_item.h:228
wxString m_Name
Definition: drc_rule.h:117
Definition: kiid.h:49
std::shared_ptr< RC_ITEM > GetRCItem() const
Definition: marker_base.h:112
A holder for a rule check item, DRC in Pcbnew or ERC in Eeschema.
Definition: rc_item.h:79
int m_errorCode
The error code's numeric value.
Definition: rc_item.h:185
KIIDS m_ids
Definition: rc_item.h:191
#define _HKI(x)
@ DRCE_DISABLED_LAYER_ITEM
Definition: drc_item.h:71
@ DRCE_SKEW_OUT_OF_RANGE
Definition: drc_item.h:104
@ DRCE_DIFF_PAIR_GAP_OUT_OF_RANGE
Definition: drc_item.h:106
@ DRCE_CREEPAGE
Definition: drc_item.h:44
@ DRCE_HOLE_CLEARANCE
Definition: drc_item.h:54
@ DRCE_SILK_EDGE_CLEARANCE
Definition: drc_item.h:98
@ DRCE_ZONES_INTERSECT
Definition: drc_item.h:47
@ DRCE_FOOTPRINT_FILTERS
Definition: drc_item.h:79
@ DRCE_VIA_DIAMETER
Definition: drc_item.h:61
@ DRCE_UNCONNECTED_ITEMS
Definition: drc_item.h:39
@ DRCE_TRACK_WIDTH
Definition: drc_item.h:55
@ DRCE_PADSTACK
Definition: drc_item.h:62
@ DRCE_MIRRORED_TEXT_ON_FRONT_LAYER
Definition: drc_item.h:109
@ DRCE_LIB_FOOTPRINT_ISSUES
Definition: drc_item.h:82
@ DRCE_OVERLAPPING_FOOTPRINTS
Definition: drc_item.h:65
@ DRCE_INVALID_OUTLINE
Definition: drc_item.h:72
@ DRCE_TEXT_ON_EDGECUTS
Definition: drc_item.h:42
@ DRCE_OVERLAPPING_SILK
Definition: drc_item.h:101
@ DRCE_DRILL_OUT_OF_RANGE
Definition: drc_item.h:60
@ DRCE_EDGE_CLEARANCE
Definition: drc_item.h:46
@ DRCE_STARVED_THERMAL
Definition: drc_item.h:49
@ DRCE_TRACK_SEGMENT_LENGTH
Definition: drc_item.h:57
@ DRCE_MISSING_COURTYARD
Definition: drc_item.h:66
@ DRCE_TRACK_ANGLE
Definition: drc_item.h:56
@ DRCE_CLEARANCE
Definition: drc_item.h:43
@ DRCE_ISOLATED_COPPER
Definition: drc_item.h:48
@ DRCE_GENERIC_ERROR
Definition: drc_item.h:90
@ DRCE_DRILLED_HOLES_TOO_CLOSE
Definition: drc_item.h:52
@ DRCE_ALLOWED_ITEMS
Definition: drc_item.h:41
@ DRCE_COPPER_SLIVER
Definition: drc_item.h:92
@ DRCE_PTH_IN_COURTYARD
Definition: drc_item.h:69
@ DRCE_DIFF_PAIR_UNCOUPLED_LENGTH_TOO_LONG
Definition: drc_item.h:107
@ DRCE_MICROVIA_DRILL_OUT_OF_RANGE
Definition: drc_item.h:64
@ DRCE_SHORTING_ITEMS
Definition: drc_item.h:40
@ DRCE_MALFORMED_COURTYARD
Definition: drc_item.h:67
@ DRCE_DANGLING_VIA
Definition: drc_item.h:50
@ DRCE_PADSTACK_INVALID
Definition: drc_item.h:63
@ DRCE_UNRESOLVED_VARIABLE
Definition: drc_item.h:87
@ DRCE_FOOTPRINT_TYPE_MISMATCH
Definition: drc_item.h:81
@ DRCE_NONMIRRORED_TEXT_ON_BACK_LAYER
Definition: drc_item.h:110
@ DRCE_DUPLICATE_FOOTPRINT
Definition: drc_item.h:75
@ DRCE_DANGLING_TRACK
Definition: drc_item.h:51
@ DRCE_TEXT_HEIGHT
Definition: drc_item.h:99
@ DRCE_ASSERTION_FAILURE
Definition: drc_item.h:88
@ DRCE_SOLDERMASK_BRIDGE
Definition: drc_item.h:93
@ DRCE_DRILLED_HOLES_COLOCATED
Definition: drc_item.h:53
@ DRCE_EXTRA_FOOTPRINT
Definition: drc_item.h:76
@ DRCE_SILK_CLEARANCE
Definition: drc_item.h:96
@ DRCE_LENGTH_OUT_OF_RANGE
Definition: drc_item.h:103
@ DRCE_LIB_FOOTPRINT_MISMATCH
Definition: drc_item.h:83
@ DRCE_NET_CONFLICT
Definition: drc_item.h:77
@ DRCE_MISSING_FOOTPRINT
Definition: drc_item.h:74
@ DRCE_PAD_TH_WITH_NO_HOLE
Definition: drc_item.h:84
@ DRCE_FOOTPRINT
Definition: drc_item.h:85
@ DRCE_GENERIC_WARNING
Definition: drc_item.h:89
@ DRCE_TEXT_THICKNESS
Definition: drc_item.h:100
@ DRCE_NPTH_IN_COURTYARD
Definition: drc_item.h:70
@ DRCE_CONNECTION_WIDTH
Definition: drc_item.h:59
@ DRCE_SCHEMATIC_PARITY
Definition: drc_item.h:78
@ DRCE_TRACKS_CROSSING
Definition: drc_item.h:45
@ DRCE_VIA_COUNT_OUT_OF_RANGE
Definition: drc_item.h:105
@ DRCE_ANNULAR_WIDTH
Definition: drc_item.h:58
#define _(s)
Some functions to handle hotkeys in KiCad.
KIID niluuid(0)
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:100