[Quick-Start] Recycled the templates for gerbers

- Now we use the internal templates for the Gerber examples
This commit is contained in:
Salvador E. Tropea 2023-01-05 13:08:49 -03:00
parent 1ff0a48596
commit d274ada385
6 changed files with 63 additions and 251 deletions

View File

@ -852,12 +852,9 @@ def generate_one_example(dest_dir, types):
glb = {'filters': fil}
yaml_dump(f, {'global': glb})
f.write('\n')
# A helper for the JLCPCB stuff
fil = {'name': 'only_jlc_parts'}
fil['comment'] = 'Only parts with JLC (LCSC) code'
fil['type'] = 'generic'
fil['include_only'] = [{'column': 'LCSC#', 'regex': r'^C\d+'}]
yaml_dump(f, {'filters': [fil]})
# A helper for the internal templates
imports = [{'file': man} for man in ['Elecrow', 'FusionPCB', 'JLCPCB', 'PCBWay']]
yaml_dump(f, {'import': imports})
f.write('\n')
# A helper for KiCost demo
var = {'name': 'place_holder'}

View File

@ -123,30 +123,35 @@ class Gerber(AnyLayer):
useful = GS.get_useful_layers(USEFUL_LAYERS, layers, include_copper=True)
tpl_layers = [AnyLayer.layer2dict(la) for la in useful]
# Add the list of layers to the templates
skipped = []
for tpl in templates:
outs_used = []
for out in tpl:
skip = False
if out['type'] == 'gerber':
out['layers'] = tpl_layers
elif out['type'] == 'position':
out['options']['variant'] = 'place_holder'
if not GS.sch:
# We need the schematic for the variant
skip = True
out['run_by_default'] = False
out['options'] = {'pre_transform': ['_kicost_rename', '_rot_footprint']}
if out['type'] == 'bom' and not GS.sch_file:
skip = True
out['run_by_default'] = False
if out['type'] == 'compress':
out['dir'] = 'Manufacturers'
# We must disable the template and create a new one
# If we don't do it the parent is configured and, in the JLCPCB case, it needs an schematic
out['disable_run_by_default'] = out['extends']
out['extends'] = ''
# Moving files makes the `navigate_results` less powerful
# out['options']['move_files'] = True
if skipped:
if outs_used:
# Compress only the ones we didn't skip
out['options']['files'] = [f for f in out['options']['files'] if f['from_output'] not in skipped]
out['options'] = {'files': [{'from_output': f, 'dest': '/'} for f in outs_used]}
else:
out['dir'] = os.path.join('Manufacturers', out['dir'])
if skip:
skipped.append(out['name'])
else:
outs.append(out)
outs.append(out)
if not skip:
outs_used.append(out['name'])
return outs

View File

@ -1,59 +1,29 @@
# Gerber and drill files for Elecrow, without stencil
# URL: https://www.elecrow.com/
# Based on setting used by Gerber Zipper (https://github.com/g200kg/kicad-gerberzipper)
# This is just a template for the quick-start
kibot:
version: 1
import:
- file: Elecrow
outputs:
- name: Elecrow_gerbers
comment: Gerbers compatible with Elecrow
type: gerber
dir: Elecrow
options: &gerber_options
exclude_edge_layer: true
exclude_pads_from_silkscreen: true
plot_sheet_reference: false
plot_footprint_refs: true
plot_footprint_values: true
force_plot_invisible_refs_vals: false
tent_vias: true
use_protel_extensions: true
create_gerber_job_file: false
output: "%f.%x"
gerber_precision: 4.6
use_gerber_x2_attributes: false
use_gerber_net_attributes: false
disable_aperture_macros: true
line_width: 0.1
uppercase_extensions: true
subtract_mask_from_silk: true
inner_extension_pattern: '.g%n'
edge_cut_extension: '.gml'
layers:
- copper
- F.SilkS
- B.SilkS
- F.Mask
- B.Mask
- Edge.Cuts
extends: _Elecrow_gerbers
disable_run_by_default: true
- name: Elecrow_drill
comment: Drill files compatible with Elecrow
type: excellon
dir: Elecrow
options:
pth_and_npth_single_file: false
pth_id: ''
npth_id: '-NPTH'
output: "%f%i.TXT"
extends: _Elecrow_drill
disable_run_by_default: true
- name: Elecrow
comment: ZIP file for Elecrow
type: compress
dir: Elecrow
options:
files:
- from_output: Elecrow_gerbers
dest: /
- from_output: Elecrow_drill
dest: /
extends: _Elecrow_compress
disable_run_by_default: true

View File

@ -1,59 +1,29 @@
# Gerber and drill files for FusionPCB, without stencil
# URL: https://www.seeedstudio.io/fusion.html
# Based on setting used by Gerber Zipper (https://github.com/g200kg/kicad-gerberzipper)
# This is just a template for the quick-start
kibot:
version: 1
import:
- file: FusionPCB
outputs:
- name: FusionPCB_gerbers
comment: Gerbers compatible with FusionPCB
type: gerber
dir: FusionPCB
options: &gerber_options
exclude_edge_layer: true
exclude_pads_from_silkscreen: true
plot_sheet_reference: false
plot_footprint_refs: true
plot_footprint_values: true
force_plot_invisible_refs_vals: false
tent_vias: true
use_protel_extensions: true
create_gerber_job_file: false
output: "%f.%x"
gerber_precision: 4.6
use_gerber_x2_attributes: false
use_gerber_net_attributes: false
disable_aperture_macros: true
line_width: 0.1
uppercase_extensions: true
subtract_mask_from_silk: false
use_aux_axis_as_origin: true
inner_extension_pattern: '.gl%N'
edge_cut_extension: '.gml'
layers:
- copper
- F.SilkS
- B.SilkS
- F.Mask
- B.Mask
- Edge.Cuts
extends: _FusionPCB_gerbers
disable_run_by_default: true
- name: FusionPCB_drill
comment: Drill files compatible with FusionPCB
type: excellon
dir: FusionPCB
options:
pth_and_npth_single_file: true
use_aux_axis_as_origin: true
output: "%f.TXT"
extends: _FusionPCB_drill
disable_run_by_default: true
- name: FusionPCB
comment: ZIP file for FusionPCB
type: compress
dir: FusionPCB
options:
files:
- from_output: FusionPCB_gerbers
dest: /
- from_output: FusionPCB_drill
dest: /
extends: _FusionPCB_compress
disable_run_by_default: true

View File

@ -1,133 +1,43 @@
# Gerber and drill files for JLCPCB, without stencil
# URL: https://jlcpcb.com/
# Based on setting used by Gerber Zipper (https://github.com/g200kg/kicad-gerberzipper)
# This is just a template for the quick-start
kibot:
version: 1
filters:
- name: only_jlc_parts
comment: 'Only parts with JLC (LCSC) code'
type: generic
include_only:
- column: 'LCSC#'
regex: '^C\d+'
variants:
- name: rotated
comment: 'Just a place holder for the rotation filter'
type: kibom
variant: rotated
pre_transform: _rot_footprint
import:
- file: JLCPCB
outputs:
- name: JLCPCB_gerbers
comment: Gerbers compatible with JLCPCB
type: gerber
dir: JLCPCB
options: &gerber_options
exclude_edge_layer: true
exclude_pads_from_silkscreen: true
plot_sheet_reference: false
plot_footprint_refs: true
plot_footprint_values: false
force_plot_invisible_refs_vals: false
tent_vias: true
use_protel_extensions: true
create_gerber_job_file: false
disable_aperture_macros: true
gerber_precision: 4.6
use_gerber_x2_attributes: false
use_gerber_net_attributes: false
line_width: 0.1
subtract_mask_from_silk: true
inner_extension_pattern: '.g%n'
layers:
# Note: a more generic approach is to use 'copper' but then the filenames
# are slightly different.
- F.Cu
- B.Cu
- In1.Cu
- In2.Cu
- In3.Cu
- In4.Cu
- In5.Cu
- In6.Cu
- F.SilkS
- B.SilkS
- F.Mask
- B.Mask
- Edge.Cuts
extends: _JLCPCB_gerbers
disable_run_by_default: true
- name: JLCPCB_drill
comment: Drill files compatible with JLCPCB
type: excellon
dir: JLCPCB
options:
pth_and_npth_single_file: false
pth_id: '-PTH'
npth_id: '-NPTH'
metric_units: true
map: gerber
route_mode_for_oval_holes: false
output: "%f%i.%x"
extends: _JLCPCB_drill
disable_run_by_default: true
- name: 'JLCPCB_position'
comment: "Pick and place file, JLCPCB style"
- name: JLCPCB_position
comment: Pick and place file, JLCPCB style
type: position
dir: JLCPCB
options:
variant: rotated
output: '%f_cpl_jlc.%x'
format: CSV
units: millimeters
separate_files_for_front_and_back: false
only_smd: true
columns:
- id: Ref
name: Designator
- Val
- Package
- id: PosX
name: "Mid X"
- id: PosY
name: "Mid Y"
- id: Rot
name: Rotation
- id: Side
name: Layer
extends: _JLCPCB_position
disable_run_by_default: true
- name: 'JLCPCB_bom'
comment: "BoM for JLCPCB"
- name: JLCPCB_bom
comment: BoM for JLCPCB
type: bom
dir: JLCPCB
options:
output: '%f_%i_jlc.%x'
exclude_filter: 'only_jlc_parts'
ref_separator: ','
columns:
- field: Value
name: Comment
- field: References
name: Designator
- Footprint
- field: 'LCSC#'
name: 'LCSC Part #'
csv:
hide_pcb_info: true
hide_stats_info: true
quote_all: true
extends: _JLCPCB_bom
disable_run_by_default: true
- name: JLCPCB
comment: ZIP file for JLCPCB
type: compress
dir: JLCPCB
options:
files:
- from_output: JLCPCB_gerbers
dest: /
- from_output: JLCPCB_drill
dest: /
- from_output: JLCPCB_position
dest: /
- from_output: JLCPCB_bom
dest: /
extends: _JLCPCB_compress
disable_run_by_default: true

View File

@ -1,69 +1,29 @@
# Gerber and drill files for PCBWay, with stencil (solder paste)
# URL: https://www.pcbway.com
# Based on setting used by Gerber Zipper (https://github.com/g200kg/kicad-gerberzipper)
# This is just a template for the quick-start
kibot:
version: 1
import:
- file: PCBWay
outputs:
- name: PCBWay_gerbers
comment: Gerbers compatible with PCBWay
type: gerber
dir: PCBWay
options: &gerber_options
exclude_edge_layer: true
exclude_pads_from_silkscreen: true
plot_sheet_reference: false
plot_footprint_refs: true
plot_footprint_values: true
force_plot_invisible_refs_vals: false
tent_vias: true
use_protel_extensions: true
create_gerber_job_file: false
output: "%f.%x"
gerber_precision: 4.6
use_gerber_x2_attributes: false
use_gerber_net_attributes: false
disable_aperture_macros: true
line_width: 0.1
subtract_mask_from_silk: false
inner_extension_pattern: '.gl%N'
layers:
- copper
- F.SilkS
- B.SilkS
- F.Mask
- B.Mask
- F.Paste
- B.Paste
- Edge.Cuts
extends: _PCBWay_gerbers
disable_run_by_default: true
- name: PCBWay_drill
comment: Drill files compatible with PCBWay
type: excellon
dir: PCBWay
options:
metric_units: false
minimal_header: true
zeros_format: SUPPRESS_LEADING
# left_digits: 3
# right_digits: 3
# See https://github.com/INTI-CMNB/kicad-ci-test-spora/issues/1
# and https://docs.oshpark.com/design-tools/gerbv/fix-drill-format/
left_digits: 2
right_digits: 4
pth_and_npth_single_file: false
pth_id: ''
npth_id: '-NPTH'
output: "%f%i.drl"
extends: _PCBWay_drill
disable_run_by_default: true
- name: PCBWay
comment: ZIP file for PCBWay
type: compress
dir: PCBWay
options:
format: ZIP
files:
- from_output: PCBWay_gerbers
dest: /
- from_output: PCBWay_drill
dest: /
extends: _PCBWay_compress
disable_run_by_default: true