Import (include) from other config file

In the Importing outputs from another file you can find how to import outputs from other configuration files.

The Importing other stuff from another file explains how to import preflights, filters, variants, global options and output groups.

The imported files can be parameterized for better reuse, consult Definitions during import.

Furthermore, KiBot has some handful templates that you can import, explained in Importing internal templates.

Importing outputs from another file

In some cases you may want to reuse configuration files. An example of this are the example files that generate gerbers and drill files for various manufacturers (see).

In this case you can create a section named import containing a list of configuration files. Here is an example:

import:
  - configs/Elecrow.kibot.yaml
  - configs/FusionPCB.kibot.yaml
  - configs/JLCPCB.kibot.yaml
  - configs/P-Ban.kibot.yaml
  - configs/PCBWay.kibot.yaml

This will import all the outputs from the listed files.

Importing other stuff from another file

This is a more complex case of the previous Importing outputs from another file :ref:`import-from-another. In this case you must use the more general syntax:

import:
  - file: FILE_CONTAINING_THE_YAML_DEFINITIONS
    outputs: LIST_OF_OUTPUTS
    preflights: LIST_OF_PREFLIGHTS
    filters: LIST_OF_FILTERS
    variants: LIST_OF_VARIANTS
    global: LIST_OF_GLOBALS
    groups: LIST_OF_GROUPS

This syntax is flexible. If you don’t define which outputs, preflights, filters, variants, global and/or groups all will be imported. So you can just omit them, like this:

import:
  - file: FILE_CONTAINING_THE_YAML_DEFINITIONS

The LIST_OF_items can be a YAML list or just one string. Here is an example:

import:
  - file: FILE_CONTAINING_THE_YAML_DEFINITIONS
    outputs: one_name
    filters: ['name1', 'name2']

This will import the one_name output and the name1 and name2 filters. As variants is omitted, all variants will be imported. The same applies to other things like globals and groups. You can also use the all and none special names, like this:

import:
  - file: FILE_CONTAINING_THE_YAML_DEFINITIONS
    outputs: all
    filters: all
    variants: none
    global: none

This will import all outputs and filters, but not variants or globals. Also note that imported globals has more precedence than the ones defined in the same file. If you want to give more priority to the local values use:

kibot:
  version: 1
  imported_global_has_less_priority: true

import:
...

Another important detail is that global options that are lists gets the values merged. The last set of values found is inserted at the beginning of the list. You can collect filters for all the imported global sections.

Imports are processed recursively: An import section in an imported file is also processed (so importing A.yaml that imports B.yaml effectively imports both).

If an import filename is a relative path, it is resolved relative to the config file that contains the import (so it works regardless of the working directory and, in case of recursive imports, of where top-level config lives).

It’s recommended to always use some file extension in the FILE_CONTAINING_THE_YAML_DEFINITIONS name. If you don’t use any file extension and you use a relative path this name could be confused with an internal template. See Importing internal templates :ref:`import-templates. If you need to use a name without any extension and a relative path, and this name is the same used for a KiBot template use the is_external option:

import:
  - file: Elecrow
    is_external: true

Parameterizable imports

You can create imports that are parametrizable. For this you must use the mechanism explained in the Doing YAML substitution or preprocessing section.

Importing internal templates

KiBot has some internally defined outputs, groups and filters. You can easily use them with the import mechanism. Use the file mechanism and don’t include the extension for the file. When importing an internal template you don’t need to specify its location. Here is an example:

import:
  - file: Elecrow

This will import the definitions for the internal Elecrow configuration. Note that most templates can be customized using parameters, for more information consult the Internal templates parameters section.

Here is a list of currently defined templates and their outputs / groups:

  • 3DRender_top: Creates a top view render using Blender. The PCB is rotated to show it better.

    • _blender_3d_top: Generates a PNG rotating (30, 0, -20) degrees the PCB.

  • 3DRender_top_straight: Creates a top view render using Blender.

    • _blender_3d_top_straight: Generates a PNG with the stright top view.

  • 3DRender_bottom: Creates a bottom view render using Blender. The PCB is rotated to show it better.

    • _blender_3d_bottom: Generates a PNG rotating (-30, 0, -20) degrees the PCB.

  • 3DRender_bottom_straight: Creates a bottom view render using Blender.

    • _blender_3d_bottom_straight: Generates a PNG with the stright bottom view.

  • CheckZoneFill: enables the check_zone_fills preflight and checks the refilled PCB doesn’t changed too much.

    • _diff_cur_pcb_show: Makes a diff between the PCB in memory and the one on disk

    • _diff_cur_pcb_check: Computes the difference between PCB in memory and the one on disk. Aborts if more than 100 pixels changed. Use the _KIBOT_CHKZONE_THRESHOLD parameter to change this amount.

  • Elecrow: contain fabrication outputs compatible with Elecrow

    • _Elecrow_gerbers: Gerbers

    • _Elecrow_drill: Drill files

    • _Elecrow_compress: Gerbers and drill files compressed in a ZIP

    • _Elecrow: _Elecrow_gerbers + _Elecrow_drill

  • Elecrow_stencil: same as Elecrow, but also generates gerbers for F.Paste and B.Paste layers.

  • ExportProject: creates a ZIP file containing a self-contained version of the project. All footprint, symbols and 3D models are included.

    • _ExportProject: Exports the project. Not run by default, pulled by the compress.

    • _ExportProject_compress: Moves the files to a ZIP file

  • FusionPCB: contain fabrication outputs compatible with FusionPCB

    • _FusionPCB_gerbers: Gerbers

    • _FusionPCB_drill: Drill files

    • _FusionPCB_compress: Gerbers and drill files compressed in a ZIP

    • _FusionPCB: _FusionPCB_gerbers + _FusionPCB_drill

  • FusionPCB_stencil: same as FusionPCB, but also generates gerbers for F.Paste and B.Paste layers.

  • JLCPCB: contain fabrication outputs compatible with JLC PCB. Only SMD components.

    • _JLCPCB_gerbers: Gerbers.

    • _JLCPCB_drill: Drill files

    • _JLCPCB_position: Pick and place, applies the _rot_footprint filter. You can change this filter using the _KIBOT_POS_PRE_TRANSFORM parameter.

    • _JLCPCB_bom: List of LCSC parts. Use the field_lcsc_part global option to specify the LCSC part number field if KiBot fails to detect it.

    • _JLCPCB_compress: Gerbers, drill, position and BoM files compressed in a ZIP

    • _JLCPCB_fab: _JLCPCB_gerbers + _JLCPCB_drill

    • _JLCPCB_assembly: _JLCPCB_position + _JLCPCB_bom

    • _JLCPCB: _JLCPCB_fab + _JLCPCB_assembly

  • JLCPCB_stencil: same as JLCPCB, but also generates gerbers for F.Paste and B.Paste layers.

  • JLCPCB_with_THT: same as JLCPCB, but also including THT components.

  • JLCPCB_stencil_with_THT: same as JLCPCB_stencil, but also including THT components.

  • MacroFab_XYRS: XYRS position file in MacroFab format

    • _macrofab_xyrs: Position file in XYRS format compatible with MacroFab.

  • PanelDemo_4x4: creates a 4x4 panel of the board, showing some of the panelize options

    • _PanelDemo_4x4: The panel

  • P-Ban: contain fabrication outputs compatible with P-Ban

    • _P-Ban_gerbers: Gerbers. You need to define the layers for more than 8 (_KIBOT_GERBER_LAYERS parameter).

    • _P-Ban_drill: Drill files

    • _P-Ban: _P-Ban_gerbers + _P-Ban_drill

  • P-Ban_stencil: same as P-Ban, but also generates gerbers for F.Paste and B.Paste layers.

  • PCB2Blender_2_1: Exports the PCB in a format that can be imported by the pcb2blender tool v2.1 or newer.

    • _PCB2Blender_layers_2_1: The layers in SVG format. Disabled by default.

    • _PCB2Blender_vrml_2_1: The VRML for the board. Disabled by default.

    • _PCB2Blender_tools_2_1: Pads and bounds information. Disabled by default.

    • _PCB2Blender_2_1: The PCB3D file. Is enabled and creates the other files.

    • _PCB2Blender_elements_2_1: _PCB2Blender_tools_2_1 + _PCB2Blender_layers_2_1 + _PCB2Blender_vrml_2_1

  • PCB2Blender_2_7: Similar to PCB2Blender_2_1, but for v2.7 or newer. The content is the same, just using 2_1 instead of 2_7

  • PCB2Blender_2_1_haschtl: Similar to PCB2Blender_2_1, but for the experimental haschtl fork.

    • Imports PCB2Blender_2_1 and disables _PCB2Blender_2_1

    • _PCB2Blender_tools_2_1_haschtl: Pads, bounds and stack-up information. Disabled by default.

    • _PCB2Blender_2_1_haschtl: The PCB3D file. Is enabled and creates the other files.

    • _PCB2Blender_elements_2_1_haschtl: _PCB2Blender_tools_2_1_haschtl + _PCB2Blender_layers_2_1 + _PCB2Blender_vrml_2_1

  • PCBWay: contain fabrication outputs compatible with PCBWay

    • _PCBWay_gerbers: Gerbers

    • _PCBWay_drill: Drill files

    • _PCBWay_compress: Gerbers and drill files compressed in a ZIP

    • _PCBWay: _PCBWay_gerbers + _PCBWay_drill

  • PCBWay_stencil: same as PCBWay, but also generates gerbers for F.Paste and B.Paste layers.

Internal templates parameters

The internal templates makes use of the definitions during import mechanism to achieve some degree of customization.

The manufacturer templates (Elecrow, FusionPCB, JLCPCB, P-Ban and PCBWay) support:

  • _KIBOT_F_PASTE: Layer for the front paste mask (default: ‘’)

  • _KIBOT_B_PASTE: Layer for the back paste mask (default: ‘’)

  • _KIBOT_IMPORT_ID: Suffix used for all outputs and groups. This can be used to import the same template more than once, which is useful when using different parameters (default: ‘’)

  • _KIBOT_IMPORT_DIR: Target directory for the outputs (default: depends on the manufacturer)

  • _KIBOT_MANF_DIR: Target directory for the manufacturer outputs (default: _KIBOT_IMPORT_DIR)

  • _KIBOT_MANF_DIR_COMP: Target directory for the compressed manufacturer outputs (default: _KIBOT_IMPORT_DIR)

  • _KIBOT_GERBER_LAYERS: List of layers to use for the gerbers (default: a specially crafted list of layers)

  • _KIBOT_PLOT_FOOTPRINT_REFS: Include the footprint references in the gerbers (default: true)

  • _KIBOT_PLOT_FOOTPRINT_VALUES: Include the footprint values in the gerbers (default: true, except for JLCPCB)

  • _KIBOT_COMPRESS_MOVE: Move the generated files to the compressed archive (default: true)

The JLCPCB case is a little bit more complex and also supports:

  • _KIBOT_POS_PRE_TRANSFORM: Name of the filer used for pretransform, needed to rotate components (default: _rot_footprint)

  • _KIBOT_POS_ENABLED: Generate position files (default: true)

  • _KIBOT_BOM_ENABLED: Generate BoM (default: true)

  • _KIBOT_POS_ONLY_SMD: Use only SMD components for the position files (default: true)

  • _KIBOT_POS_DNF_FILTER: Filter used to exclude components from the position file (default: _remove_extra). It currently excludes components used by KiKit to create panels.

MacroFab_XYRS:

  • _KIBOT_MPN_FIELD: Manufacturer field definition (default: ‘- field: MPN’)

  • _KIBOT_IMPORT_ID: Suffix used for all outputs and groups (default: ‘’)

  • _KIBOT_IMPORT_DIR: Target directory for the outputs (default: ‘.’)

CheckZoneFill:

  • _KIBOT_CHKZONE_THRESHOLD: Maximum pixels difference (default: 100)

3DRender: Is the base for 3DRender_top, 3DRender_top_straight, 3DRender_bottom and 3DRender_bottom_straight

  • _KIBOT_IMPORT_ID: Suffix used for the output (default: ‘’)

  • _KIBOT_IMPORT_DIR: Target directory for the output (default: ‘Render_3D’)

  • _KIBOT_3D_VIEW: View point (default: ‘top’)

  • _KIBOT_3D_FILE_ID: Text used to differentiate this view from others (default: _KIBOT_IMPORT_ID)

  • _KIBOT_ROT_X: X axis rotation (default: 0)

  • _KIBOT_ROT_Y: Y axis rotation (default: 0)

  • _KIBOT_ROT_Z: Z axis rotation (default: 0)

ExportProject:

  • _KIBOT_IMPORT_ID: Suffix used for the output (default: ‘’)

  • _KIBOT_IMPORT_DIR: Target directory for the output (default: ‘ExportedProject’)

  • _KIBOT_DIR_COMP: Target directory for the compressed ZIP (default: _KIBOT_IMPORT_DIR)

  • _KIBOT_COMPRESS_MOVE: Move the generated files to the compressed archive (default: true)

Note that manufacturer templates named *_stencil are created using parameters. As an example: Elecrow_stencil is just Elecrow customized like this:

import:
  - file: Elecrow
    definitions:
      _KIBOT_F_PASTE: '- F.Paste'
      _KIBOT_B_PASTE: '- B.Paste'