From a1f78c296e044fe15d40e9c2c8d77ab5ae7a4369 Mon Sep 17 00:00:00 2001 From: "Salvador E. Tropea" Date: Fri, 5 May 2023 06:37:34 -0300 Subject: [PATCH] [Filters][Added] New `generic` filter options - `exclude_not_in_bom` and `exclude_not_on_board` to use KiCad 6+ flags Closes #429 --- CHANGELOG.md | 9 +- README.md | 4 + docs/samples/generic_plot.kibot.yaml | 4 +- kibot/fil_generic.py | 8 + kibot/out_position.py | 4 +- .../kicad_6/filter_not_in_bom.kicad_pcb | 299 +++++++++++++++ .../kicad_6/filter_not_in_bom.kicad_sch | 194 ++++++++++ .../kicad_7/filter_not_in_bom.kicad_pcb | 351 ++++++++++++++++++ .../kicad_7/filter_not_in_bom.kicad_sch | 211 +++++++++++ .../kicad_8/filter_not_in_bom.kicad_pcb | 351 ++++++++++++++++++ .../kicad_8/filter_not_in_bom.kicad_sch | 211 +++++++++++ tests/test_plot/test_position.py | 35 ++ tests/yaml_samples/fil_no_board.kibot.yaml | 19 + tests/yaml_samples/fil_no_bom.kibot.yaml | 19 + 14 files changed, 1714 insertions(+), 5 deletions(-) create mode 100644 tests/board_samples/kicad_6/filter_not_in_bom.kicad_pcb create mode 100644 tests/board_samples/kicad_6/filter_not_in_bom.kicad_sch create mode 100644 tests/board_samples/kicad_7/filter_not_in_bom.kicad_pcb create mode 100644 tests/board_samples/kicad_7/filter_not_in_bom.kicad_sch create mode 100644 tests/board_samples/kicad_8/filter_not_in_bom.kicad_pcb create mode 100644 tests/board_samples/kicad_8/filter_not_in_bom.kicad_sch create mode 100644 tests/yaml_samples/fil_no_board.kibot.yaml create mode 100644 tests/yaml_samples/fil_no_bom.kibot.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 34504be5..e97e58e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,11 +13,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `environment`.`extra_os` to define environment variables - `field_voltage` Name/s of the field/s used for the voltage raiting - `field_package` Name/s of the field/s used for the package, not footprint - - `field_temp_coef` Name/s of the field/s used for the temperature coefficient + - `field_temp_coef` Name/s of the field/s used for the temperature + coefficient - `field_power` Name/s of the field/s used for the power raiting -- New filters: - - `value_split` to extract information from the Value field and put it in +- Filters: + - New `value_split` to extract information from the Value field and put it in separated fields. I.e. tolerance, voltage, etc. + - New `generic` options `exclude_not_in_bom` and `exclude_not_on_board` to + use KiCad 6+ flags. - New internal filters: - `_value_split` splits the Value field but the field remains and the extra data is not visible diff --git a/README.md b/README.md index d3bfacfa..e5a4db9d 100644 --- a/README.md +++ b/README.md @@ -976,6 +976,8 @@ filters: Separators are applied. - `exclude_empty_val`: [boolean=false] Exclude components with empty 'Value'. - `exclude_field`: [boolean=false] Exclude components if a field is named as any of the keys. + - `exclude_not_in_bom`: [boolean=false] Exclude components marked *Exclude from bill of materials* (KiCad 6+). + - `exclude_not_on_board`: [boolean=false] Exclude components marked *Exclude from board* (KiCad 6+). - `exclude_refs`: [list(string)] List of references to be excluded. Use R* for all references with R prefix. - `exclude_smd`: [boolean=false] Exclude components marked as smd in the PCB. @@ -4088,6 +4090,8 @@ Notes: - `dnf_filter`: [string|list(string)='_none'] Name of the filter to mark components as not fitted. A short-cut to use for simple cases where a variant is an overkill. - `include_virtual`: [boolean=false] Include virtual components. For special purposes, not pick & place. + Note that virtual components is a KiCad 5 concept. + For KiCad 6+ we replace this concept by the option to exclude from position file. - `pre_transform`: [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. A short-cut to use for simple cases where a variant is an overkill. - `right_digits`: [number=4] number of digits for mantissa part of coordinates (0 is auto). diff --git a/docs/samples/generic_plot.kibot.yaml b/docs/samples/generic_plot.kibot.yaml index c3439910..e4a90705 100644 --- a/docs/samples/generic_plot.kibot.yaml +++ b/docs/samples/generic_plot.kibot.yaml @@ -2712,7 +2712,9 @@ outputs: dnf_filter: '_none' # [string='ASCII'] [ASCII,CSV] Format for the position file format: 'ASCII' - # [boolean=false] Include virtual components. For special purposes, not pick & place + # [boolean=false] Include virtual components. For special purposes, not pick & place. + # Note that virtual components is a KiCad 5 concept. + # For KiCad 6+ we replace this concept by the option to exclude from position file include_virtual: false # [boolean=true] Only include the surface mount components only_smd: true diff --git a/kibot/fil_generic.py b/kibot/fil_generic.py index f53839ce..b765b70d 100644 --- a/kibot/fil_generic.py +++ b/kibot/fil_generic.py @@ -76,6 +76,10 @@ class Generic(BaseFilter): # noqa: F821 """ Exclude components on the top side of the PCB """ self.exclude_bottom = False """ Exclude components on the bottom side of the PCB """ + self.exclude_not_in_bom = False + """ Exclude components marked *Exclude from bill of materials* (KiCad 6+) """ + self.exclude_not_on_board = False + """ Exclude components marked *Exclude from board* (KiCad 6+) """ self.add_to_doc('keys', 'Use `dnf_list` for '+str(sorted(DNF))) self.add_to_doc('keys', 'Use `dnc_list` for '+str(sorted(DNC))) @@ -190,6 +194,10 @@ class Generic(BaseFilter): # noqa: F821 return exclude if self.exclude_bottom and comp.bottom: return exclude + if self.exclude_not_in_bom and not (comp.in_bom and comp.in_bom_pcb): + return exclude + if self.exclude_not_on_board and not comp.on_board: + return exclude # List of references to be excluded if self.exclude_refs and (comp.ref in self.exclude_refs or comp.ref_prefix+'*' in self.exclude_refs): return exclude diff --git a/kibot/out_position.py b/kibot/out_position.py index 6542ea9f..bc82c753 100644 --- a/kibot/out_position.py +++ b/kibot/out_position.py @@ -247,7 +247,7 @@ class PositionOptions(VariantOptions): if comps_hash: c = comps_hash.get(ref, None) if c: - logger.debug('fit: {} include: {}'.format(c.fitted, c.included)) + logger.debug('- fit: {} include: {}'.format(c.fitted, c.included)) if not c.fitted or not c.included: continue value = c.value @@ -294,6 +294,8 @@ class PositionOptions(VariantOptions): row.append("bottom" if is_bottom else "top") modules.append(row) modules_side.append(is_bottom) + else: + logger.debug('- pure_smd: {} not_virtual {}'.format(is_pure_smd(m), is_not_virtual(m))) # Find max width for all columns maxlengths = [] for col, name in enumerate(columns): diff --git a/tests/board_samples/kicad_6/filter_not_in_bom.kicad_pcb b/tests/board_samples/kicad_6/filter_not_in_bom.kicad_pcb new file mode 100644 index 00000000..eab7751a --- /dev/null +++ b/tests/board_samples/kicad_6/filter_not_in_bom.kicad_pcb @@ -0,0 +1,299 @@ +(kicad_pcb (version 20211014) (generator pcbnew) + + (general + (thickness 1.6) + ) + + (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) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (disableapertmacros false) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (svguseinch false) + (svgprecision 6) + (excludeedgelayer true) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (dxfpolygonmode true) + (dxfimperialunits true) + (dxfusepcbnewfont true) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (sketchpadsonfab false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + + (net 0 "") + (net 1 "unconnected-(R1-Pad1)") + (net 2 "unconnected-(R1-Pad2)") + (net 3 "unconnected-(R2-Pad1)") + (net 4 "unconnected-(R2-Pad2)") + (net 5 "unconnected-(R3-Pad1)") + (net 6 "unconnected-(R3-Pad2)") + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 63133855-228b-4d01-98e1-7f6cd71e3930) + (at 121.47 70.18) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/11087cb4-16d6-488f-9b40-434fce773bc8") + (attr smd exclude_from_bom) + (fp_text reference "R2" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d1cc70e2-eeeb-428b-81c4-0faf3146da3e) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f445c995-802b-4b3a-95ca-45b972c17204) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp eb7e1762-b1d2-4a7d-ad3f-47391a5336bd) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 48a8e5c3-518d-466d-8648-b801bf8df775)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 7d18a6fa-ca47-41a1-84dd-070b780e11c7)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 54d86367-65e2-4110-b702-84f4aa651ddc)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 64298957-6973-45ab-86a0-3cec0682669e)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp a4e5e7ad-98bf-4d8f-9bad-e9eb79626d42)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp e5c47dba-350e-4422-990c-5383f4cc9011)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 28f7c6ce-74ce-448e-8184-1252c81800ba)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 6160af9d-6d69-4b06-829c-464b1a1cc197)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 68b3ff59-ccb2-4ffb-85e9-8d7f92c54cb2)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp b6dbb5b9-622c-41e2-97b1-cb1e655b3e77)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 3 "unconnected-(R2-Pad1)") (pintype "passive") (tstamp a4efe634-e260-44ef-afc4-33ba015bccd0)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 4 "unconnected-(R2-Pad2)") (pintype "passive") (tstamp cd3d0815-18f2-4a60-89fd-59586513bb7b)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 81f35e2d-43de-42c7-9114-c42a22aaa5cc) + (at 133.43 70.83) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (attr smd) + (fp_text reference "R4" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7bcf6351-031b-4875-9537-7cbbf47e0d8c) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp eb7aefb0-ba58-4553-839a-7dc983f34d26) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 2ef90aa4-79d6-4b71-b8d8-4c4c529ef6bb) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 225cecfa-ea44-497b-88f9-a9afa82bebfd)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp fd609ef2-956a-48f2-a365-29dea93d2b7f)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 72fd1e8c-b0e7-4f6c-8996-dd8730989d4a)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 79fb9c4b-144d-441f-9986-7f353bba755e)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp b61bd679-7b54-420e-b1d3-6bf2f9b6c5d1)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp c28b3cd7-748c-4bb4-846f-86fd4f807c46)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 0f20ad19-cda9-43af-a5e9-4604629680b0)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 12e14114-dd0e-4c67-82a7-22937f2ad0d4)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 35682e3d-4113-4120-8f37-eb702caec49a)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp b425d17c-f7ca-4445-bd2c-5faa42b91c2d)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp a893bcb2-2b2a-4ae5-9e0f-9e03b5cb1807)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp 816c5e9f-8a20-4876-b2d5-ea448d1b9d79)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 94b51d2d-feda-424e-acae-986ae0246609) + (at 121.47 73.13) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (path "/999872c1-ad95-4a47-93a5-ce6b47a86e13") + (attr smd) + (fp_text reference "R1" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7bcf6351-031b-4875-9537-7cbbf47e0d8c) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp eb7aefb0-ba58-4553-839a-7dc983f34d26) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 2ef90aa4-79d6-4b71-b8d8-4c4c529ef6bb) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 225cecfa-ea44-497b-88f9-a9afa82bebfd)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp fd609ef2-956a-48f2-a365-29dea93d2b7f)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 72fd1e8c-b0e7-4f6c-8996-dd8730989d4a)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 79fb9c4b-144d-441f-9986-7f353bba755e)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp b61bd679-7b54-420e-b1d3-6bf2f9b6c5d1)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp c28b3cd7-748c-4bb4-846f-86fd4f807c46)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 0f20ad19-cda9-43af-a5e9-4604629680b0)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 12e14114-dd0e-4c67-82a7-22937f2ad0d4)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 35682e3d-4113-4120-8f37-eb702caec49a)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp b425d17c-f7ca-4445-bd2c-5faa42b91c2d)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 1 "unconnected-(R1-Pad1)") (pintype "passive") (tstamp a893bcb2-2b2a-4ae5-9e0f-9e03b5cb1807)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 2 "unconnected-(R1-Pad2)") (pintype "passive") (tstamp 816c5e9f-8a20-4876-b2d5-ea448d1b9d79)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp a6a541a9-8129-4d19-a6a9-273a9cbedb59) + (at 125.94 73.88) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (attr smd exclude_from_pos_files) + (fp_text reference "R5" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7c7b5241-6b10-42bc-8497-13cc4dcc66ce) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 14a1809d-bc57-4112-a327-db659036d750) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 6ffb7656-67a9-40be-af03-7f18fb5b1a7f) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 11c65473-2f59-43f5-981c-0da6ff2a5054)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 16989495-20f9-4749-9603-2b34490c4c2f)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 4de72679-4aec-4557-a449-09231861ae63)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 967e5c0f-3f61-45b3-8974-b87d24eeff2e)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp b7be6968-1089-414c-9887-33ddffe28e1d)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp ffd6e1be-ad5f-41c1-9c28-eed53ed183ed)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 01b49614-57dd-455d-8714-a867559bb38a)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 25296ea9-b35d-4480-b5d8-65f93bde300e)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp af6c224b-f88d-4da1-a458-52236ea82fe8)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp e270df87-f6df-4505-992f-4d467297095a)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp ce9c72d1-1ddb-4eea-af05-fc5764fdab19)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp 87fe97e0-1a94-4294-a917-777a49f4095d)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp ba84c04d-b063-41f2-962d-8e4d4d7a283b) + (at 125.88 70.18) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (path "/a5d57f67-4cd2-4689-8ccf-01d241039af9") + (attr smd exclude_from_bom) + (fp_text reference "R3" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1a731d24-8ff2-4cc9-b68d-52be44bbec07) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 16cafca4-eb36-4b30-bc1e-08e179476e6d) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 91bb11bb-6dcb-4d1a-961a-0d658b6fa628) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 39f9916c-9f5c-42b9-bd71-7429455bd163)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp a5a9116f-dda1-47cc-b94c-e377d1032507)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 27b91a3e-1da2-4eaf-8ef0-59aea5379ac4)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 4e6cfadb-97b9-4af7-a1f1-e0d81ce4c11d)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 8696ed40-e3c7-4d48-aa1e-a886506ce00d)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 8ed06371-bab5-43de-b927-73dda5d81013)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 2d9cb67c-c5ea-424a-84d7-ba63b3f68bf4)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 902a619f-f9e5-4a14-8477-f3eb70d93eb3)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp bd81cddd-0342-464c-9ae5-aa77be4985d8)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp cb20d007-5727-4c38-8de6-f7b2f74da56e)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 5 "unconnected-(R3-Pad1)") (pintype "passive") (tstamp 6e36b1fd-e6eb-4aaf-8eaa-728061b07601)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 6 "unconnected-(R3-Pad2)") (pintype "passive") (tstamp d3d757e8-2a83-40d2-a1d3-9b3bd8bff5cb)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_rect (start 117.53 65.43) (end 129.17 76.7) (layer "Edge.Cuts") (width 0.1) (fill none) (tstamp 8a97f4c9-14b7-45a0-ab7c-5f2e135c28b9)) + (gr_text "Shouldn't be here\nManually added\nThe SCH says on_board='no'" (at 136.35 70.9) (layer "Edge.Cuts") (tstamp 95970c9c-5470-45f8-9aef-63ebab202939) + (effects (font (size 1 1) (thickness 0.15)) (justify left)) + ) + +) diff --git a/tests/board_samples/kicad_6/filter_not_in_bom.kicad_sch b/tests/board_samples/kicad_6/filter_not_in_bom.kicad_sch new file mode 100644 index 00000000..450adef2 --- /dev/null +++ b/tests/board_samples/kicad_6/filter_not_in_bom.kicad_sch @@ -0,0 +1,194 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid 054db097-8803-478f-b615-cc9125586d15) + + (paper "A4") + + (title_block + (title "in_bom/on_board filter test") + (company "Instituto Nacional de Tecnología Industrial") + (comment 1 "KiBot") + ) + + (lib_symbols + (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "R" (id 0) (at 2.032 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R" (id 1) (at 0 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at -1.778 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R res resistor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_0_1" + (rectangle (start -1.016 -2.54) (end 1.016 2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "R_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (text "in_bom: yes\non_board: yes\nPCB in_bom: no\n" (at 109.22 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 11c1d158-5f8a-4063-88b9-e6d3f6d51405) + ) + (text "in_bom: yes\non_board: no\nPCB in_bom: yes\n" (at 134.62 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2a5a7048-fb8d-48fd-88e2-0e4be1ac91cc) + ) + (text "in_bom: no\non_board: yes\nPCB in_bom: yes\n" (at 83.82 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 53e87ee4-9649-4de7-b05a-c20bd6abe76c) + ) + (text "in_bom: yes\non_board: yes\nPCB in_bom: yes\nPCB in_pos: no" + (at 160.02 68.58 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid d353589c-2a30-4906-a132-d4d063872687) + ) + (text "in_bom: yes\non_board: yes\nPCB in_bom: yes\n" (at 58.42 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid f7c872f3-d3c4-41b9-8951-57b099e0ee9e) + ) + + (symbol (lib_id "Device:R") (at 88.9 54.61 0) (unit 1) + (in_bom no) (on_board yes) (fields_autoplaced) + (uuid 11087cb4-16d6-488f-9b40-434fce773bc8) + (property "Reference" "R2" (id 0) (at 91.44 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (id 1) (at 91.44 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 87.122 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 88.9 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c61ed2a3-43cd-4ec3-bc27-f4b574b17c5b)) + (pin "2" (uuid 60d54eaa-1db5-4965-a4cf-1ec30b085bcb)) + ) + + (symbol (lib_id "Device:R") (at 63.5 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 999872c1-ad95-4a47-93a5-ce6b47a86e13) + (property "Reference" "R1" (id 0) (at 66.04 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (id 1) (at 66.04 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 61.722 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 63.5 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e6e67706-8d3e-4ccf-932e-9f8752dbcea1)) + (pin "2" (uuid 10773c11-bc60-4472-9d7c-ff5c103f871a)) + ) + + (symbol (lib_id "Device:R") (at 114.3 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a5d57f67-4cd2-4689-8ccf-01d241039af9) + (property "Reference" "R3" (id 0) (at 116.84 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (id 1) (at 116.84 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 112.522 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 114.3 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b951a2d2-6726-4d65-a194-b2274d900ed1)) + (pin "2" (uuid 8d3ccad0-c44c-4b75-809a-9b11818bc782)) + ) + + (symbol (lib_id "Device:R") (at 165.1 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid eaa2658c-9a5f-4406-bf42-1d9cb16fa43a) + (property "Reference" "R5" (id 0) (at 167.64 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (id 1) (at 167.64 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 163.322 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 165.1 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8f2a83f9-2f17-4d2d-9bea-8a5d0e0a53dc)) + (pin "2" (uuid 571b3855-48d9-45f4-ad59-b58b91eac372)) + ) + + (symbol (lib_id "Device:R") (at 139.7 54.61 0) (unit 1) + (in_bom yes) (on_board no) (fields_autoplaced) + (uuid fa1e856c-8ac1-49f5-9e01-8904c46a0a50) + (property "Reference" "R4" (id 0) (at 142.24 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (id 1) (at 142.24 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (id 2) (at 137.922 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 139.7 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 03c1c640-2b41-414c-a64b-2266fd349096)) + (pin "2" (uuid 55d78ff8-ab55-45e7-8712-a31d3aad7239)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/999872c1-ad95-4a47-93a5-ce6b47a86e13" + (reference "R1") (unit 1) (value "R") (footprint "Resistor_SMD:R_0805_2012Metric") + ) + (path "/11087cb4-16d6-488f-9b40-434fce773bc8" + (reference "R2") (unit 1) (value "R") (footprint "Resistor_SMD:R_0805_2012Metric") + ) + (path "/a5d57f67-4cd2-4689-8ccf-01d241039af9" + (reference "R3") (unit 1) (value "R") (footprint "Resistor_SMD:R_0805_2012Metric") + ) + (path "/fa1e856c-8ac1-49f5-9e01-8904c46a0a50" + (reference "R4") (unit 1) (value "R") (footprint "Resistor_SMD:R_0805_2012Metric") + ) + (path "/eaa2658c-9a5f-4406-bf42-1d9cb16fa43a" + (reference "R5") (unit 1) (value "R") (footprint "Resistor_SMD:R_0805_2012Metric") + ) + ) +) diff --git a/tests/board_samples/kicad_7/filter_not_in_bom.kicad_pcb b/tests/board_samples/kicad_7/filter_not_in_bom.kicad_pcb new file mode 100644 index 00000000..08a8b646 --- /dev/null +++ b/tests/board_samples/kicad_7/filter_not_in_bom.kicad_pcb @@ -0,0 +1,351 @@ +(kicad_pcb (version 20221018) (generator pcbnew) + + (general + (thickness 1.6) + ) + + (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) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (plot_on_all_layers_selection 0x0000000_00000000) + (disableapertmacros false) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (dashed_line_dash_ratio 12.000000) + (dashed_line_gap_ratio 3.000000) + (svgprecision 6) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (dxfpolygonmode true) + (dxfimperialunits true) + (dxfusepcbnewfont true) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (sketchpadsonfab false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + + (net 0 "") + (net 1 "unconnected-(R1-Pad1)") + (net 2 "unconnected-(R1-Pad2)") + (net 3 "unconnected-(R2-Pad1)") + (net 4 "unconnected-(R2-Pad2)") + (net 5 "unconnected-(R3-Pad1)") + (net 6 "unconnected-(R3-Pad2)") + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp 63133855-228b-4d01-98e1-7f6cd71e3930) + (at 121.47 70.18) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/11087cb4-16d6-488f-9b40-434fce773bc8") + (attr smd exclude_from_bom) + (fp_text reference "R2" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d1cc70e2-eeeb-428b-81c4-0faf3146da3e) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f445c995-802b-4b3a-95ca-45b972c17204) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp eb7e1762-b1d2-4a7d-ad3f-47391a5336bd) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 7d18a6fa-ca47-41a1-84dd-070b780e11c7)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 48a8e5c3-518d-466d-8648-b801bf8df775)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp e5c47dba-350e-4422-990c-5383f4cc9011)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 54d86367-65e2-4110-b702-84f4aa651ddc)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a4e5e7ad-98bf-4d8f-9bad-e9eb79626d42)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 64298957-6973-45ab-86a0-3cec0682669e)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b6dbb5b9-622c-41e2-97b1-cb1e655b3e77)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 28f7c6ce-74ce-448e-8184-1252c81800ba)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6160af9d-6d69-4b06-829c-464b1a1cc197)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 68b3ff59-ccb2-4ffb-85e9-8d7f92c54cb2)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 3 "unconnected-(R2-Pad1)") (pintype "passive") (tstamp a4efe634-e260-44ef-afc4-33ba015bccd0)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 4 "unconnected-(R2-Pad2)") (pintype "passive") (tstamp cd3d0815-18f2-4a60-89fd-59586513bb7b)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp 81f35e2d-43de-42c7-9114-c42a22aaa5cc) + (at 133.43 70.83) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (attr smd) + (fp_text reference "R4" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7bcf6351-031b-4875-9537-7cbbf47e0d8c) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp eb7aefb0-ba58-4553-839a-7dc983f34d26) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 2ef90aa4-79d6-4b71-b8d8-4c4c529ef6bb) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp fd609ef2-956a-48f2-a365-29dea93d2b7f)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 225cecfa-ea44-497b-88f9-a9afa82bebfd)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp b61bd679-7b54-420e-b1d3-6bf2f9b6c5d1)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 72fd1e8c-b0e7-4f6c-8996-dd8730989d4a)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp c28b3cd7-748c-4bb4-846f-86fd4f807c46)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 79fb9c4b-144d-441f-9986-7f353bba755e)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 12e14114-dd0e-4c67-82a7-22937f2ad0d4)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 35682e3d-4113-4120-8f37-eb702caec49a)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b425d17c-f7ca-4445-bd2c-5faa42b91c2d)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 0f20ad19-cda9-43af-a5e9-4604629680b0)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp a893bcb2-2b2a-4ae5-9e0f-9e03b5cb1807)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp 816c5e9f-8a20-4876-b2d5-ea448d1b9d79)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp 94b51d2d-feda-424e-acae-986ae0246609) + (at 121.47 73.13) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (path "/999872c1-ad95-4a47-93a5-ce6b47a86e13") + (attr smd) + (fp_text reference "R1" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp cd1ea6da-50ab-4770-bdd1-ebcd5a5e3245) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8e85ed78-a7be-4c26-86b0-98994825af5a) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 91655293-b964-4f8f-bcd4-338246bed559) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 67778180-7b43-4d26-92b0-96bd30d2f97e)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp fdfe6b19-f81c-404c-b107-1945dc12b68f)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 70fc68a4-6083-41d8-9705-f83fb8069e39)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8d9f396c-84a3-406d-ab0f-2c7fc42fafe9)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 14005efc-738b-4722-bcb7-3bbde0592d28)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 53d76446-8f83-40b2-97fa-5836282db968)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6001389b-d55a-4cbd-8971-50c34230c577)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 3fe9b020-61ff-45fa-9664-327b45936b0c)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp bb3016a6-c5fd-40eb-94ea-4f980ea20d0c)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8461ce70-1d10-43d1-9919-81c985c5501b)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 1 "unconnected-(R1-Pad1)") (pintype "passive") (tstamp 273f1cdd-2968-4e14-8d27-5c8af92d2563)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 2 "unconnected-(R1-Pad2)") (pintype "passive") (tstamp e72419e6-b307-4404-b0ac-c049dfb5e56d)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp a6a541a9-8129-4d19-a6a9-273a9cbedb59) + (at 125.94 73.88) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (attr smd exclude_from_pos_files) + (fp_text reference "R5" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7c7b5241-6b10-42bc-8497-13cc4dcc66ce) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 14a1809d-bc57-4112-a327-db659036d750) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 6ffb7656-67a9-40be-af03-7f18fb5b1a7f) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 16989495-20f9-4749-9603-2b34490c4c2f)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 11c65473-2f59-43f5-981c-0da6ff2a5054)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp b7be6968-1089-414c-9887-33ddffe28e1d)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 4de72679-4aec-4557-a449-09231861ae63)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ffd6e1be-ad5f-41c1-9c28-eed53ed183ed)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 967e5c0f-3f61-45b3-8974-b87d24eeff2e)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e270df87-f6df-4505-992f-4d467297095a)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 25296ea9-b35d-4480-b5d8-65f93bde300e)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 01b49614-57dd-455d-8714-a867559bb38a)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp af6c224b-f88d-4da1-a458-52236ea82fe8)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp ce9c72d1-1ddb-4eea-af05-fc5764fdab19)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp 87fe97e0-1a94-4294-a917-777a49f4095d)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp ba84c04d-b063-41f2-962d-8e4d4d7a283b) + (at 125.88 70.18) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (path "/a5d57f67-4cd2-4689-8ccf-01d241039af9") + (attr smd exclude_from_bom) + (fp_text reference "R3" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1a731d24-8ff2-4cc9-b68d-52be44bbec07) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 16cafca4-eb36-4b30-bc1e-08e179476e6d) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 91bb11bb-6dcb-4d1a-961a-0d658b6fa628) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp a5a9116f-dda1-47cc-b94c-e377d1032507)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 39f9916c-9f5c-42b9-bd71-7429455bd163)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8696ed40-e3c7-4d48-aa1e-a886506ce00d)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8ed06371-bab5-43de-b927-73dda5d81013)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 4e6cfadb-97b9-4af7-a1f1-e0d81ce4c11d)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 27b91a3e-1da2-4eaf-8ef0-59aea5379ac4)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 902a619f-f9e5-4a14-8477-f3eb70d93eb3)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2d9cb67c-c5ea-424a-84d7-ba63b3f68bf4)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp bd81cddd-0342-464c-9ae5-aa77be4985d8)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp cb20d007-5727-4c38-8de6-f7b2f74da56e)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 5 "unconnected-(R3-Pad1)") (pintype "passive") (tstamp 6e36b1fd-e6eb-4aaf-8eaa-728061b07601)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 6 "unconnected-(R3-Pad2)") (pintype "passive") (tstamp d3d757e8-2a83-40d2-a1d3-9b3bd8bff5cb)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_rect (start 117.53 65.43) (end 129.17 76.7) + (stroke (width 0.1) (type solid)) (fill none) (layer "Edge.Cuts") (tstamp 8a97f4c9-14b7-45a0-ab7c-5f2e135c28b9)) + (gr_text "Shouldn't be here\nManually added\nThe SCH says on_board='no'" (at 136.35 70.9) (layer "Edge.Cuts") (tstamp 95970c9c-5470-45f8-9aef-63ebab202939) + (effects (font (size 1 1) (thickness 0.15)) (justify left)) + ) + +) diff --git a/tests/board_samples/kicad_7/filter_not_in_bom.kicad_sch b/tests/board_samples/kicad_7/filter_not_in_bom.kicad_sch new file mode 100644 index 00000000..d4d4268a --- /dev/null +++ b/tests/board_samples/kicad_7/filter_not_in_bom.kicad_sch @@ -0,0 +1,211 @@ +(kicad_sch (version 20230121) (generator eeschema) + + (uuid 054db097-8803-478f-b615-cc9125586d15) + + (paper "A4") + + (title_block + (title "in_bom/on_board filter test") + (company "Instituto Nacional de Tecnología Industrial") + (comment 1 "KiBot") + ) + + (lib_symbols + (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "R" (at 2.032 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R" (at 0 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at -1.778 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R res resistor" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_0_1" + (rectangle (start -1.016 -2.54) (end 1.016 2.54) + (stroke (width 0.254) (type default)) + (fill (type none)) + ) + ) + (symbol "R_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (text "in_bom: yes\non_board: yes\nPCB in_bom: no\n" (at 109.22 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 11c1d158-5f8a-4063-88b9-e6d3f6d51405) + ) + (text "in_bom: yes\non_board: no\nPCB in_bom: yes\n" (at 134.62 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2a5a7048-fb8d-48fd-88e2-0e4be1ac91cc) + ) + (text "in_bom: no\non_board: yes\nPCB in_bom: yes\n" (at 83.82 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 53e87ee4-9649-4de7-b05a-c20bd6abe76c) + ) + (text "in_bom: yes\non_board: yes\nPCB in_bom: yes\nPCB in_pos: no" + (at 160.02 68.58 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid d353589c-2a30-4906-a132-d4d063872687) + ) + (text "in_bom: yes\non_board: yes\nPCB in_bom: yes\n" (at 58.42 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid f7c872f3-d3c4-41b9-8951-57b099e0ee9e) + ) + + (symbol (lib_id "Device:R") (at 88.9 54.61 0) (unit 1) + (in_bom no) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 11087cb4-16d6-488f-9b40-434fce773bc8) + (property "Reference" "R2" (at 91.44 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 91.44 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 87.122 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 88.9 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c61ed2a3-43cd-4ec3-bc27-f4b574b17c5b)) + (pin "2" (uuid 60d54eaa-1db5-4965-a4cf-1ec30b085bcb)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R2") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 63.5 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 999872c1-ad95-4a47-93a5-ce6b47a86e13) + (property "Reference" "R1" (at 66.04 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 66.04 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 61.722 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 63.5 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e6e67706-8d3e-4ccf-932e-9f8752dbcea1)) + (pin "2" (uuid 10773c11-bc60-4472-9d7c-ff5c103f871a)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R1") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 114.3 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid a5d57f67-4cd2-4689-8ccf-01d241039af9) + (property "Reference" "R3" (at 116.84 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 116.84 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 112.522 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 114.3 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b951a2d2-6726-4d65-a194-b2274d900ed1)) + (pin "2" (uuid 8d3ccad0-c44c-4b75-809a-9b11818bc782)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R3") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 165.1 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid eaa2658c-9a5f-4406-bf42-1d9cb16fa43a) + (property "Reference" "R5" (at 167.64 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 167.64 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 163.322 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 165.1 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8f2a83f9-2f17-4d2d-9bea-8a5d0e0a53dc)) + (pin "2" (uuid 571b3855-48d9-45f4-ad59-b58b91eac372)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R5") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 139.7 54.61 0) (unit 1) + (in_bom yes) (on_board no) (dnp no) (fields_autoplaced) + (uuid fa1e856c-8ac1-49f5-9e01-8904c46a0a50) + (property "Reference" "R4" (at 142.24 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 142.24 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 137.922 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 139.7 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 03c1c640-2b41-414c-a64b-2266fd349096)) + (pin "2" (uuid 55d78ff8-ab55-45e7-8712-a31d3aad7239)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R4") (unit 1) + ) + ) + ) + ) + + (sheet_instances + (path "/" (page "1")) + ) +) diff --git a/tests/board_samples/kicad_8/filter_not_in_bom.kicad_pcb b/tests/board_samples/kicad_8/filter_not_in_bom.kicad_pcb new file mode 100644 index 00000000..08a8b646 --- /dev/null +++ b/tests/board_samples/kicad_8/filter_not_in_bom.kicad_pcb @@ -0,0 +1,351 @@ +(kicad_pcb (version 20221018) (generator pcbnew) + + (general + (thickness 1.6) + ) + + (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) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (plot_on_all_layers_selection 0x0000000_00000000) + (disableapertmacros false) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (dashed_line_dash_ratio 12.000000) + (dashed_line_gap_ratio 3.000000) + (svgprecision 6) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (dxfpolygonmode true) + (dxfimperialunits true) + (dxfusepcbnewfont true) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (sketchpadsonfab false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + + (net 0 "") + (net 1 "unconnected-(R1-Pad1)") + (net 2 "unconnected-(R1-Pad2)") + (net 3 "unconnected-(R2-Pad1)") + (net 4 "unconnected-(R2-Pad2)") + (net 5 "unconnected-(R3-Pad1)") + (net 6 "unconnected-(R3-Pad2)") + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp 63133855-228b-4d01-98e1-7f6cd71e3930) + (at 121.47 70.18) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/11087cb4-16d6-488f-9b40-434fce773bc8") + (attr smd exclude_from_bom) + (fp_text reference "R2" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d1cc70e2-eeeb-428b-81c4-0faf3146da3e) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f445c995-802b-4b3a-95ca-45b972c17204) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp eb7e1762-b1d2-4a7d-ad3f-47391a5336bd) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 7d18a6fa-ca47-41a1-84dd-070b780e11c7)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 48a8e5c3-518d-466d-8648-b801bf8df775)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp e5c47dba-350e-4422-990c-5383f4cc9011)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 54d86367-65e2-4110-b702-84f4aa651ddc)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a4e5e7ad-98bf-4d8f-9bad-e9eb79626d42)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 64298957-6973-45ab-86a0-3cec0682669e)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b6dbb5b9-622c-41e2-97b1-cb1e655b3e77)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 28f7c6ce-74ce-448e-8184-1252c81800ba)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6160af9d-6d69-4b06-829c-464b1a1cc197)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 68b3ff59-ccb2-4ffb-85e9-8d7f92c54cb2)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 3 "unconnected-(R2-Pad1)") (pintype "passive") (tstamp a4efe634-e260-44ef-afc4-33ba015bccd0)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 4 "unconnected-(R2-Pad2)") (pintype "passive") (tstamp cd3d0815-18f2-4a60-89fd-59586513bb7b)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp 81f35e2d-43de-42c7-9114-c42a22aaa5cc) + (at 133.43 70.83) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (attr smd) + (fp_text reference "R4" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7bcf6351-031b-4875-9537-7cbbf47e0d8c) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp eb7aefb0-ba58-4553-839a-7dc983f34d26) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 2ef90aa4-79d6-4b71-b8d8-4c4c529ef6bb) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp fd609ef2-956a-48f2-a365-29dea93d2b7f)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 225cecfa-ea44-497b-88f9-a9afa82bebfd)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp b61bd679-7b54-420e-b1d3-6bf2f9b6c5d1)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 72fd1e8c-b0e7-4f6c-8996-dd8730989d4a)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp c28b3cd7-748c-4bb4-846f-86fd4f807c46)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 79fb9c4b-144d-441f-9986-7f353bba755e)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 12e14114-dd0e-4c67-82a7-22937f2ad0d4)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 35682e3d-4113-4120-8f37-eb702caec49a)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b425d17c-f7ca-4445-bd2c-5faa42b91c2d)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 0f20ad19-cda9-43af-a5e9-4604629680b0)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp a893bcb2-2b2a-4ae5-9e0f-9e03b5cb1807)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp 816c5e9f-8a20-4876-b2d5-ea448d1b9d79)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp 94b51d2d-feda-424e-acae-986ae0246609) + (at 121.47 73.13) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (path "/999872c1-ad95-4a47-93a5-ce6b47a86e13") + (attr smd) + (fp_text reference "R1" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp cd1ea6da-50ab-4770-bdd1-ebcd5a5e3245) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8e85ed78-a7be-4c26-86b0-98994825af5a) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 91655293-b964-4f8f-bcd4-338246bed559) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 67778180-7b43-4d26-92b0-96bd30d2f97e)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp fdfe6b19-f81c-404c-b107-1945dc12b68f)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 70fc68a4-6083-41d8-9705-f83fb8069e39)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8d9f396c-84a3-406d-ab0f-2c7fc42fafe9)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 14005efc-738b-4722-bcb7-3bbde0592d28)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 53d76446-8f83-40b2-97fa-5836282db968)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6001389b-d55a-4cbd-8971-50c34230c577)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 3fe9b020-61ff-45fa-9664-327b45936b0c)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp bb3016a6-c5fd-40eb-94ea-4f980ea20d0c)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8461ce70-1d10-43d1-9919-81c985c5501b)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 1 "unconnected-(R1-Pad1)") (pintype "passive") (tstamp 273f1cdd-2968-4e14-8d27-5c8af92d2563)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 2 "unconnected-(R1-Pad2)") (pintype "passive") (tstamp e72419e6-b307-4404-b0ac-c049dfb5e56d)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp a6a541a9-8129-4d19-a6a9-273a9cbedb59) + (at 125.94 73.88) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (attr smd exclude_from_pos_files) + (fp_text reference "R5" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7c7b5241-6b10-42bc-8497-13cc4dcc66ce) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 14a1809d-bc57-4112-a327-db659036d750) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 6ffb7656-67a9-40be-af03-7f18fb5b1a7f) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 16989495-20f9-4749-9603-2b34490c4c2f)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 11c65473-2f59-43f5-981c-0da6ff2a5054)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp b7be6968-1089-414c-9887-33ddffe28e1d)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 4de72679-4aec-4557-a449-09231861ae63)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ffd6e1be-ad5f-41c1-9c28-eed53ed183ed)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 967e5c0f-3f61-45b3-8974-b87d24eeff2e)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e270df87-f6df-4505-992f-4d467297095a)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 25296ea9-b35d-4480-b5d8-65f93bde300e)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 01b49614-57dd-455d-8714-a867559bb38a)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp af6c224b-f88d-4da1-a458-52236ea82fe8)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp ce9c72d1-1ddb-4eea-af05-fc5764fdab19)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (pintype "passive") (tstamp 87fe97e0-1a94-4294-a917-777a49f4095d)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric" (layer "F.Cu") + (tstamp ba84c04d-b063-41f2-962d-8e4d4d7a283b) + (at 125.88 70.18) + (descr "Resistor SMD 0805 (2012 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 "Sheetfile" "filter_not_in_bom.kicad_sch") + (property "Sheetname" "") + (path "/a5d57f67-4cd2-4689-8ccf-01d241039af9") + (attr smd exclude_from_bom) + (fp_text reference "R3" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1a731d24-8ff2-4cc9-b68d-52be44bbec07) + ) + (fp_text value "R" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 16cafca4-eb36-4b30-bc1e-08e179476e6d) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 91bb11bb-6dcb-4d1a-961a-0d658b6fa628) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp a5a9116f-dda1-47cc-b94c-e377d1032507)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) + (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 39f9916c-9f5c-42b9-bd71-7429455bd163)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8696ed40-e3c7-4d48-aa1e-a886506ce00d)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8ed06371-bab5-43de-b927-73dda5d81013)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 4e6cfadb-97b9-4af7-a1f1-e0d81ce4c11d)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) + (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 27b91a3e-1da2-4eaf-8ef0-59aea5379ac4)) + (fp_line (start -1 -0.625) (end 1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 902a619f-f9e5-4a14-8477-f3eb70d93eb3)) + (fp_line (start -1 0.625) (end -1 -0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2d9cb67c-c5ea-424a-84d7-ba63b3f68bf4)) + (fp_line (start 1 -0.625) (end 1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp bd81cddd-0342-464c-9ae5-aa77be4985d8)) + (fp_line (start 1 0.625) (end -1 0.625) + (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp cb20d007-5727-4c38-8de6-f7b2f74da56e)) + (pad "1" smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 5 "unconnected-(R3-Pad1)") (pintype "passive") (tstamp 6e36b1fd-e6eb-4aaf-8eaa-728061b07601)) + (pad "2" smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.243902) + (net 6 "unconnected-(R3-Pad2)") (pintype "passive") (tstamp d3d757e8-2a83-40d2-a1d3-9b3bd8bff5cb)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_rect (start 117.53 65.43) (end 129.17 76.7) + (stroke (width 0.1) (type solid)) (fill none) (layer "Edge.Cuts") (tstamp 8a97f4c9-14b7-45a0-ab7c-5f2e135c28b9)) + (gr_text "Shouldn't be here\nManually added\nThe SCH says on_board='no'" (at 136.35 70.9) (layer "Edge.Cuts") (tstamp 95970c9c-5470-45f8-9aef-63ebab202939) + (effects (font (size 1 1) (thickness 0.15)) (justify left)) + ) + +) diff --git a/tests/board_samples/kicad_8/filter_not_in_bom.kicad_sch b/tests/board_samples/kicad_8/filter_not_in_bom.kicad_sch new file mode 100644 index 00000000..d4d4268a --- /dev/null +++ b/tests/board_samples/kicad_8/filter_not_in_bom.kicad_sch @@ -0,0 +1,211 @@ +(kicad_sch (version 20230121) (generator eeschema) + + (uuid 054db097-8803-478f-b615-cc9125586d15) + + (paper "A4") + + (title_block + (title "in_bom/on_board filter test") + (company "Instituto Nacional de Tecnología Industrial") + (comment 1 "KiBot") + ) + + (lib_symbols + (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "R" (at 2.032 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R" (at 0 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (at -1.778 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R res resistor" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_0_1" + (rectangle (start -1.016 -2.54) (end 1.016 2.54) + (stroke (width 0.254) (type default)) + (fill (type none)) + ) + ) + (symbol "R_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (text "in_bom: yes\non_board: yes\nPCB in_bom: no\n" (at 109.22 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 11c1d158-5f8a-4063-88b9-e6d3f6d51405) + ) + (text "in_bom: yes\non_board: no\nPCB in_bom: yes\n" (at 134.62 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2a5a7048-fb8d-48fd-88e2-0e4be1ac91cc) + ) + (text "in_bom: no\non_board: yes\nPCB in_bom: yes\n" (at 83.82 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 53e87ee4-9649-4de7-b05a-c20bd6abe76c) + ) + (text "in_bom: yes\non_board: yes\nPCB in_bom: yes\nPCB in_pos: no" + (at 160.02 68.58 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid d353589c-2a30-4906-a132-d4d063872687) + ) + (text "in_bom: yes\non_board: yes\nPCB in_bom: yes\n" (at 58.42 66.04 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid f7c872f3-d3c4-41b9-8951-57b099e0ee9e) + ) + + (symbol (lib_id "Device:R") (at 88.9 54.61 0) (unit 1) + (in_bom no) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 11087cb4-16d6-488f-9b40-434fce773bc8) + (property "Reference" "R2" (at 91.44 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 91.44 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 87.122 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 88.9 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c61ed2a3-43cd-4ec3-bc27-f4b574b17c5b)) + (pin "2" (uuid 60d54eaa-1db5-4965-a4cf-1ec30b085bcb)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R2") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 63.5 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 999872c1-ad95-4a47-93a5-ce6b47a86e13) + (property "Reference" "R1" (at 66.04 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 66.04 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 61.722 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 63.5 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e6e67706-8d3e-4ccf-932e-9f8752dbcea1)) + (pin "2" (uuid 10773c11-bc60-4472-9d7c-ff5c103f871a)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R1") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 114.3 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid a5d57f67-4cd2-4689-8ccf-01d241039af9) + (property "Reference" "R3" (at 116.84 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 116.84 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 112.522 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 114.3 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b951a2d2-6726-4d65-a194-b2274d900ed1)) + (pin "2" (uuid 8d3ccad0-c44c-4b75-809a-9b11818bc782)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R3") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 165.1 54.61 0) (unit 1) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid eaa2658c-9a5f-4406-bf42-1d9cb16fa43a) + (property "Reference" "R5" (at 167.64 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 167.64 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 163.322 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 165.1 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8f2a83f9-2f17-4d2d-9bea-8a5d0e0a53dc)) + (pin "2" (uuid 571b3855-48d9-45f4-ad59-b58b91eac372)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R5") (unit 1) + ) + ) + ) + ) + + (symbol (lib_id "Device:R") (at 139.7 54.61 0) (unit 1) + (in_bom yes) (on_board no) (dnp no) (fields_autoplaced) + (uuid fa1e856c-8ac1-49f5-9e01-8904c46a0a50) + (property "Reference" "R4" (at 142.24 53.3399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R" (at 142.24 55.8799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 137.922 54.61 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (at 139.7 54.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 03c1c640-2b41-414c-a64b-2266fd349096)) + (pin "2" (uuid 55d78ff8-ab55-45e7-8712-a31d3aad7239)) + (instances + (project "filter_not_in_bom" + (path "/054db097-8803-478f-b615-cc9125586d15" + (reference "R4") (unit 1) + ) + ) + ) + ) + + (sheet_instances + (path "/" (page "1")) + ) +) diff --git a/tests/test_plot/test_position.py b/tests/test_plot/test_position.py index 852ba955..20185898 100644 --- a/tests/test_plot/test_position.py +++ b/tests/test_plot/test_position.py @@ -19,6 +19,7 @@ pytest-3 --log-cli-level debug """ import os import logging +import pytest from kibot.misc import EXIT_BAD_CONFIG from . import context @@ -304,3 +305,37 @@ def test_position_error_same_name(test_dir): ctx.run(EXIT_BAD_CONFIG) ctx.search_err(r"(.*)but both with the same name") ctx.clean_up() + + +def check_comp_list(rows, comps): + cs = set() + for r in rows: + cs.add(r[0]) + assert cs == comps + + +@pytest.mark.skipif(not context.ki6(), reason="in_bom/on_board flags") +def test_position_flags_1(test_dir): + prj = 'filter_not_in_bom' + ctx = context.TestContext(test_dir, prj, 'simple_position_unified_csv', POS_DIR) + ctx.run() + check_comp_list(ctx.load_csv(prj+'-both_pos.csv')[0], {'R1', 'R2', 'R3', 'R4'}) + ctx.clean_up() + + +@pytest.mark.skipif(not context.ki6(), reason="in_bom/on_board flags") +def test_position_flags_2(test_dir): + prj = 'filter_not_in_bom' + ctx = context.TestContext(test_dir, prj, 'fil_no_bom', POS_DIR) + ctx.run() + check_comp_list(ctx.load_csv(prj+'-both_pos.csv')[0], {'R1', 'R4'}) + ctx.clean_up() + + +@pytest.mark.skipif(not context.ki6(), reason="in_bom/on_board flags") +def test_position_flags_3(test_dir): + prj = 'filter_not_in_bom' + ctx = context.TestContext(test_dir, prj, 'fil_no_board', POS_DIR) + ctx.run() + check_comp_list(ctx.load_csv(prj+'-both_pos.csv')[0], {'R1', 'R2', 'R3'}) + ctx.clean_up() diff --git a/tests/yaml_samples/fil_no_board.kibot.yaml b/tests/yaml_samples/fil_no_board.kibot.yaml new file mode 100644 index 00000000..466ef6fc --- /dev/null +++ b/tests/yaml_samples/fil_no_board.kibot.yaml @@ -0,0 +1,19 @@ +# Example KiBot config file for a basic 2-layer board +kibot: + version: 1 + +filters: + - name: not_in_bom + comment: "Exclude components marked in_bom='no'" + type: generic + exclude_not_on_board: true + +outputs: + - name: 'position' + comment: "Pick and place file" + type: position + dir: positiondir + options: + dnf_filter: not_in_bom + format: CSV + separate_files_for_front_and_back: false diff --git a/tests/yaml_samples/fil_no_bom.kibot.yaml b/tests/yaml_samples/fil_no_bom.kibot.yaml new file mode 100644 index 00000000..3d4d8984 --- /dev/null +++ b/tests/yaml_samples/fil_no_bom.kibot.yaml @@ -0,0 +1,19 @@ +# Example KiBot config file for a basic 2-layer board +kibot: + version: 1 + +filters: + - name: not_in_bom + comment: "Exclude components marked in_bom='no'" + type: generic + exclude_not_in_bom: true + +outputs: + - name: 'position' + comment: "Pick and place file" + type: position + dir: positiondir + options: + dnf_filter: not_in_bom + format: CSV + separate_files_for_front_and_back: false