KiCad PCB EDA Suite
Loading...
Searching...
No Matches
plot_board_layers.cpp File Reference
#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.h>
#include <plotters/plotter_dxf.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.

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, const LSET &aLayerMask, const PCB_PLOT_PARAMS &aPlotOpt)
 Plot a solder mask layer.
 
void PlotClippedSilkLayer (BOARD *aBoard, PLOTTER *aPlotter, const 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, const 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, const 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 plotPdfBackground (BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, PLOTTER *aPlotter)
 
PLOTTERStartPlotBoard (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, PCB_PLOT_PARAMS *aPlotOpts, const wxString &aLayerName, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aPageNumber, int aPageCount)
 

Function Documentation

◆ FillNegativeKnockout()

static void FillNegativeKnockout ( PLOTTER * aPlotter,
const BOX2I & aBbbox )
static

Prefill in black an area a little bigger than the board to prepare for the negative plot.

Definition at line 1175 of file plot_board_layers.cpp.

References BLACK, FILLED_SHAPE, BOX2< Vec >::GetEnd(), BOX2< Vec >::GetOrigin(), BOX2< Vec >::Inflate(), pcbIUScale, PLOTTER::Rect(), PLOTTER::SetColor(), PLOTTER::SetNegative(), and WHITE.

Referenced by StartPlotBoard().

◆ GenerateLayerPoly()

◆ initializePlotter()

◆ PlotBoardLayers()

void PlotBoardLayers ( BOARD * aBoard,
PLOTTER * aPlotter,
const LSEQ & aLayerSequence,
const PCB_PLOT_PARAMS & aPlotOptions )

Plot a sequence of board layer IDs.

Parameters
aBoardis the board to plot.
aPlotteris the plotter to use.
aLayerSequenceis the sequence of layer IDs to plot.
aPlotOptionsare the plot options (files, sketch). Has meaning for some formats only.

Definition at line 129 of file plot_board_layers.cpp.

References PCB_PLOT_PARAMS::GetDrillMarksType(), NO_DRILL_SHAPE, BRDITEMS_PLOTTER::PlotDrillMarks(), PlotOneBoardLayer(), and BRDITEMS_PLOTTER::SetLayerSet().

Referenced by PCBNEW_JOBS_HANDLER::JobExportGerber(), PCBNEW_JOBS_HANDLER::JobExportGerbers(), PCB_PLOTTER::Plot(), PLOT_CONTROLLER::PlotLayer(), and PLOT_CONTROLLER::PlotLayers().

◆ PlotClippedSilkLayer()

void PlotClippedSilkLayer ( BOARD * aBoard,
PLOTTER * aPlotter,
const LSET & aLayerMask,
const PCB_PLOT_PARAMS & aPlotOpt )

◆ PlotInteractiveLayer()

◆ PlotLayer()

void PlotLayer ( BOARD * aBoard,
PLOTTER * aPlotter,
const LSET & layerMask,
const PCB_PLOT_PARAMS & plotOpts )

◆ PlotLayerOutlines()

◆ PlotOneBoardLayer()

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.

Parameters
aBoardis the board to plot.
aPlotteris the plotter to use.
aLayeris the layer id to plot.
aPlotOptis the plot options (files, sketch). Has meaning for some formats only.

Definition at line 215 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().

◆ plotPdfBackground()

◆ PlotPolySet()

void PlotPolySet ( BOARD * aBoard,
PLOTTER * aPlotter,
const PCB_PLOT_PARAMS & aPlotOpt,
SHAPE_POLY_SET * aPolySet,
PCB_LAYER_ID aLayer )

◆ PlotSolderMaskLayer()

void PlotSolderMaskLayer ( BOARD * aBoard,
PLOTTER * aPlotter,
const 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().

◆ PlotStandardLayer()

void PlotStandardLayer ( BOARD * aBoard,
PLOTTER * aPlotter,
const 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 325 of file plot_board_layers.cpp.

References SHAPE_POLY_SET::AddOutline(), LSET::AllCuMask(), LSET::AllCuMask(), ANGLE_0, any::any(), SHAPE_POLY_SET::Append(), B_Cu, B_Fab, B_Mask, B_Paste, SHAPE_POLY_SET::BBox(), 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, DXF, PLOTTER::EndBlock(), ERROR_INSIDE, F_Cu, F_Fab, F_Mask, F_Paste, 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, GERBER, 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(), getMetadata, BOX2< Vec >::GetOrigin(), PCB_PLOT_PARAMS::GetPlotPadNumbers(), PLOTTER::GetPlotterType(), 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::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(), PLOTTER::StartBlock(), PLOTTER::ThickArc(), PLOTTER::ThickSegment(), BOARD::Tracks(), TRAPEZOID, COLOR4D::UNSPECIFIED, via, WHITE, VECTOR2< T >::x, VECTOR2< T >::y, and BOARD::Zones().

Referenced by PlotLayer(), and PlotOneBoardLayer().

◆ setupPlotterNewPDFPage()

◆ StartPlotBoard()

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.

Returns
the plotter object if OK, NULL if the file is not created (or has a problem).

Definition at line 1212 of file plot_board_layers.cpp.

References _, AddGerberX2Attribute(), PLOTTER::ClearHeaderLinesList(), PCB_PLOT_PARAMS::ColorSettings(), BOARD::ComputeBoundingBox(), GERBER_PLOTTER::DisableApertMacros(), DXF, FillNegativeKnockout(), GERBER, PCB_PLOT_PARAMS::GetAutoScale(), 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(), PCB_PLOT_PARAMS::GetScale(), BOARD::GetTitleBlock(), PCB_PLOT_PARAMS::GetUseGerberX2format(), HPGL, initializePlotter(), LAYER_DRAWINGSHEET, KIGFX::PCB_RENDER_SETTINGS::LoadColors(), PLOTTER::OpenFile(), PCB_LAYER_ID_COUNT, pcbIUScale, PDF, PlotDrawingSheet(), plotPdfBackground(), POST, PLOTTER::RenderSettings(), PCB_PLOT_PARAMS::SetAutoScale(), KIGFX::RENDER_SETTINGS::SetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::SetLayerName(), PCB_PLOT_PARAMS::SetMirror(), PLOTTER::SetRenderSettings(), PCB_PLOT_PARAMS::SetScale(), 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(), and PCB_PLOTTER::Plot().