feat: kicad_tools --gerbers

--gerbers <pcb> [outdir]: one .gbr per enabled layer (stackup plot order,
kicad-cli defaults via default JOB_EXPORT_PCB_GERBERS + PlotJobToPlotOpts)
plus the .gbrjob file — mirrors JobExportGerbers minus the zone re-check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ADzCSeN3Q9DJL3YW2FZTXB
This commit is contained in:
Gergő Törcsvári 2026-07-10 17:45:19 +02:00
commit 19014ae113
No known key found for this signature in database
GPG key ID: 8E75F2CDE64E5322
4 changed files with 132 additions and 4 deletions

View file

@ -7,6 +7,7 @@
*
* pcbnew side (pcb_convert_main.cpp):
* kicad_tools --drc [--json] [--strict] <file.kicad_pcb> [<out>]
* kicad_tools --gerbers <file.kicad_pcb> [<outdir>]
*
* eeschema side (sym_convert_main.cpp) everything else:
* kicad_tools --convert-lib <input.lib> <output.kicad_sym>
@ -35,10 +36,15 @@ int main( int argc, char** argv )
{
int rc;
if( argc >= 2 && std::strcmp( argv[1], "--drc" ) == 0 )
if( argc >= 2
&& ( std::strcmp( argv[1], "--drc" ) == 0 || std::strcmp( argv[1], "--gerbers" ) == 0 ) )
{
rc = pcbConvertMain( argc, argv );
}
else
{
rc = symConvertMain( argc, argv );
}
// Skip the EXIT_RUNTIME static-dtor pass (same rationale as
// pcb_convert_main.cpp, which already does this on its --drc path): with