Allow plotting of multiple board layers per plot in Python.

Since the always plot the edge cuts layer  option was deprecate,
the ability to plot multiple board layers was exposed through the
PLOT_CONTROLLER object.

Added the interactive plot information which was overlooked during
version 7 development.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13841

(cherry picked from commit eb83f76bff)
This commit is contained in:
Wayne Stambaugh 2023-02-14 09:49:20 -05:00
parent f4b2b1b03f
commit 0f7fbc411a
2 changed files with 27 additions and 1 deletions

View File

@ -489,7 +489,22 @@ bool PLOT_CONTROLLER::PlotLayer()
// Fully delegated to the parent // Fully delegated to the parent
PlotOneBoardLayer( m_board, m_plotter, ToLAYER_ID( GetLayer() ), GetPlotOptions() ); PlotOneBoardLayer( m_board, m_plotter, ToLAYER_ID( GetLayer() ), GetPlotOptions() );
PlotInteractiveLayer( m_board, m_plotter );
return true;
}
bool PLOT_CONTROLLER::PlotLayers( const LSEQ& aLayerSequence )
{
LOCALE_IO toggle;
// No plot open, nothing to do...
if( !m_plotter )
return false;
// Fully delegated to the parent
PlotBoardLayers( m_board, m_plotter, aLayerSequence, GetPlotOptions() );
PlotInteractiveLayer( m_board, m_plotter );
return true; return true;
} }

View File

@ -3,7 +3,7 @@
* *
* Copyright (C) 2012 Lorenzo Marcantonio, <l.marcantonio@logossrl.com> * Copyright (C) 2012 Lorenzo Marcantonio, <l.marcantonio@logossrl.com>
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -88,6 +88,15 @@ public:
*/ */
bool PlotLayer(); bool PlotLayer();
/**
* Plot a sequence of board layer IDs in the given order.
*
* @param aLayerSequence is the sequence of layer IDs to plot.
*
* @return true if the layers plotted correctly othewise false.
*/
bool PlotLayers( const LSEQ& aLayerSequence );
/** /**
* @return the current plot full filename, set by OpenPlotfile * @return the current plot full filename, set by OpenPlotfile
*/ */
@ -111,6 +120,8 @@ public:
*/ */
bool GetColorMode(); bool GetColorMode();
PLOTTER* GetPlotter() { return m_plotter; }
private: private:
int m_plotLayer; int m_plotLayer;
PCB_PLOT_PARAMS m_plotOptions; PCB_PLOT_PARAMS m_plotOptions;