Automating Generation of Outputs from Altium Designer

Output generation is not a manual step at the end of a project – it is a configurable, automatable process that should run the same way every time.

Altium Designer's output generation system is built around Output Job files (OutJobs). An OutJob is a configured collection of outputs – fabrication data, assembly data, documentation, BOMs, validation checks, and custom reports – with each output's settings, format, and target location defined once. The same OutJob can be run on any project. When the project changes, running the OutJob regenerates all outputs to the current state. When your output requirements change, you update the OutJob once.

OutJobs are not just a convenience for individual engineers. At the team level, they are the mechanism for standardizing what gets produced, in what format, and where it goes – eliminating the variation that comes from each engineer generating outputs manually with their own settings.

The Output Generation Architecture – What OutJobs Produce

  • Fabrication outputs: Gerber files (RS-274X, X2), NC drill files, ODB++, IPC-2581, board stack reports.

  • Assembly outputs: Pick and place files, assembly drawings, test point reports.

  • Documentation outputs: Schematic prints, PCB prints, 3D models (STEP), assembly drawings.

  • BOM outputs: BOM reports in standard and custom formats.

  • Validation outputs: DRC reports, ERC reports, differences reports, footprint comparison reports. These can be configured to block output generation if they fail.

  • Netlist outputs: Various netlist formats for downstream tools.

  • Custom outputs: Scripts embedded in OutJobs can generate outputs in any format your workflow requires.

Automating Output Generation Through Release

When a project is released through the Workspace, OutJob execution is integrated into the release process. Validation checks run first – if any fail, the release stops. Outputs are generated from the validated design state and stored in the Workspace as versioned release artifacts. This means release outputs are always traceable to a specific revision of the design, generated from a known-good state, and stored in a location the whole team can access.

This is fundamentally different from generating outputs locally and sharing files: there is no question about which design revision the outputs correspond to, no risk of outputs being regenerated with different settings, and no dependency on a specific engineer's machine or configuration.

Custom Output Generators

For output formats not natively supported by Altium Designer, the SDK provides an Output Generator API. A custom output generator extension plugs into the Outjob system as a first-class output type – it appears in the OutJob editor like any built-in output, can be configured with settings, assigned to output containers, and run as part of automated release. From the user's perspective, a custom output generator is indistinguishable from a native one.

This is the right approach for proprietary manufacturing formats, internal documentation templates, custom netlist formats for in-house tools, or any output requirement that doesn't match what Altium ships by default.

Common Failure Patterns in Output Management

  • Manual generation with per-engineer settings – each engineer generates outputs from their own machine with their own settings. Results vary subtly between engineers and between runs. When something goes wrong at manufacturing, it's difficult to know which revision of the design the outputs came from or whether the settings used were correct.

  • Outputs stored outside the Workspace – output files stored locally or in shared network folders become disconnected from the designs that generated them. It becomes unclear which design revision corresponds to which set of outputs, especially after revisions have been made. The Workspace release mechanism solves this by linking outputs to specific design revisions as versioned artifacts.

  • Validation and output generation as separate manual steps – when engineers run DRC and ERC manually before generating outputs, the checks and the generation are not formally connected. A design can pass validation one hour and have outputs generated the next hour after someone makes a change. Integrating validation into the OutJob ensures validation runs against the same design state that produces the outputs.

  • OutJob configuration drift between projects – when OutJobs are copied between projects and modified independently, the configurations diverge over time. A change to output requirements requires updating multiple OutJobs. Managing OutJobs as shared templates in the Workspace and pulling updates into projects prevents this drift.

When to Invest in Custom Output Generators

Custom output generators make sense when your manufacturing partners or downstream tools require formats that Altium doesn't produce natively, and when those outputs need to be generated consistently as part of a managed release process. If the format can be produced by post-processing a native Altium output – for example, transforming a BOM CSV into a specific structure – a script in the OutJob is often simpler than a full SDK extension. Build the extension when the format requires design object access at a level the scripting system can't reach, or when the output type needs to integrate into the OutJob UI as a proper configured output.

 

If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Content