30#include <wx/filename.h>
40 m_board( aBoard ), m_plotOpts( aParams ), m_reporter( aReporter )
46 const LSEQ& aCommonLayers,
bool aUseGerberFileExtensions )
48 std::function<bool( wxString* )> textResolver = [&]( wxString* token ) ->
bool
54 size_t finalPageCount = 0;
55 for(
size_t i = 0; i < aLayersToPlot.size(); i++ )
64 std::unique_ptr<GERBER_JOBFILE_WRITER> jobfile_writer;
74 for(
size_t i = 0, pageNum = 1; i < aLayersToPlot.size(); i++ )
88 fn.Assign( aOutputPath, brdFn.GetName() );
106 wxString fullname = fn.GetFullName();
107 jobfile_writer->AddGbrFile( layer, fullname );
115 wxString pageNumber = wxString::Format(
"%zu", pageNum );
116 wxString pageName = layerName;
117 wxString sheetName = layerName;
121 sheetPath, pageName, pageNumber, finalPageCount );
130 msg = wxS(
"AUTHOR" );
135 msg = wxS(
"SUBJECT" );
146 && i != aLayersToPlot.size() - 1 )
148 wxString pageNumber = wxString::Format(
"%zu", pageNum + 1 );
156 nextLayer = aLayersToPlot[nextI];
158 && ( nextI < aLayersToPlot.size() - 1 ) );
161 wxString sheetName = layerName;
164 static_cast<PDF_PLOTTER*
>( plotter )->StartPage( pageNumber, pageName );
173 || i == aLayersToPlot.size() - 1 )
180 msg.Printf(
_(
"Plotted to '%s'." ), fn.GetFullPath() );
186 msg.Printf(
_(
"Failed to create file '%s'." ), fn.GetFullPath() );
208 jobfile_writer->CreateJobFile( fn.GetFullPath() );
224 const wxString& aSuffix,
const wxString& aExtension )
229 aFilename->SetPath( aOutputDir );
232 aFilename->SetExt( aExtension );
240 wxString suffix = aSuffix;
242 suffix.Trim(
false );
244 wxString badchars = wxFileName::GetForbiddenChars( wxPATH_DOS );
245 badchars.Append(
"%." );
247 for(
unsigned ii = 0; ii < badchars.Len(); ii++ )
248 suffix.Replace( badchars[ii], wxT(
"_" ) );
250 if( !suffix.IsEmpty() )
251 aFilename->SetName( aFilename->GetName() + wxT(
"-" ) + suffix );
260 plotSequence.push_back( aLayerToPlot );
262 for(
size_t i = 0; i < aPlotWithAllLayersSeq.size(); i++ )
267 if(
find( plotSequence.begin(), plotSequence.end(), layer ) != plotSequence.end() )
270 plotSequence.push_back( layer );
302 : DXF_UNITS::MILLIMETERS );
305 : OUTLINE_MODE::FILLED );
339 aPlotOpts.
SetFormat( PLOT_FORMAT::GERBER );
Information pertinent to a Pcbnew printed circuit board.
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
bool ResolveTextVar(wxString *token, int aDepth) const
TITLE_BLOCK & GetTitleBlock()
const wxString & GetFileName() const
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
bool m_plotGraphicItemsUsingContours
bool m_useProtelFileExtension
bool m_includeNetlistAttributes
bool m_disableApertureMacros
bool m_subtractSolderMaskFromSilk
bool m_pdfFrontFPPropertyPopups
bool m_pdfSingle
This is a hack to deal with cli having the wrong behavior We will deprecate out the wrong behavior,...
bool m_pdfBackFPPropertyPopups
bool m_sketchDNPFPsOnFabLayers
bool m_sketchPadsOnFabLayers
DRILL_MARKS m_drillShapeOption
Used by SVG/DXF/PDF/Gerbers.
LSEQ m_printMaskLayersToIncludeOnAllLayers
bool m_crossoutDNPFPsOnFabLayers
bool m_hideDNPFPsOnFabLayers
LSEQ m_printMaskLayer
Layers to include on all individual layer prints.
bool m_mirror
Common Options.
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
LSEQ getPlotSequence(PCB_LAYER_ID aLayerToPlot, LSEQ aPlotWithAllLayersSeq)
Generates a final LSEQ for plotting by removing duplicates.
bool Plot(const wxString &aOutputPath, const LSEQ &aLayersToPlot, const LSEQ &aCommonLayers, bool aUseGerberFileExtensions)
static void PlotJobToPlotOpts(PCB_PLOT_PARAMS &aPlotOpts, JOB_EXPORT_PCB_PLOT *aJob)
Translate a JOB to PCB_PLOT_PARAMS.
PCB_PLOTTER(BOARD *aBoard, REPORTER *aReporter, PCB_PLOT_PARAMS &aParams)
PCB_PLOT_PARAMS m_plotOpts
bool copperLayerShouldBeSkipped(PCB_LAYER_ID aLayerToPlot)
All copper layers that are disabled are actually selected This is due to wonkyness in automatically s...
static void BuildPlotFileName(wxFileName *aFilename, const wxString &aOutputDir, const wxString &aSuffix, const wxString &aExtension)
Complete a plot filename.
Parameters and options when plotting/printing a board.
PLOT_FORMAT GetFormat() const
void SetDrillMarksType(DRILL_MARKS aVal)
void SetLayerSelection(LSET aSelection)
void SetSketchPadsOnFabLayers(bool aFlag)
void SetUseGerberX2format(bool aUse)
void SetDXFPlotPolygonMode(bool aFlag)
void SetPlotFrameRef(bool aFlag)
void SetSketchDNPFPsOnFabLayers(bool aFlag)
bool m_PDFMetadata
Generate PDF metadata for SUBJECT and AUTHOR.
bool GetCreateGerberJobFile() const
void SetPlotPadNumbers(bool aFlag)
void SetPlotOnAllLayersSelection(LSET aSelection)
bool m_PDFFrontFPPropertyPopups
Generate PDF property popup menus for footprints.
void SetDisableGerberMacros(bool aDisable)
void SetMirror(bool aFlag)
void SetBlackAndWhite(bool blackAndWhite)
void SetGerberPrecision(int aPrecision)
void SetSubtractMaskFromSilk(bool aSubtract)
void SetHideDNPFPsOnFabLayers(bool aFlag)
void SetUseGerberProtelExtensions(bool aUse)
void SetDXFPlotUnits(DXF_UNITS aUnit)
void SetIncludeGerberNetlistInfo(bool aUse)
void SetPlotInvisibleText(bool aFlag)
void SetCreateGerberJobFile(bool aCreate)
bool m_PDFSingle
Generate a single PDF file for all layers.
void SetNegative(bool aFlag)
void SetPlotMode(OUTLINE_MODE aPlotMode)
void SetUseAuxOrigin(bool aAux)
bool m_PDFBackFPPropertyPopups
on front and/or back of board
void SetSvgPrecision(unsigned aPrecision)
void SetCrossoutDNPFPsOnFabLayers(bool aFlag)
void SetFormat(PLOT_FORMAT aFormat)
Base plotter engine class.
virtual void SetAuthor(const wxString &aAuthor)
virtual void SetTitle(const wxString &aTitle)
RENDER_SETTINGS * RenderSettings()
virtual void SetSubject(const wxString &aSubject)
A pure virtual class used to derive REPORTER objects from.
virtual REPORTER & ReportTail(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
Places the report at the end of the list, for objects that support report ordering.
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)=0
Report a string with a given severity.
const wxString & GetTitle() const
wxString ExpandTextVars(const wxString &aSource, const PROJECT *aProject, int aFlags)
wxString GetDefaultPlotExtension(PLOT_FORMAT aFormat)
Returns the default plot extension for a format.
Classes used to generate a Gerber job file in JSON.
static const std::string GerberJobFileExtension
PCB_LAYER_ID
A quick note on layer IDs:
const wxString GetGerberProtelExtension(int aLayer)
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=wxT("1"), const wxString &aPageNumber=wxEmptyString, const int aPageCount=1)
Open a new plotfile using the options (and especially the format) specified in the options and prepar...
void setupPlotterNewPDFPage(PLOTTER *aPlotter, BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aPageNumber, int aPageCount)
void PlotBoardLayers(BOARD *aBoard, PLOTTER *aPlotter, const LSEQ &aLayerSequence, 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.).
Plotting engines similar to ps (PostScript, Gerber, svg)