KiCad PCB EDA Suite
|
#include <wx/log.h>
#include <eda_item.h>
#include <layer_ids.h>
#include <lset.h>
#include <geometry/geometry_utils.h>
#include <geometry/shape_segment.h>
#include <pcb_base_frame.h>
#include <math/util.h>
#include <board.h>
#include <footprint.h>
#include <pcb_track.h>
#include <pad.h>
#include <zone.h>
#include <pcb_shape.h>
#include <pcb_target.h>
#include <pcb_dimension.h>
#include <pcbplot.h>
#include <plotters/plotter_dxf.h>
#include <plotters/plotter_hpgl.h>
#include <plotters/plotter_gerber.h>
#include <plotters/plotters_pslike.h>
#include <pcb_painter.h>
#include <gbr_metadata.h>
#include <advanced_config.h>
Go to the source code of this file.
Macros | |
#define | ERROR maxError, ERROR_OUTSIDE |
Functions | |
void | GenerateLayerPoly (SHAPE_POLY_SET *aResult, BOARD *aBoard, PCB_LAYER_ID aLayer, bool aPlotFPText, bool aPlotReferences, bool aPlotValues) |
Generates a SHAPE_POLY_SET representing the plotted items on a layer. | |
void | PlotLayer (BOARD *aBoard, PLOTTER *aPlotter, const LSET &layerMask, const PCB_PLOT_PARAMS &plotOpts) |
void | PlotPolySet (BOARD *aBoard, PLOTTER *aPlotter, const PCB_PLOT_PARAMS &aPlotOpt, SHAPE_POLY_SET *aPolySet, PCB_LAYER_ID aLayer) |
void | PlotSolderMaskLayer (BOARD *aBoard, PLOTTER *aPlotter, LSET aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt) |
Plot a solder mask layer. | |
void | PlotClippedSilkLayer (BOARD *aBoard, PLOTTER *aPlotter, LSET aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt) |
void | PlotBoardLayers (BOARD *aBoard, PLOTTER *aPlotter, const LSEQ &aLayers, const PCB_PLOT_PARAMS &aPlotOptions) |
Plot a sequence of board layer IDs. | |
void | PlotInteractiveLayer (BOARD *aBoard, PLOTTER *aPlotter, const PCB_PLOT_PARAMS &aPlotOpt) |
Plot interactive items (hypertext links, properties, etc.). | |
void | PlotOneBoardLayer (BOARD *aBoard, PLOTTER *aPlotter, PCB_LAYER_ID aLayer, const PCB_PLOT_PARAMS &aPlotOpt, bool isPrimaryLayer) |
Plot one copper or technical layer. | |
void | PlotStandardLayer (BOARD *aBoard, PLOTTER *aPlotter, LSET aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt) |
Plot any layer EXCEPT a solder-mask with an enforced minimum width. | |
void | PlotLayerOutlines (BOARD *aBoard, PLOTTER *aPlotter, LSET aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt) |
Plot outlines. | |
static void | initializePlotter (PLOTTER *aPlotter, const BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts) |
Set up most plot options for plotting a board (especially the viewport) Important thing: page size is the 'drawing' page size, paper size is the physical page size. | |
static void | FillNegativeKnockout (PLOTTER *aPlotter, const BOX2I &aBbbox) |
Prefill in black an area a little bigger than the board to prepare for the negative plot. | |
static void | ConfigureHPGLPenSizes (HPGL_PLOTTER *aPlotter, const PCB_PLOT_PARAMS *aPlotOpts) |
Calculate the effective size of HPGL pens and set them in the plotter object. | |
PLOTTER * | StartPlotBoard (BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, int aLayer, const wxString &aLayerName, const wxString &aFullFileName, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aPageName, const wxString &aPageNumber, const int aPageCount) |
Open a new plotfile using the options (and especially the format) specified in the options and prepare the page for plotting. | |
void | setupPlotterNewPDFPage (PLOTTER *aPlotter, BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aPageNumber, int aPageCount) |
#define ERROR maxError, ERROR_OUTSIDE |
|
static |
Calculate the effective size of HPGL pens and set them in the plotter object.
Definition at line 1199 of file plot_board_layers.cpp.
References PCB_PLOT_PARAMS::GetHPGLPenDiameter(), PCB_PLOT_PARAMS::GetHPGLPenNum(), PCB_PLOT_PARAMS::GetHPGLPenSpeed(), PCB_PLOT_PARAMS::GetScale(), EDA_IU_SCALE::IU_PER_MILS, KiROUND(), pcbIUScale, HPGL_PLOTTER::SetPenDiameter(), HPGL_PLOTTER::SetPenNumber(), and HPGL_PLOTTER::SetPenSpeed().
Referenced by StartPlotBoard().
Prefill in black an area a little bigger than the board to prepare for the negative plot.
Definition at line 1183 of file plot_board_layers.cpp.
References BLACK, FILLED_SHAPE, BOX2< Vec >::GetEnd(), BOX2< Vec >::GetOrigin(), BOX2< Vec >::Inflate(), EDA_IU_SCALE::IU_PER_MM, pcbIUScale, PLOTTER::Rect(), PLOTTER::SetColor(), PLOTTER::SetNegative(), and WHITE.
Referenced by StartPlotBoard().
void GenerateLayerPoly | ( | SHAPE_POLY_SET * | aResult, |
BOARD * | aBoard, | ||
PCB_LAYER_ID | aLayer, | ||
bool | aPlotFPText, | ||
bool | aPlotReferences, | ||
bool | aPlotValues | ||
) |
Generates a SHAPE_POLY_SET representing the plotted items on a layer.
Definition at line 923 of file plot_board_layers.cpp.
References B_Mask, SHAPE_POLY_SET::BooleanAdd(), CHAMFER_ALL_CORNERS, clearance, SHAPE_POLY_SET::Deflate(), BOARD::Drawings(), ERROR, F_Mask, BOARD::Footprints(), BOARD::GetBoardPolygonOutlines(), BOARD::GetDesignSettings(), BOARD_DESIGN_SETTINGS::m_MaxError, BOARD_DESIGN_SETTINGS::m_SolderMaskMinWidth, PCB_TEXT_T, PCB_VIA_T, SHAPE_POLY_SET::Simplify(), text, BOARD::Tracks(), via, and BOARD::Zones().
Referenced by PlotClippedSilkLayer(), and PlotSolderMaskLayer().
|
static |
Set up most plot options for plotting a board (especially the viewport) Important thing: page size is the 'drawing' page size, paper size is the physical page size.
Definition at line 1096 of file plot_board_layers.cpp.
References BOX2< Vec >::Centre(), BOARD::ComputeBoundingBox(), PCB_PLOT_PARAMS::GetA4Output(), PCB_PLOT_PARAMS::GetAutoScale(), BOARD_DESIGN_SETTINGS::GetAuxOrigin(), PCB_PLOT_PARAMS::GetBlackAndWhite(), BOARD::GetDesignSettings(), PCB_PLOT_PARAMS::GetGerberPrecision(), PCB_PLOT_PARAMS::GetMirror(), BOARD::GetPageSettings(), PCB_PLOT_PARAMS::GetScale(), BOX2< Vec >::GetSize(), PAGE_INFO::GetSizeIU(), PCB_PLOT_PARAMS::GetSvgPrecision(), PCB_PLOT_PARAMS::GetTextMode(), PCB_PLOT_PARAMS::GetUseAuxOrigin(), EDA_IU_SCALE::IU_PER_MILS, KiROUND(), pcbIUScale, PLOTTER::SetColorMode(), PLOTTER::SetCreator(), PLOTTER::SetGerberCoordinatesFormat(), PLOTTER::SetPageSettings(), PLOTTER::SetSvgCoordinatesFormat(), PLOTTER::SetTextMode(), PLOTTER::SetViewport(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by setupPlotterNewPDFPage(), and StartPlotBoard().
void PlotBoardLayers | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
const LSEQ & | aLayerSequence, | ||
const PCB_PLOT_PARAMS & | aPlotOptions | ||
) |
Plot a sequence of board layer IDs.
aBoard | is the board to plot. |
aPlotter | is the plotter to use. |
aLayerSequence | is the sequence of layer IDs to plot. |
aPlotOptions | are the plot options (files, sketch). Has meaning for some formats only. |
Definition at line 129 of file plot_board_layers.cpp.
References LSET::ClearCopperLayers(), LSET::ClearNonCopperLayers(), PCB_PLOT_PARAMS::GetDrillMarksType(), PCB_PLOT_PARAMS::GetLayerSelection(), NO_DRILL_SHAPE, BRDITEMS_PLOTTER::PlotDrillMarks(), PlotOneBoardLayer(), PLOTTER::SetColor(), and WHITE.
Referenced by PCBNEW_JOBS_HANDLER::JobExportGerber(), PCBNEW_JOBS_HANDLER::JobExportGerbers(), EXPORT_SVG::Plot(), PCB_PLOTTER::Plot(), and PLOT_CONTROLLER::PlotLayers().
void PlotClippedSilkLayer | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
LSET | aLayerMask, | ||
const PCB_PLOT_PARAMS & | aPlotOpt | ||
) |
Definition at line 112 of file plot_board_layers.cpp.
References B_Mask, B_SilkS, SHAPE_POLY_SET::BooleanSubtract(), F_Mask, F_SilkS, GenerateLayerPoly(), PCB_PLOT_PARAMS::GetPlotFPText(), PCB_PLOT_PARAMS::GetPlotReference(), PCB_PLOT_PARAMS::GetPlotValue(), and PlotPolySet().
Referenced by PlotOneBoardLayer().
void PlotInteractiveLayer | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
const PCB_PLOT_PARAMS & | aPlotOpt | ||
) |
Plot interactive items (hypertext links, properties, etc.).
Definition at line 154 of file plot_board_layers.cpp.
References _, B_Cu, PLOTTER::Bookmark(), F_Cu, BOARD::Footprints(), BOX2< Vec >::GetHeight(), PLOTTER::GetPlotOffsetUserUnits(), BOX2< Vec >::GetWidth(), PLOTTER::HyperlinkMenu(), BOX2< Vec >::Inflate(), PCB_PLOT_PARAMS::m_PDFBackFPPropertyPopups, PCB_PLOT_PARAMS::m_PDFFrontFPPropertyPopups, and BOX2< Vec >::Move().
Referenced by PCB_PLOTTER::Plot(), PLOT_CONTROLLER::PlotLayer(), and PLOT_CONTROLLER::PlotLayers().
void PlotLayer | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
const LSET & | layerMask, | ||
const PCB_PLOT_PARAMS & | plotOpts | ||
) |
Definition at line 54 of file plot_board_layers.cpp.
References DXF, PCB_PLOT_PARAMS::GetDXFPlotPolygonMode(), PCB_PLOT_PARAMS::GetFormat(), PlotLayerOutlines(), and PlotStandardLayer().
Referenced by PlotOneBoardLayer(), and PlotSolderMaskLayer().
void PlotLayerOutlines | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
LSET | aLayerMask, | ||
const PCB_PLOT_PARAMS & | aPlotOpt | ||
) |
Plot outlines.
Plot copper outline of a copper layer.
Definition at line 843 of file plot_board_layers.cpp.
References SHAPE_POLY_SET::CHole(), PLOTTER::Circle(), BOARD::ConvertBrdLayerToPolygonalContours(), SHAPE_POLY_SET::COutline(), BOARD::Footprints(), ADVANCED_CFG::GetCfg(), PCB_PLOT_PARAMS::GetDrillMarksType(), SHAPE_POLY_SET::HoleCount(), ADVANCED_CFG::m_SmallDrillMarkSize, EDA_IU_SCALE::mmToIU(), NO_DRILL_SHAPE, NO_FILL, SHAPE_POLY_SET::OutlineCount(), pad, path, PCB_VIA_T, pcbIUScale, PLOTTER::PlotPoly(), SHAPE_POLY_SET::RemoveAllContours(), LSET::Seq(), LSET::SeqStackupForPlotting(), BRDITEMS_PLOTTER::SetLayerSet(), SHAPE_POLY_SET::Simplify(), SKETCH, SMALL_DRILL_SHAPE, PLOTTER::ThickSegment(), BOARD::Tracks(), and via.
Referenced by PlotLayer().
void PlotOneBoardLayer | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
PCB_LAYER_ID | aLayer, | ||
const PCB_PLOT_PARAMS & | aPlotOpt, | ||
bool | isPrimaryLayer | ||
) |
Plot one copper or technical layer.
It prepares options and calls the specialized plot function according to the layer type.
aBoard | is the board to plot. |
aPlotter | is the plotter to use. |
aLayer | is the layer id to plot. |
aPlotOpt | is the plot options (files, sketch). Has meaning for some formats only. |
Definition at line 219 of file plot_board_layers.cpp.
References B_Adhes, B_CrtYd, B_Fab, B_Mask, B_Paste, B_SilkS, BLACK, Cmts_User, Dwgs_User, DXF, Eco1_User, Eco2_User, Edge_Cuts, F_Adhes, F_CrtYd, F_Fab, F_Mask, F_Paste, F_SilkS, GERBER, PCB_PLOT_PARAMS::GetFormat(), PLOTTER::GetPlotterType(), PCB_PLOT_PARAMS::GetSubtractMaskFromSilk(), PCB_PLOT_PARAMS::GetTextMode(), IsCopperLayer(), Margin, NO_DRILL_SHAPE, PlotClippedSilkLayer(), PlotLayer(), PlotSolderMaskLayer(), PlotStandardLayer(), PLOTTER::SetColor(), PCB_PLOT_PARAMS::SetDrillMarksType(), PCB_PLOT_PARAMS::SetDXFPlotPolygonMode(), PLOTTER::SetLayerPolarity(), PCB_PLOT_PARAMS::SetSkipPlotNPTH_Pads(), and PLOTTER::SetTextMode().
Referenced by PlotBoardLayers(), and PLOT_CONTROLLER::PlotLayer().
void PlotPolySet | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
const PCB_PLOT_PARAMS & | aPlotOpt, | ||
SHAPE_POLY_SET * | aPolySet, | ||
PCB_LAYER_ID | aLayer | ||
) |
Definition at line 65 of file plot_board_layers.cpp.
References SHAPE_POLY_SET::Fracture(), BRDITEMS_PLOTTER::PlotZone(), ZONE::SetLayer(), BRDITEMS_PLOTTER::SetLayerSet(), and ZONE::SetMinThickness().
Referenced by PlotClippedSilkLayer(), and PlotSolderMaskLayer().
void PlotSolderMaskLayer | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
LSET | aLayerMask, | ||
const PCB_PLOT_PARAMS & | aPlotOpt | ||
) |
Plot a solder mask layer.
Solder mask layers have a minimum thickness value and cannot be drawn like standard layers, unless the minimum thickness is 0.
Definition at line 93 of file plot_board_layers.cpp.
References B_Mask, F_Mask, GenerateLayerPoly(), BOARD::GetDesignSettings(), PCB_PLOT_PARAMS::GetPlotFPText(), PCB_PLOT_PARAMS::GetPlotReference(), PCB_PLOT_PARAMS::GetPlotValue(), BOARD_DESIGN_SETTINGS::m_SolderMaskMinWidth, PlotLayer(), and PlotPolySet().
Referenced by PlotOneBoardLayer().
void PlotStandardLayer | ( | BOARD * | aBoard, |
PLOTTER * | aPlotter, | ||
LSET | aLayerMask, | ||
const PCB_PLOT_PARAMS & | aPlotOpt | ||
) |
Plot any layer EXCEPT a solder-mask with an enforced minimum width.
Plot copper or technical layers.
pads not connected to copper are optionally not drawn
Vias not connected to copper are optionally not drawn
Definition at line 332 of file plot_board_layers.cpp.
References SHAPE_POLY_SET::AddOutline(), LSET::AllCuMask(), ANGLE_0, SHAPE_POLY_SET::Append(), B_Cu, B_Fab, B_Mask, B_Paste, KIGFX::COLOR4D::BLACK, CHAMFERED_RECT, CIRCLE, SHAPE_POLY_SET::CloneDropTriangulation(), color, PCB_PLOT_PARAMS::ColorSettings(), SHAPE_POLY_SET::CPolygon(), CUSTOM, SHAPE_POLY_SET::DeletePolygon(), BOARD::Drawings(), dummy, PLOTTER::EndBlock(), ERROR_INSIDE, F_Cu, F_Fab, F_Mask, F_Paste, FILLED, PLOTTER::FlashPadCircle(), BOARD::Footprints(), GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CONDUCTOR, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_NONE, GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_VIAPAD, GBR_NETLIST_METADATA::GBR_NETINFO_NET, GBR_NETLIST_METADATA::GBR_NETINFO_UNSPECIFIED, PCB_ARC::GetAngle(), PCB_ARC::GetArcAngleStart(), BOX2< Vec >::GetBottom(), PCB_ARC::GetCenter(), COLOR_SETTINGS::GetColor(), BRDITEMS_PLOTTER::getColor(), PCB_PLOT_PARAMS::GetCrossoutDNPFPsOnFabLayers(), BOARD::GetDesignSettings(), PCB_PLOT_PARAMS::GetDrillMarksType(), BOX2< Vec >::GetEnd(), BRDITEMS_PLOTTER::getFineWidthAdj(), PCB_PLOT_PARAMS::GetHideDNPFPsOnFabLayers(), BOX2< Vec >::GetLeft(), BOX2< Vec >::GetOrigin(), PCB_PLOT_PARAMS::GetPlotMode(), PCB_PLOT_PARAMS::GetPlotPadNumbers(), PCB_ARC::GetRadius(), BOX2< Vec >::GetRight(), PCB_PLOT_PARAMS::GetSketchPadsOnFabLayers(), PCB_PLOT_PARAMS::GetSkipPlotNPTH_Pads(), BOX2< Vec >::GetTop(), SHAPE_POLY_SET::InflateWithLinkedHoles(), PCB_ARC::IsDegenerated(), SHAPE_POLY_SET::IsEmpty(), LAYER_CLASS_FAB, LAYER_VIAS, LIGHTGRAY, BOARD_DESIGN_SETTINGS::m_LineThickness, BOARD_DESIGN_SETTINGS::m_MaxError, GBR_METADATA::m_NetlistMetadata, GBR_NETLIST_METADATA::m_NotInNet, SHAPE_POLY_SET::NewOutline(), NO_DRILL_SHAPE, NPTH, SHAPE_POLY_SET::OutlineCount(), OVAL, pad, PCB_ARC_T, PCB_VIA_T, BRDITEMS_PLOTTER::PlotBoardGraphicItem(), BRDITEMS_PLOTTER::PlotDrillMarks(), BRDITEMS_PLOTTER::PlotFootprintGraphicItems(), BRDITEMS_PLOTTER::PlotFootprintTextItems(), BRDITEMS_PLOTTER::PlotPad(), BRDITEMS_PLOTTER::PlotPadNumber(), BRDITEMS_PLOTTER::PlotZone(), RECTANGLE, ROUND_ALL_CORNERS, ROUNDRECT, LSET::Seq(), LSET::SeqStackupForPlotting(), GBR_METADATA::SetApertureAttrib(), PLOTTER::SetColor(), BRDITEMS_PLOTTER::SetLayerSet(), GBR_METADATA::SetNetAttribType(), GBR_METADATA::SetNetName(), SKETCH, PLOTTER::StartBlock(), PLOTTER::ThickArc(), PLOTTER::ThickSegment(), BOARD::Tracks(), TRAPEZOID, UNDEFINED_LAYER, KIGFX::COLOR4D::UNSPECIFIED, via, WHITE, VECTOR2< T >::x, VECTOR2< T >::y, and BOARD::Zones().
Referenced by PlotLayer(), and PlotOneBoardLayer().
void setupPlotterNewPDFPage | ( | PLOTTER * | aPlotter, |
BOARD * | aBoard, | ||
const PCB_PLOT_PARAMS * | aPlotOpts, | ||
const wxString & | aSheetName, | ||
const wxString & | aSheetPath, | ||
const wxString & | aPageNumber, | ||
int | aPageCount | ||
) |
Definition at line 1361 of file plot_board_layers.cpp.
References BOARD::GetFileName(), KIGFX::RENDER_SETTINGS::GetLayerColor(), PCB_PLOT_PARAMS::GetMirror(), BOARD::GetPageSettings(), PCB_PLOT_PARAMS::GetPlotFrameRef(), BOARD::GetProject(), BOARD::GetProperties(), BOARD::GetTitleBlock(), initializePlotter(), LAYER_DRAWINGSHEET, PlotDrawingSheet(), and PLOTTER::RenderSettings().
Referenced by PCB_PLOTTER::Plot().
PLOTTER * StartPlotBoard | ( | BOARD * | aBoard, |
const PCB_PLOT_PARAMS * | aPlotOpts, | ||
int | aLayer, | ||
const wxString & | aLayerName, | ||
const wxString & | aFullFileName, | ||
const wxString & | aSheetName, | ||
const wxString & | aSheetPath, | ||
const wxString & | aPageName, | ||
const wxString & | aPageNumber, | ||
const int | aPageCount | ||
) |
Open a new plotfile using the options (and especially the format) specified in the options and prepare the page for plotting.
Definition at line 1218 of file plot_board_layers.cpp.
References AddGerberX2Attribute(), PLOTTER::ClearHeaderLinesList(), PCB_PLOT_PARAMS::ColorSettings(), BOARD::ComputeBoundingBox(), ConfigureHPGLPenSizes(), GERBER_PLOTTER::DisableApertMacros(), DXF, FillNegativeKnockout(), GERBER, PCB_PLOT_PARAMS::GetDisableGerberMacros(), PCB_PLOT_PARAMS::GetDXFPlotUnits(), BOARD::GetFileName(), PCB_PLOT_PARAMS::GetFineScaleAdjustX(), PCB_PLOT_PARAMS::GetFineScaleAdjustY(), PCB_PLOT_PARAMS::GetFormat(), PCB_PLOT_PARAMS::GetIncludeGerberNetlistInfo(), KIGFX::RENDER_SETTINGS::GetLayerColor(), PCB_PLOT_PARAMS::GetMirror(), PCB_PLOT_PARAMS::GetNegative(), BOARD::GetPageSettings(), PCB_PLOT_PARAMS::GetPlotFrameRef(), PLOTTER::GetPlotterType(), BOARD::GetProject(), BOARD::GetProperties(), BOARD::GetTitleBlock(), PCB_PLOT_PARAMS::GetUseGerberX2format(), HPGL, initializePlotter(), LAYER_DRAWINGSHEET, KIGFX::PCB_RENDER_SETTINGS::LoadColors(), EDA_IU_SCALE::mmToIU(), PLOTTER::OpenFile(), PCB_LAYER_ID_COUNT, pcbIUScale, PDF, PlotDrawingSheet(), POST, PLOTTER::RenderSettings(), KIGFX::RENDER_SETTINGS::SetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::SetLayerName(), PCB_PLOT_PARAMS::SetMirror(), PLOTTER::SetRenderSettings(), PSLIKE_PLOTTER::SetScaleAdjust(), DXF_PLOTTER::SetUnits(), PLOTTER::StartPlot(), SVG, GERBER_PLOTTER::UseX2format(), and GERBER_PLOTTER::UseX2NetAttributes().
Referenced by PCBNEW_JOBS_HANDLER::JobExportGerber(), PCBNEW_JOBS_HANDLER::JobExportGerbers(), PLOT_CONTROLLER::OpenPlotfile(), EXPORT_SVG::Plot(), and PCB_PLOTTER::Plot().