[PCB_Print][Added] Support for sketch_pads_on_fab_layers

Closes #356
This commit is contained in:
Salvador E. Tropea 2022-12-28 13:26:15 -03:00
parent 284b9df12a
commit eb911f35d1
6 changed files with 48 additions and 15 deletions

View File

@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `vrml` export the 3D model in Virtual Reality Modeling Language (#349) - `vrml` export the 3D model in Virtual Reality Modeling Language (#349)
- iBoM: - iBoM:
- `hide_excluded` to hide excluded *.Fab drawings. - `hide_excluded` to hide excluded *.Fab drawings.
- Plot related outputs: - Plot related outputs and PCB_Print:
- Added support for the KiCad 6 "sketch_pads_on_fab_layers" option. (#356) - Added support for the KiCad 6 "sketch_pads_on_fab_layers" option. (#356)
### Fixed ### Fixed
- PCB_Print: - PCB_Print:

View File

@ -1913,7 +1913,8 @@ Notes:
You must disable it to get the dimensions (See https://gitlab.com/kicad/code/kicad/-/issues/11901). You must disable it to get the dimensions (See https://gitlab.com/kicad/code/kicad/-/issues/11901).
- `pre_transform`: [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. - `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. A short-cut to use for simple cases where a variant is an overkill.
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm] (KiCad 6+). - `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+). - `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `sketch_plot`: [boolean=false] Don't fill objects, just draw the outline. - `sketch_plot`: [boolean=false] Don't fill objects, just draw the outline.
- `tent_vias`: [boolean=true] Cover the vias. - `tent_vias`: [boolean=true] Cover the vias.
@ -2092,7 +2093,8 @@ Notes:
- `plot_footprint_values`: [boolean=true] Include the footprint values. - `plot_footprint_values`: [boolean=true] Include the footprint values.
- `pre_transform`: [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. - `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. A short-cut to use for simple cases where a variant is an overkill.
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm] (KiCad 6+). - `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+). - `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `tent_vias`: [boolean=true] Cover the vias. - `tent_vias`: [boolean=true] Cover the vias.
- `uppercase_extensions`: [boolean=false] Use uppercase names for the extensions. - `uppercase_extensions`: [boolean=false] Use uppercase names for the extensions.
@ -2157,7 +2159,8 @@ Notes:
- `pre_transform`: [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. - `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. A short-cut to use for simple cases where a variant is an overkill.
- `scaling`: [number=0] Scale factor (0 means autoscaling). - `scaling`: [number=0] Scale factor (0 means autoscaling).
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm] (KiCad 6+). - `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+). - `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `sketch_plot`: [boolean=false] Don't fill objects, just draw the outline. - `sketch_plot`: [boolean=false] Don't fill objects, just draw the outline.
- `tent_vias`: [boolean=true] Cover the vias. - `tent_vias`: [boolean=true] Cover the vias.
@ -2953,6 +2956,9 @@ Notes:
- `page_id`: [string='%02d'] Text to differentiate the pages. Use %d (like in C) to get the page number. - `page_id`: [string='%02d'] Text to differentiate the pages. Use %d (like in C) to get the page number.
- `sheet`: [string='Assembly'] Text to use for the `sheet` in the title block. - `sheet`: [string='Assembly'] Text to use for the `sheet` in the title block.
- `sheet_reference_color`: [string=''] Color to use for the frame and title block. - `sheet_reference_color`: [string=''] Color to use for the frame and title block.
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `tent_vias`: [boolean=true] Cover the vias. - `tent_vias`: [boolean=true] Cover the vias.
- `title`: [string=''] Text used to replace the sheet title. %VALUE expansions are allowed. - `title`: [string=''] Text used to replace the sheet title. %VALUE expansions are allowed.
If it starts with `+` the text is concatenated. If it starts with `+` the text is concatenated.
@ -3196,7 +3202,8 @@ Notes:
- `plot_footprint_values`: [boolean=true] Include the footprint values. - `plot_footprint_values`: [boolean=true] Include the footprint values.
- `pre_transform`: [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. - `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. A short-cut to use for simple cases where a variant is an overkill.
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm] (KiCad 6+). - `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+). - `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `tent_vias`: [boolean=true] Cover the vias. - `tent_vias`: [boolean=true] Cover the vias.
- `uppercase_extensions`: [boolean=false] Use uppercase names for the extensions. - `uppercase_extensions`: [boolean=false] Use uppercase names for the extensions.
@ -3237,7 +3244,8 @@ Notes:
- `priority`: [number=50] [0,100] Priority for this output. High priority outputs are created first. - `priority`: [number=50] [0,100] Priority for this output. High priority outputs are created first.
Internally we use 10 for low priority, 90 for high priority and 50 for most outputs. Internally we use 10 for low priority, 90 for high priority and 50 for most outputs.
- `run_by_default`: [boolean=true] When enabled this output will be created when no specific outputs are requested. - `run_by_default`: [boolean=true] When enabled this output will be created when no specific outputs are requested.
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm] (KiCad 6+). - `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+). - `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `tent_vias`: [boolean=true] Cover the vias. - `tent_vias`: [boolean=true] Cover the vias.
- `uppercase_extensions`: [boolean=false] Use uppercase names for the extensions. - `uppercase_extensions`: [boolean=false] Use uppercase names for the extensions.
@ -3497,7 +3505,8 @@ Notes:
A short-cut to use for simple cases where a variant is an overkill. A short-cut to use for simple cases where a variant is an overkill.
- `scale_adjust_x`: [number=1.0] Fine grain adjust for the X scale (floating point multiplier). - `scale_adjust_x`: [number=1.0] Fine grain adjust for the X scale (floating point multiplier).
- `scale_adjust_y`: [number=1.0] Fine grain adjust for the Y scale (floating point multiplier). - `scale_adjust_y`: [number=1.0] Fine grain adjust for the Y scale (floating point multiplier).
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm] (KiCad 6+). - `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+). - `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `sketch_plot`: [boolean=false] Don't fill objects, just draw the outline. - `sketch_plot`: [boolean=false] Don't fill objects, just draw the outline.
- `tent_vias`: [boolean=true] Cover the vias. - `tent_vias`: [boolean=true] Cover the vias.
@ -3896,7 +3905,8 @@ Notes:
- `plot_footprint_values`: [boolean=true] Include the footprint values. - `plot_footprint_values`: [boolean=true] Include the footprint values.
- `pre_transform`: [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. - `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. A short-cut to use for simple cases where a variant is an overkill.
- `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm] (KiCad 6+). - `sketch_pad_line_width`: [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9).
- `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+). - `sketch_pads_on_fab_layers`: [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+).
- `svg_precision`: [number=4] [0,6] Scale factor used to represent 1 mm in the SVG (KiCad 6). - `svg_precision`: [number=4] [0,6] Scale factor used to represent 1 mm in the SVG (KiCad 6).
The value is how much zeros has the multiplier (1 mm = 10 power `svg_precision` units). The value is how much zeros has the multiplier (1 mm = 10 power `svg_precision` units).

View File

@ -653,7 +653,8 @@ outputs:
# [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # [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 # A short-cut to use for simple cases where a variant is an overkill
pre_transform: '_none' pre_transform: '_none'
# [number=0.1] Line width for the sketched pads [mm] (KiCad 6+) # [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
# Note that this value is currently ignored by KiCad (6.0.9)
sketch_pad_line_width: 0.1 sketch_pad_line_width: 0.1
# [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+) # [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+)
sketch_pads_on_fab_layers: false sketch_pads_on_fab_layers: false
@ -816,7 +817,8 @@ outputs:
# [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # [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 # A short-cut to use for simple cases where a variant is an overkill
pre_transform: '_none' pre_transform: '_none'
# [number=0.1] Line width for the sketched pads [mm] (KiCad 6+) # [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
# Note that this value is currently ignored by KiCad (6.0.9)
sketch_pad_line_width: 0.1 sketch_pad_line_width: 0.1
# [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+) # [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+)
sketch_pads_on_fab_layers: false sketch_pads_on_fab_layers: false
@ -894,7 +896,8 @@ outputs:
pre_transform: '_none' pre_transform: '_none'
# [number=0] Scale factor (0 means autoscaling) # [number=0] Scale factor (0 means autoscaling)
scaling: 0 scaling: 0
# [number=0.1] Line width for the sketched pads [mm] (KiCad 6+) # [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
# Note that this value is currently ignored by KiCad (6.0.9)
sketch_pad_line_width: 0.1 sketch_pad_line_width: 0.1
# [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+) # [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+)
sketch_pads_on_fab_layers: false sketch_pads_on_fab_layers: false
@ -1896,6 +1899,11 @@ outputs:
sheet: 'Assembly' sheet: 'Assembly'
# [string=''] Color to use for the frame and title block # [string=''] Color to use for the frame and title block
sheet_reference_color: '' sheet_reference_color: ''
# [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
# Note that this value is currently ignored by KiCad (6.0.9)
sketch_pad_line_width: 0.1
# [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+)
sketch_pads_on_fab_layers: false
# [boolean=false] Try to sort the layers in the same order that uses KiCad for printing # [boolean=false] Try to sort the layers in the same order that uses KiCad for printing
sort_layers: false sort_layers: false
# [boolean=true] Cover the vias # [boolean=true] Cover the vias
@ -2139,7 +2147,8 @@ outputs:
# [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # [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 # A short-cut to use for simple cases where a variant is an overkill
pre_transform: '_none' pre_transform: '_none'
# [number=0.1] Line width for the sketched pads [mm] (KiCad 6+) # [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
# Note that this value is currently ignored by KiCad (6.0.9)
sketch_pad_line_width: 0.1 sketch_pad_line_width: 0.1
# [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+) # [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+)
sketch_pads_on_fab_layers: false sketch_pads_on_fab_layers: false
@ -2385,7 +2394,8 @@ outputs:
scale_adjust_y: 1.0 scale_adjust_y: 1.0
# [number=1] Scale factor (0 means autoscaling) # [number=1] Scale factor (0 means autoscaling)
scaling: 1 scaling: 1
# [number=0.1] Line width for the sketched pads [mm] (KiCad 6+) # [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
# Note that this value is currently ignored by KiCad (6.0.9)
sketch_pad_line_width: 0.1 sketch_pad_line_width: 0.1
# [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+) # [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+)
sketch_pads_on_fab_layers: false sketch_pads_on_fab_layers: false
@ -2789,7 +2799,8 @@ outputs:
# [string|list(string)='_none'] Name of the filter to transform fields before applying other filters. # [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 # A short-cut to use for simple cases where a variant is an overkill
pre_transform: '_none' pre_transform: '_none'
# [number=0.1] Line width for the sketched pads [mm] (KiCad 6+) # [number=0.1] Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
# Note that this value is currently ignored by KiCad (6.0.9)
sketch_pad_line_width: 0.1 sketch_pad_line_width: 0.1
# [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+) # [boolean=false] Draw only the outline of the pads on the *.Fab layers (KiCad 6+)
sketch_pads_on_fab_layers: false sketch_pads_on_fab_layers: false

View File

@ -78,7 +78,8 @@ class AnyLayerOptions(VariantOptions):
self.sketch_pads_on_fab_layers = False self.sketch_pads_on_fab_layers = False
""" Draw only the outline of the pads on the *.Fab layers (KiCad 6+) """ """ Draw only the outline of the pads on the *.Fab layers (KiCad 6+) """
self.sketch_pad_line_width = 0.1 self.sketch_pad_line_width = 0.1
""" Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+) """ """ Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9) """
super().__init__() super().__init__()
def config(self, parent): def config(self, parent):

View File

@ -197,6 +197,11 @@ class PagesOptions(Optionable):
You can reuse other layers lists, some options aren't used here, but they are valid """ You can reuse other layers lists, some options aren't used here, but they are valid """
self.page_id = '%02d' self.page_id = '%02d'
""" Text to differentiate the pages. Use %d (like in C) to get the page number """ """ Text to differentiate the pages. Use %d (like in C) to get the page number """
self.sketch_pads_on_fab_layers = False
""" Draw only the outline of the pads on the *.Fab layers (KiCad 6+) """
self.sketch_pad_line_width = 0.1
""" Line width for the sketched pads [mm], see `sketch_pads_on_fab_layers` (KiCad 6+)
Note that this value is currently ignored by KiCad (6.0.9) """
self._scaling_example = 1.0 self._scaling_example = 1.0
self._autoscale_margin_x_example = 0 self._autoscale_margin_x_example = 0
self._autoscale_margin_y_example = 0 self._autoscale_margin_y_example = 0
@ -219,6 +224,7 @@ class PagesOptions(Optionable):
self.autoscale_margin_x = parent.autoscale_margin_x self.autoscale_margin_x = parent.autoscale_margin_x
if self.autoscale_margin_y is None: if self.autoscale_margin_y is None:
self.autoscale_margin_y = parent.autoscale_margin_y self.autoscale_margin_y = parent.autoscale_margin_y
self.sketch_pad_line_width = GS.from_mm(self.sketch_pad_line_width)
class PCB_PrintOptions(VariantOptions): class PCB_PrintOptions(VariantOptions):
@ -1066,6 +1072,9 @@ class PCB_PrintOptions(VariantOptions):
if GS.ki5: if GS.ki5:
po.SetLineWidth(FromMM(p.line_width)) po.SetLineWidth(FromMM(p.line_width))
po.SetPlotPadsOnSilkLayer(not p.exclude_pads_from_silkscreen) po.SetPlotPadsOnSilkLayer(not p.exclude_pads_from_silkscreen)
else:
po.SetSketchPadsOnFabLayers(p.sketch_pads_on_fab_layers)
po.SetSketchPadLineWidth(p.sketch_pad_line_width)
filelist = [] filelist = []
if self.force_edge_cuts and next(filter(lambda x: x._id == edge_id, p.layers), None) is None: if self.force_edge_cuts and next(filter(lambda x: x._id == edge_id, p.layers), None) is None:
p.layers.append(edge_layer) p.layers.append(edge_layer)

View File

@ -31,6 +31,8 @@ outputs:
sheet_reference_color: "#A02020" sheet_reference_color: "#A02020"
# black_holes: false # black_holes: false
# holes_color: "#8080FF" # holes_color: "#8080FF"
sketch_pads_on_fab_layers: true
sketch_pad_line_width: 1
layers: layers:
- layer: Edge.Cuts - layer: Edge.Cuts
- layer: F.Cu - layer: F.Cu