added export_panel_outlines_gerber.py
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
output/
|
gcode/
|
||||||
|
gerbers/
|
||||||
|
|
||||||
|
|||||||
44
export_panel_outlines_gerber.py
Normal file
44
export_panel_outlines_gerber.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import pcbnew
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Export a single PCB layer to a Gerber file using pcbnew."
|
||||||
|
)
|
||||||
|
parser.add_argument("input", help="Input .kicad_pcb file")
|
||||||
|
parser.add_argument("--output", "-o", required=True, help="Output directory")
|
||||||
|
parser.add_argument("--layers", "-l", required=True,
|
||||||
|
help="Layer name to export (e.g. User.Eco1)")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
board = pcbnew.LoadBoard(args.input)
|
||||||
|
|
||||||
|
# Resolve layer name to ID
|
||||||
|
layer_id = board.GetLayerID(args.layers)
|
||||||
|
if layer_id == -1:
|
||||||
|
parser.error(f"Unknown layer: {args.layers!r}. "
|
||||||
|
f"Run with a known layer name (e.g. User.Eco1, Edge.Cuts).")
|
||||||
|
|
||||||
|
# Resolve output directory to absolute path so pcbnew doesn't make it
|
||||||
|
# relative to the board file location
|
||||||
|
output_dir = os.path.abspath(args.output)
|
||||||
|
os.makedirs(output_dir, exist_ok=True)
|
||||||
|
|
||||||
|
prefix = args.layers.replace(".", "-")
|
||||||
|
|
||||||
|
pc = pcbnew.PLOT_CONTROLLER(board)
|
||||||
|
po = pc.GetPlotOptions()
|
||||||
|
po.SetOutputDirectory(output_dir)
|
||||||
|
po.SetPlotFrameRef(False)
|
||||||
|
|
||||||
|
pc.SetLayer(layer_id)
|
||||||
|
pc.OpenPlotfile(prefix, pcbnew.PLOT_FORMAT_GERBER, args.layers)
|
||||||
|
print(f"Plotting layer {args.layers!r} (id={layer_id}) to {pc.GetPlotFileName()}")
|
||||||
|
pc.PlotLayer()
|
||||||
|
pc.ClosePlot()
|
||||||
|
print("Done.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user