Fabrication outputs

Gerbers, drill files, position files, BOM and 3D exports from the Plot dialog.

Electronics Designer: Plot (Gerbers + drill) opens the Plot dialog: the layers to plot, format, output folder (default fab/ next to the board), Gerber and drill options, position files, and “Run DRC first”. It lists the files it wrote with an Open folder button and Open in Gerber viewer. Engine picks who writes the Gerbers and drill files: kicad-cli, or native (SoftForge’s own exporter, the same files without KiCad installed). Native is chosen, with a notice, when kicad-cli is missing; ODB++, IPC-2581, STEP and position files still need kicad-cli. The Preview tab plots the selected layers with the chosen engine and draws the files as the Gerber reader reads them back: what you see is the file. The same dialog exports STEP, VRML, GLB, a BOM and the netlist. Right-click a .kicad_pcb in the Explorer for Electronics Designer: Plot without opening it.

Default output folders. Each kind of output has a setting for its folder, relative to the project folder: softforge.edsnx.outputs.plotFolder, drillFolder, positionFolder, bomFolder, fabricationFolder (a whole Plot ▸ All run) and releaseFolder. They take the variables ${project}, ${projectDir}, ${board}, ${date} (YYYY-MM-DD), ${kind} and, for releases, ${version}; empty settings keep the built-in folders (fab/, the BOM next to the schematic, releases/${version}/). The Plot dialog uses the setting of its action while its folder field still says fab/ (a folder you type wins), Generate BOM proposes a file in the BOM folder, the Release dialog and release.run write to the release folder, and the registry commands project.plot, project.drill, project.position, project.fabricate and project.bom use them when no outDir / out is given. The edsnx CLI and the MCP server read the same keys from the workspace’s .vscode/settings.json (the nearest one above the project), so the editor, the shell and agents write to the same folders. The Project view lists the configured folders under Outputs.

json
{
  "softforge.edsnx.outputs.plotFolder": "out/${project}/gerber",
  "softforge.edsnx.outputs.drillFolder": "out/${project}/gerber",
  "softforge.edsnx.outputs.positionFolder": "out/${project}/assembly",
  "softforge.edsnx.outputs.releaseFolder": "releases/${project}-${version}"
}

The native engine draws board text with KiCad’s own stroke font when kicad-cli is installed. The first time, it reads the glyphs from your kicad-cli and keeps them in the extension’s storage, so silk and fab text are the strokes KiCad writes. Without kicad-cli, text uses SoftForge Stroke (edsnx gerber export --glyphs softforge asks for it).

The native engine also matches kicad-cli on these points:

  • The drill map is KiCad’s drawing: the board outline, KiCad’s marker per tool, sketched slots and the legend.
  • Boards saved before KiCad 9 with stroked zone fills have them re-grown, as KiCad does.
  • Disable aperture macros writes rounded pads as regions with arcs, as KiCad does.

PDF files (PDF format): One file per layer (KiCad’s default) or One file, a page per layer, one <board>.pdf with a page per selected layer in the list’s order (the common layers drawn on every page). Output jobs write the single file by default; "pdfMode": "separate" in a pdfPcb step’s options gives one file per layer.

Electronics Designer: Generate BOM… (from a schematic or its board) works like KiCad’s BOM export: pick the fields to include, their labels, order and which ones group rows (${QUANTITY}, ${ITEM_NUMBER}, ${DNP} and the other generated fields are listed with your own fields), a preset (Grouped By Value, Grouped By Value and Footprint, Attributes, Ungrouped, or presets saved in the .kicad_pro as KiCad does), sorting, a filter on the reference prefix (R, C*), DNP and excluded-from-BOM handling and the output delimiters. The preview shows the first rows for the whole sheet hierarchy. Export… runs kicad-cli sch export bom with those options; when kicad-cli is missing, a sheet has unsaved changes, or an option is one kicad-cli cannot do (descending sort, including excluded symbols), the extension writes the same file itself. Export HTML… writes a styled table.

Electronics Designer: Symbol Fields Table… lists every symbol of the project (all sheets) with its fields. Edit cells in place (Tab, Enter / Shift+Enter move between cells), tick Group symbols to collapse symbols whose group-by fields match (editing a group row edits every member), add, rename (double-click) or remove field columns, right-click a cell to show or hide that field on the schematic, and toggle DNP and Exclude from BOM. Apply writes all sheets at once: sheets open in an editor get an undoable edit, the others are written to disk. Export CSV… saves the grid.

ODB++ and IPC-2581. The Plot dialog’s ODB++ / IPC-2581 section runs kicad-cli pcb export odb (units, precision, ZIP / TGZ / folder, zone check) and kicad-cli pcb export ipc2581 (revision B or C, units, precision, ZIP, the symbol fields used for the BOM’s manufacturer and part number columns) into the output directory. IPC-2581 needs KiCad 8 or later and ODB++ KiCad 9 or later; an older kicad-cli says so instead of failing silently. The same exports are the commands project.odb and project.ipc2581 (edsnx project odb board.kicad_pcb), and edsnx project fabricate --odb --ipc2581 adds them to the full fabrication set.

Job sets#

KiCad 9 job sets (.kicad_jobset) run through the output jobs: each output of a job set (a folder or an archive) becomes an output job whose steps are its KiCad jobs: Gerbers, drill, position files, BOM, schematic and board PDF, SVG, DXF, STEP / glTF, ODB++, IPC-2581, IPC-D-356, netlist and execute-command jobs. KiCad jobs without an output kind here (DRC, ERC, render, GenCAD, statistics, copy files) are reported and skipped.

sh
edsnx jobs jobset list                          # the job sets of the project folder and their outputs
edsnx jobs jobset run Fabrication --out out     # one output (by id or description), or all without a name
edsnx jobs jobset save --jobs fab,assembly      # write output jobs as <project>.kicad_jobset for kicad-cli jobset run

Saving updates an existing job set in place: outputs with the same id are replaced, everything else (and every setting KiCad wrote) is kept. Steps KiCad has no job for (documentation set, panel, web viewer, requirements report, Gerber checks) are listed as skipped.

Documentation for Electronics Designer 2.3.60.