KiBot/kiplot/out_pdf.py

45 lines
1.7 KiB
Python

from pcbnew import (PLOT_FORMAT_PDF, FromMM, ToMM)
from kiplot.out_any_layer import AnyLayer
from kiplot.drill_marks import DrillMarks
from kiplot.macros import macros, document, output_class # noqa: F401
from . import log
logger = log.get_logger(__name__)
@output_class
class PDF(AnyLayer, DrillMarks):
""" PDF (Portable Document Format)
Exports the PCB to the most common exhange format. Suitable for printing.
Note that this output isn't the best for documating your project.
This output is what you get from the File/Plot menu in pcbnew. """
def __init__(self, name, type, description):
super().__init__(name, type, description)
self._plot_format = PLOT_FORMAT_PDF
# Options
with document:
self.line_width = 0.1
""" [0.02,2] for objects without width [mm] """
self.mirror_plot = False
""" plot mirrored """
self.negative_plot = False
""" invert black and white """ # pragma: no cover
def config(self, outdir, options, layers):
AnyLayer.config(self, outdir, options, layers)
DrillMarks.config(self)
def _configure_plot_ctrl(self, po, output_dir):
AnyLayer._configure_plot_ctrl(self, po, output_dir)
DrillMarks._configure_plot_ctrl(self, po, output_dir)
po.SetMirror(self.mirror_plot)
po.SetLineWidth(FromMM(self.line_width))
po.SetNegative(self.negative_plot)
def read_vals_from_po(self, po):
AnyLayer.read_vals_from_po(self, po)
DrillMarks.read_vals_from_po(self, po)
self.mirror_plot = po.GetMirror()
self.line_width = ToMM(po.GetLineWidth())
self.negative_plot = po.GetNegative()