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.
{
"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.
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 runSaving 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.