From 27c253780df443b23b60b161499ac3d8968c72ca Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Wed, 10 Jan 2024 19:22:05 +0000 Subject: [PATCH] Separate out Pad_Shape so auto-complete can work. --- pcbnew/dialogs/panel_setup_rules.cpp | 11 + pcbnew/dialogs/panel_setup_rules.h | 1 + pcbnew/pad.cpp | 4 +- qa/data/pcbnew/issue16566.kicad_dru | 5 + qa/data/pcbnew/issue16566.kicad_pcb | 326 ++++++++++ qa/data/pcbnew/issue16566.kicad_pro | 600 +++++++++++++++++++ qa/tests/pcbnew/drc/test_drc_regressions.cpp | 1 + 7 files changed, 946 insertions(+), 2 deletions(-) create mode 100644 qa/data/pcbnew/issue16566.kicad_dru create mode 100644 qa/data/pcbnew/issue16566.kicad_pcb create mode 100644 qa/data/pcbnew/issue16566.kicad_pro diff --git a/pcbnew/dialogs/panel_setup_rules.cpp b/pcbnew/dialogs/panel_setup_rules.cpp index 2976691e32..11b89c27a3 100644 --- a/pcbnew/dialogs/panel_setup_rules.cpp +++ b/pcbnew/dialogs/panel_setup_rules.cpp @@ -68,6 +68,7 @@ PANEL_SETUP_RULES::PANEL_SETUP_RULES( wxWindow* aParentWindow, PCB_EDIT_FRAME* a m_pinTypeRegex.Compile( "^Pin_Type\\s*[!=]=\\s*$", wxRE_ADVANCED ); m_fabPropRegex.Compile( "^Fabrication_Property\\s*[!=]=\\s*$", wxRE_ADVANCED ); m_shapeRegex.Compile( "^Shape\\s*[!=]=\\s*$", wxRE_ADVANCED ); + m_padShapeRegex.Compile( "^Pad_Shape\\s*[!=]=\\s*$", wxRE_ADVANCED ); m_zoneConnStyleRegex.Compile( "^Zone_Connection_Style\\s*[!=]=\\s*$", wxRE_ADVANCED ); m_compileButton->SetBitmap( KiBitmapBundle( BITMAPS::drc ) ); @@ -574,6 +575,16 @@ void PANEL_SETUP_RULES::onScintillaCharAdded( wxStyledTextEvent &aEvent ) "Polygon|" "Bezier" ); } + else if( m_padShapeRegex.Matches( last ) ) + { + tokens = wxT( "Circle|" + "Rectangle|" + "Oval|" + "Trapezoid|" + "Rounded rectangle|" + "Chamfered rectangle|" + "Custom" ); + } else if( m_zoneConnStyleRegex.Matches( last ) ) { tokens = wxT( "Inherited|" diff --git a/pcbnew/dialogs/panel_setup_rules.h b/pcbnew/dialogs/panel_setup_rules.h index 974054e1d9..27d1fbade4 100644 --- a/pcbnew/dialogs/panel_setup_rules.h +++ b/pcbnew/dialogs/panel_setup_rules.h @@ -67,6 +67,7 @@ private: wxRegEx m_pinTypeRegex; wxRegEx m_fabPropRegex; wxRegEx m_shapeRegex; + wxRegEx m_padShapeRegex; wxRegEx m_zoneConnStyleRegex; HTML_MESSAGE_BOX* m_helpWindow; diff --git a/pcbnew/pad.cpp b/pcbnew/pad.cpp index 66e4e11989..fc36b71ec9 100644 --- a/pcbnew/pad.cpp +++ b/pcbnew/pad.cpp @@ -1876,7 +1876,7 @@ static struct PAD_DESC ENUM_MAP::Instance() .Map( PAD_SHAPE::CIRCLE, _HKI( "Circle" ) ) - .Map( PAD_SHAPE::RECTANGLE, _HKI( "Rectangle" ) ) + .Map( PAD_SHAPE::RECTANGLE, _HKI( "Rectangle" ) ) .Map( PAD_SHAPE::OVAL, _HKI( "Oval" ) ) .Map( PAD_SHAPE::TRAPEZOID, _HKI( "Trapezoid" ) ) .Map( PAD_SHAPE::ROUNDRECT, _HKI( "Rounded rectangle" ) ) @@ -1946,7 +1946,7 @@ static struct PAD_DESC &PAD::SetAttribute, &PAD::GetAttribute ); propMgr.AddProperty( padType, groupPad ); - auto shape = new PROPERTY_ENUM( _HKI( "Shape" ), + auto shape = new PROPERTY_ENUM( _HKI( "Pad Shape" ), &PAD::SetShape, &PAD::GetShape ); propMgr.AddProperty( shape, groupPad ); diff --git a/qa/data/pcbnew/issue16566.kicad_dru b/qa/data/pcbnew/issue16566.kicad_dru new file mode 100644 index 0000000000..c2ef99f5e0 --- /dev/null +++ b/qa/data/pcbnew/issue16566.kicad_dru @@ -0,0 +1,5 @@ +(version 1) +(rule oval_clearance + (constraint clearance(min 5mm)) + (condition "A.Pad_Shape=='Oval'") +) diff --git a/qa/data/pcbnew/issue16566.kicad_pcb b/qa/data/pcbnew/issue16566.kicad_pcb new file mode 100644 index 0000000000..e6461f1ea3 --- /dev/null +++ b/qa/data/pcbnew/issue16566.kicad_pcb @@ -0,0 +1,326 @@ +(kicad_pcb + (version 20231231) + (generator "pcbnew") + (generator_version "7.99") + (general + (thickness 1.6) + (legacy_teardrops no) + ) + (paper "A4") + (layers + (0 "F.Cu" signal) + (31 "B.Cu" signal) + (32 "B.Adhes" user "B.Adhesive") + (33 "F.Adhes" user "F.Adhesive") + (34 "B.Paste" user) + (35 "F.Paste" user) + (36 "B.SilkS" user "B.Silkscreen") + (37 "F.SilkS" user "F.Silkscreen") + (38 "B.Mask" user) + (39 "F.Mask" user) + (40 "Dwgs.User" user "User.Drawings") + (41 "Cmts.User" user "User.Comments") + (42 "Eco1.User" user "User.Eco1") + (43 "Eco2.User" user "User.Eco2") + (44 "Edge.Cuts" user) + (45 "Margin" user) + (46 "B.CrtYd" user "B.Courtyard") + (47 "F.CrtYd" user "F.Courtyard") + (48 "B.Fab" user) + (49 "F.Fab" user) + (50 "User.1" user) + (51 "User.2" user) + (52 "User.3" user) + (53 "User.4" user) + (54 "User.5" user) + (55 "User.6" user) + (56 "User.7" user) + (57 "User.8" user) + (58 "User.9" user) + ) + (setup + (pad_to_mask_clearance 0) + (allow_soldermask_bridges_in_footprints no) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (plot_on_all_layers_selection 0x0000000_00000000) + (disableapertmacros no) + (usegerberextensions no) + (usegerberattributes yes) + (usegerberadvancedattributes yes) + (creategerberjobfile yes) + (dashed_line_dash_ratio 12.000000) + (dashed_line_gap_ratio 3.000000) + (svgprecision 4) + (plotframeref no) + (viasonmask no) + (mode 1) + (useauxorigin no) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (pdf_front_fp_property_popups yes) + (pdf_back_fp_property_popups yes) + (dxfpolygonmode yes) + (dxfimperialunits yes) + (dxfusepcbnewfont yes) + (psnegative no) + (psa4output no) + (plotreference yes) + (plotvalue yes) + (plotfptext yes) + (plotinvisibletext no) + (sketchpadsonfab no) + (subtractmaskfromsilk no) + (outputformat 1) + (mirror no) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + (net 0 "") + (net 1 "VCC") + (net 2 "GND") + (footprint "Resistor_SMD:R_1206_3216Metric" + (layer "F.Cu") + (uuid "bec61144-695e-45df-a68b-2fb7d976fdfa") + (at 151.5725 89.535) + (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor") + (property "Reference" "R1" + (at 0 -1.82 0) + (layer "F.SilkS") + (uuid "7f64c4bc-304e-4df6-8b8e-f74d21d27ce8") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "R" + (at 0 1.82 0) + (layer "F.Fab") + (uuid "d55fab90-b467-4428-8b3a-02bb4fb10172") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Footprint" "Resistor_SMD:R_1206_3216Metric" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "12f3df93-256c-4a8a-bbb9-a02f2375918f") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "ef32ab47-8b9c-4257-9a36-4ca59d5c64a9") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "460509b2-a2cc-4e4c-b02e-31160aa69868") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (path "/dada3a60-98e6-45a2-a8c7-a90f3284a597") + (attr smd) + (fp_line + (start -0.727064 -0.91) + (end 0.727064 -0.91) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0e796235-1c35-404e-8ff9-3ef674e7d2f8") + ) + (fp_line + (start -0.727064 0.91) + (end 0.727064 0.91) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "29093ac2-672f-41d2-95d3-83241eb8f68d") + ) + (fp_line + (start -2.28 -1.12) + (end 2.28 -1.12) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "72714531-9735-4440-83cb-6de80274c1b4") + ) + (fp_line + (start -2.28 1.12) + (end -2.28 -1.12) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "b37cbb6d-8fb4-468b-9c18-cbd3c49ad8f1") + ) + (fp_line + (start 2.28 -1.12) + (end 2.28 1.12) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "99aa4b3c-b698-4f9a-bac9-250fcefc3178") + ) + (fp_line + (start 2.28 1.12) + (end -2.28 1.12) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "b536385a-216e-4f13-9a0f-147befcafb26") + ) + (fp_line + (start -1.6 -0.8) + (end 1.6 -0.8) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f068cf92-9aea-4ed9-8a82-65d03c00816c") + ) + (fp_line + (start -1.6 0.8) + (end -1.6 -0.8) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "31d10202-643a-465c-9f18-600a1e3a1655") + ) + (fp_line + (start 1.6 -0.8) + (end 1.6 0.8) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f12ef3cf-3b26-4519-b7fd-ada65c25a945") + ) + (fp_line + (start 1.6 0.8) + (end -1.6 0.8) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "228ce64c-d99a-4acb-ba85-2414dd150988") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "4d18fa15-75c0-471d-a995-fc1f9393efdb") + (effects + (font + (size 0.8 0.8) + (thickness 0.12) + ) + ) + ) + (pad "1" smd roundrect + (at -1.4625 0) + (size 1.125 1.75) + (layers "F.Cu" "F.Paste" "F.Mask") + (roundrect_rratio 0.222222) + (net 1 "VCC") + (pintype "passive") + (uuid "f413018c-f4a3-4350-9444-46ee005605d8") + ) + (pad "2" smd oval + (at 1.4625 0) + (size 1.125 1.75) + (layers "F.Cu" "F.Paste" "F.Mask") + (net 2 "GND") + (pintype "passive") + (uuid "f864d905-4e66-4c6a-9dbb-10ad926c266a") + ) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (gr_rect + (start 92.71 62.865) + (end 167.64 117.475) + (stroke + (width 0.1) + (type default) + ) + (fill none) + (layer "Edge.Cuts") + (uuid "47f4f7de-3e86-451e-afa2-b9c5401bb925") + ) + (segment + (start 153.9225 90.9843) + (end 153.9225 86.8187) + (width 0.25) + (layer "F.Cu") + (net 0) + (uuid "11ed0c56-f17a-440e-9f40-7eb9be0013ba") + ) + (segment + (start 153.9225 86.8187) + (end 154.2796 86.4616) + (width 0.25) + (layer "F.Cu") + (net 0) + (uuid "666f9f32-3952-4934-8df5-9ad24f041214") + ) + (segment + (start 153.0858 91.821) + (end 153.9225 90.9843) + (width 0.25) + (layer "F.Cu") + (net 0) + (uuid "96063ec2-be50-433f-9564-7ca25d99ba52") + ) +) \ No newline at end of file diff --git a/qa/data/pcbnew/issue16566.kicad_pro b/qa/data/pcbnew/issue16566.kicad_pro new file mode 100644 index 0000000000..42a97a7b13 --- /dev/null +++ b/qa/data/pcbnew/issue16566.kicad_pro @@ -0,0 +1,600 @@ +{ + "board": { + "3dviewports": [], + "design_settings": { + "defaults": { + "apply_defaults_to_fp_fields": false, + "apply_defaults_to_fp_shapes": false, + "apply_defaults_to_fp_text": false, + "board_outline_line_width": 0.09999999999999999, + "copper_line_width": 0.19999999999999998, + "copper_text_italic": false, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "copper_text_upright": false, + "courtyard_line_width": 0.049999999999999996, + "dimension_precision": 4, + "dimension_units": 3, + "dimensions": { + "arrow_length": 1270000, + "extension_offset": 500000, + "keep_text_aligned": true, + "suppress_zeroes": false, + "text_position": 0, + "units_format": 1 + }, + "fab_line_width": 0.09999999999999999, + "fab_text_italic": false, + "fab_text_size_h": 1.0, + "fab_text_size_v": 1.0, + "fab_text_thickness": 0.15, + "fab_text_upright": false, + "other_line_width": 0.15, + "other_text_italic": false, + "other_text_size_h": 1.0, + "other_text_size_v": 1.0, + "other_text_thickness": 0.15, + "other_text_upright": false, + "pads": { + "drill": 0.762, + "height": 1.524, + "width": 1.524 + }, + "silk_line_width": 0.15, + "silk_text_italic": false, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15, + "silk_text_upright": false, + "zones": { + "min_clearance": 0.5 + } + }, + "diff_pair_dimensions": [ + { + "gap": 0.0, + "via_gap": 0.0, + "width": 0.0 + } + ], + "drc_exclusions": [], + "meta": { + "version": 2 + }, + "rule_severities": { + "annular_width": "error", + "clearance": "error", + "connection_width": "warning", + "copper_edge_clearance": "error", + "copper_sliver": "warning", + "courtyards_overlap": "error", + "diff_pair_gap_out_of_range": "error", + "diff_pair_uncoupled_length_too_long": "error", + "drill_out_of_range": "error", + "duplicate_footprints": "warning", + "extra_footprint": "warning", + "footprint": "error", + "footprint_type_mismatch": "ignore", + "hole_clearance": "error", + "hole_near_hole": "error", + "invalid_outline": "error", + "isolated_copper": "warning", + "item_on_disabled_layer": "error", + "items_not_allowed": "error", + "length_out_of_range": "error", + "lib_footprint_issues": "warning", + "lib_footprint_mismatch": "warning", + "malformed_courtyard": "error", + "microvia_drill_out_of_range": "error", + "missing_courtyard": "ignore", + "missing_footprint": "warning", + "net_conflict": "warning", + "npth_inside_courtyard": "ignore", + "padstack": "warning", + "pth_inside_courtyard": "ignore", + "shorting_items": "error", + "silk_edge_clearance": "warning", + "silk_over_copper": "warning", + "silk_overlap": "warning", + "skew_out_of_range": "error", + "solder_mask_bridge": "error", + "starved_thermal": "error", + "text_height": "warning", + "text_thickness": "warning", + "through_hole_pad_without_hole": "error", + "too_many_vias": "error", + "track_dangling": "warning", + "track_width": "error", + "tracks_crossing": "error", + "unconnected_items": "error", + "unresolved_variable": "error", + "via_dangling": "warning", + "zones_intersect": "error" + }, + "rules": { + "max_error": 0.005, + "min_clearance": 0.0, + "min_connection": 0.0, + "min_copper_edge_clearance": 0.0, + "min_hole_clearance": 0.25, + "min_hole_to_hole": 0.25, + "min_microvia_diameter": 0.19999999999999998, + "min_microvia_drill": 0.09999999999999999, + "min_resolved_spokes": 2, + "min_silk_clearance": 0.0, + "min_text_height": 0.7999999999999999, + "min_text_thickness": 0.08, + "min_through_hole_diameter": 0.3, + "min_track_width": 0.0, + "min_via_annular_width": 0.09999999999999999, + "min_via_diameter": 0.5, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0, + "solder_mask_to_copper_clearance": 0.0, + "use_height_for_length_calcs": true + }, + "teardrop_options": [ + { + "td_onpadsmd": true, + "td_onroundshapesonly": false, + "td_ontrackend": false, + "td_onviapad": true + } + ], + "teardrop_parameters": [ + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_round_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_rect_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_track_end", + "td_width_to_size_filter_ratio": 0.9 + } + ], + "track_widths": [ + 0.0 + ], + "tuning_pattern_settings": { + "diff_pair_defaults": { + "corner_radius_percentage": 100, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.1, + "single_sided": false, + "spacing": 0.6 + }, + "diff_pair_skew_defaults": { + "corner_radius_percentage": 100, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.1, + "single_sided": false, + "spacing": 0.6 + }, + "single_track_defaults": { + "corner_radius_percentage": 100, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.1, + "single_sided": false, + "spacing": 0.6 + } + }, + "via_dimensions": [ + { + "diameter": 0.0, + "drill": 0.0 + }, + { + "diameter": 0.25, + "drill": 0.15 + } + ], + "zones_allow_external_fillets": false + }, + "ipc2581": { + "dist": "", + "distpn": "", + "internal_id": "", + "mfg": "", + "mpn": "" + }, + "layer_presets": [], + "viewports": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "conflicting_netclasses": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "endpoint_off_grid": "warning", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "missing_bidi_pin": "warning", + "missing_input_pin": "warning", + "missing_power_pin": "error", + "missing_unit": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "simulation_model_issue": "ignore", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "pad_shape_test.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6 + } + ], + "meta": { + "version": 3 + }, + "net_colors": null, + "netclass_assignments": null, + "netclass_patterns": [] + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "plot": "", + "pos_files": "", + "specctra_dsn": "", + "step": "", + "svg": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "bom_fmt_presets": [], + "bom_fmt_settings": { + "field_delimiter": ",", + "keep_line_breaks": false, + "keep_tabs": false, + "name": "CSV", + "ref_delimiter": ",", + "ref_range_delimiter": "", + "string_delimiter": "\"" + }, + "bom_presets": [], + "bom_settings": { + "exclude_dnp": false, + "fields_ordered": [ + { + "group_by": false, + "label": "Reference", + "name": "Reference", + "show": true + }, + { + "group_by": true, + "label": "Value", + "name": "Value", + "show": true + }, + { + "group_by": false, + "label": "Datasheet", + "name": "Datasheet", + "show": true + }, + { + "group_by": false, + "label": "Footprint", + "name": "Footprint", + "show": true + }, + { + "group_by": false, + "label": "Qty", + "name": "${QUANTITY}", + "show": true + }, + { + "group_by": true, + "label": "DNP", + "name": "${DNP}", + "show": true + } + ], + "filter_string": "", + "group_symbols": true, + "name": "Grouped By Value", + "sort_asc": true, + "sort_field": "Reference" + }, + "connection_grid_size": 50.0, + "drawing": { + "dashed_lines_dash_length_ratio": 12.0, + "dashed_lines_gap_length_ratio": 3.0, + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "operating_point_overlay_i_precision": 3, + "operating_point_overlay_i_range": "~A", + "operating_point_overlay_v_precision": 3, + "operating_point_overlay_v_range": "~V", + "overbar_offset_ratio": 1.23, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "page_layout_descr_file": "", + "plot_directory": "", + "spice_current_sheet_as_root": false, + "spice_external_command": "spice \"%I\"", + "spice_model_current_sheet_as_root": true, + "spice_save_all_currents": false, + "spice_save_all_dissipations": false, + "spice_save_all_voltages": false, + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "96dc2538-0f43-4323-81c5-b453cac477c4", + "Root" + ] + ], + "text_variables": {} +} diff --git a/qa/tests/pcbnew/drc/test_drc_regressions.cpp b/qa/tests/pcbnew/drc/test_drc_regressions.cpp index 6d8d50bd4c..919c8035dc 100644 --- a/qa/tests/pcbnew/drc/test_drc_regressions.cpp +++ b/qa/tests/pcbnew/drc/test_drc_regressions.cpp @@ -137,6 +137,7 @@ BOOST_FIXTURE_TEST_CASE( DRCFalseNegativeRegressions, DRC_REGRESSION_TEST_FIXTUR { "issue9081", 2 }, { "issue12109", 8 }, // Pads fail annular width test { "issue14334", 2 }, // Thermal spoke to otherwise unconnected island + { "issue16566", 3 }, // Pad_Shape vs Shape property { "reverse_via", 3 }, // Via/track ordering { "intersectingzones", 2 }, // zones are too close to each other { "fill_bad", 1 } // zone max BBox was too small