#!/bin/bash set -euo pipefail GERBERS_DIR="gerbers" GCODE_DIR="gcode" usage() { echo "Usage: $0 " exit 1 } PCB_FILE="$1" PCB_FILE_PREFIX="$(basename "$PCB_FILE" .kicad_pcb)" # Fix this mkdir -p "$GERBERS_DIR" mkdir -p "$GCODE_DIR" # Export drill, front and back layers as gerber files. echo "Exporting gerbers..." kicad-cli pcb export drill -o "$GERBERS_DIR" "$PCB_FILE" # kicad-cli pcb export gerbers -o "$GERBERS_DIR" -l Front "$PCB_FILE" # kicad-cli pcb export gerbers -o "$GERBERS_DIR" -l Back "$PCB_FILE" kicad-cli pcb export gerbers -o "$GERBERS_DIR" -l Edge.Cuts "$PCB_FILE" echo "Exporting Gcode for drilling and outline routing..." docker run --rm -i -t \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/data" \ ptodorov/pcb2gcode \ --config millproject \ --output-dir "$GCODE_DIR" \ --drill "$GERBERS_DIR/$PCB_FILE_PREFIX.drl" \ --outline "$GERBERS_DIR/$PCB_FILE_PREFIX-Edge_Cuts.gm1" # Export outlines of the panelized board i.e. use the layer 'User.Eco1'. echo "Exporting panelized outline from layer 'User.Eco1'..." python3 export_panel_outlines_gerber.py \ --layers User.Eco1 \ --output "$GERBERS_DIR" \ "$PCB_FILE" echo "Exporting Gcode for panelized board's slot routing..." # Use the 'User-Eco1' layer instead as it contains panelized board's slot outlines only. docker run --rm -i -t \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/data" \ ptodorov/pcb2gcode \ --config millproject \ --output-dir "$GCODE_DIR" \ --outline "$GERBERS_DIR/$PCB_FILE_PREFIX-User-Eco1.gbr" \ --outline-output "slot_outline.ngc" # echo "Exporting Gcode for isolation traces routing..." # docker run --rm -i -t \ # -u "$(id -u):$(id -g)" \ # -v "$(pwd):/data" \ # ptodorov/pcb2gcode \ # --config millproject \ # --output-dir "$GCODE_DIR" \ # --front "$GERBERS_DIR/$PCB_FILE_PREFIX-Front.gtl" \ # --back "$GERBERS_DIR/$PCB_FILE_PREFIX-Back.gbl" \