mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 02:03:12 +02:00
Add support for check zones before plot to plot jobsets
This commit is contained in:
parent
5b3d4fc91d
commit
4b70e20250
@ -49,7 +49,8 @@ JOB_EXPORT_PCB_PLOT::JOB_EXPORT_PCB_PLOT( PLOT_FORMAT aFormat, const std::string
|
|||||||
m_plotLayerSequence(),
|
m_plotLayerSequence(),
|
||||||
m_plotOnAllLayersSequence(),
|
m_plotOnAllLayersSequence(),
|
||||||
m_drillShapeOption( DRILL_MARKS::FULL_DRILL_SHAPE ),
|
m_drillShapeOption( DRILL_MARKS::FULL_DRILL_SHAPE ),
|
||||||
m_useDrillOrigin( false )
|
m_useDrillOrigin( false ),
|
||||||
|
m_checkZonesBeforePlot( false )
|
||||||
{
|
{
|
||||||
m_params.emplace_back( new JOB_PARAM_LSEQ( "layers",
|
m_params.emplace_back( new JOB_PARAM_LSEQ( "layers",
|
||||||
&m_plotLayerSequence, m_plotLayerSequence ) );
|
&m_plotLayerSequence, m_plotLayerSequence ) );
|
||||||
@ -101,4 +102,6 @@ JOB_EXPORT_PCB_PLOT::JOB_EXPORT_PCB_PLOT( PLOT_FORMAT aFormat, const std::string
|
|||||||
|
|
||||||
m_params.emplace_back( new JOB_PARAM<wxString>( "drawing_sheet",
|
m_params.emplace_back( new JOB_PARAM<wxString>( "drawing_sheet",
|
||||||
&m_drawingSheet, m_drawingSheet ) );
|
&m_drawingSheet, m_drawingSheet ) );
|
||||||
|
|
||||||
|
m_params.emplace_back( new JOB_PARAM<bool>( "check_zones", &m_checkZonesBeforePlot, m_checkZonesBeforePlot ) );
|
||||||
}
|
}
|
@ -79,4 +79,6 @@ public:
|
|||||||
|
|
||||||
///< Used by SVG/DXF/PDF/Gerbers
|
///< Used by SVG/DXF/PDF/Gerbers
|
||||||
bool m_useDrillOrigin;
|
bool m_useDrillOrigin;
|
||||||
|
|
||||||
|
bool m_checkZonesBeforePlot;
|
||||||
};
|
};
|
||||||
|
@ -71,6 +71,9 @@ namespace CLI
|
|||||||
#define ARG_BACKGROUND_COLOR "--bg-color"
|
#define ARG_BACKGROUND_COLOR "--bg-color"
|
||||||
#define ARG_BACKGROUND_COLOR_DESC "Background color, can be in hex #rrggbb, #rrggbbaa; or css rgb(r,g,b), rgba(r,g,b,a) format"
|
#define ARG_BACKGROUND_COLOR_DESC "Background color, can be in hex #rrggbb, #rrggbbaa; or css rgb(r,g,b), rgba(r,g,b,a) format"
|
||||||
|
|
||||||
|
#define ARG_CHECK_ZONES "--check-zones"
|
||||||
|
#define ARG_CHECK_ZONES_DESC "Check and refill zones if required"
|
||||||
|
|
||||||
struct PCB_EXPORT_BASE_COMMAND : public COMMAND
|
struct PCB_EXPORT_BASE_COMMAND : public COMMAND
|
||||||
{
|
{
|
||||||
PCB_EXPORT_BASE_COMMAND( const std::string& aName, bool aInputCanBeDir = false,
|
PCB_EXPORT_BASE_COMMAND( const std::string& aName, bool aInputCanBeDir = false,
|
||||||
|
@ -116,6 +116,10 @@ CLI::PCB_EXPORT_DXF_COMMAND::PCB_EXPORT_DXF_COMMAND() :
|
|||||||
.scan<'g', double>()
|
.scan<'g', double>()
|
||||||
.default_value( 1.0 )
|
.default_value( 1.0 )
|
||||||
.metavar( "SCALE" );
|
.metavar( "SCALE" );
|
||||||
|
|
||||||
|
m_argParser.add_argument( ARG_CHECK_ZONES )
|
||||||
|
.help( UTF8STDSTR( _( ARG_CHECK_ZONES_DESC ) ) )
|
||||||
|
.flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -146,6 +150,7 @@ int CLI::PCB_EXPORT_DXF_COMMAND::doPerform( KIWAY& aKiway )
|
|||||||
dxfJob->m_plotDrawingSheet = m_argParser.get<bool>( ARG_INCLUDE_BORDER_TITLE );
|
dxfJob->m_plotDrawingSheet = m_argParser.get<bool>( ARG_INCLUDE_BORDER_TITLE );
|
||||||
dxfJob->m_subtractSolderMaskFromSilk = m_argParser.get<bool>( ARG_SUBTRACT_SOLDERMASK );
|
dxfJob->m_subtractSolderMaskFromSilk = m_argParser.get<bool>( ARG_SUBTRACT_SOLDERMASK );
|
||||||
dxfJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
dxfJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
||||||
|
dxfJob->m_checkZonesBeforePlot = m_argParser.get<bool>( ARG_CHECK_ZONES );
|
||||||
|
|
||||||
if( m_argParser.get<bool>( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT ) )
|
if( m_argParser.get<bool>( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT ) )
|
||||||
wxFprintf( stdout, DEPRECATED_ARD_PLOT_INVISIBLE_TEXT_WARNING );
|
wxFprintf( stdout, DEPRECATED_ARD_PLOT_INVISIBLE_TEXT_WARNING );
|
||||||
|
@ -102,6 +102,10 @@ CLI::PCB_EXPORT_GERBER_COMMAND::PCB_EXPORT_GERBER_COMMAND( const std::string& aN
|
|||||||
m_argParser.add_argument( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT )
|
m_argParser.add_argument( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT )
|
||||||
.help( UTF8STDSTR( _( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT_DESC ) ) )
|
.help( UTF8STDSTR( _( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT_DESC ) ) )
|
||||||
.flag();
|
.flag();
|
||||||
|
|
||||||
|
m_argParser.add_argument( ARG_CHECK_ZONES )
|
||||||
|
.help( UTF8STDSTR( _( ARG_CHECK_ZONES_DESC ) ) )
|
||||||
|
.flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -132,6 +136,7 @@ int CLI::PCB_EXPORT_GERBER_COMMAND::populateJob( JOB_EXPORT_PCB_GERBER* aJob )
|
|||||||
aJob->m_useDrillOrigin = m_argParser.get<bool>( ARG_USE_DRILL_FILE_ORIGIN );
|
aJob->m_useDrillOrigin = m_argParser.get<bool>( ARG_USE_DRILL_FILE_ORIGIN );
|
||||||
aJob->m_useProtelFileExtension = !m_argParser.get<bool>( ARG_NO_PROTEL_EXTENSION );
|
aJob->m_useProtelFileExtension = !m_argParser.get<bool>( ARG_NO_PROTEL_EXTENSION );
|
||||||
aJob->m_precision = m_argParser.get<int>( ARG_PRECISION );
|
aJob->m_precision = m_argParser.get<int>( ARG_PRECISION );
|
||||||
|
aJob->m_checkZonesBeforePlot = m_argParser.get<bool>( ARG_CHECK_ZONES );
|
||||||
|
|
||||||
aJob->m_argLayers = From_UTF8( m_argParser.get<std::string>( ARG_LAYERS ).c_str() );
|
aJob->m_argLayers = From_UTF8( m_argParser.get<std::string>( ARG_LAYERS ).c_str() );
|
||||||
aJob->m_argCommonLayers = From_UTF8( m_argParser.get<std::string>( ARG_COMMON_LAYERS ).c_str() );
|
aJob->m_argCommonLayers = From_UTF8( m_argParser.get<std::string>( ARG_COMMON_LAYERS ).c_str() );
|
||||||
|
@ -124,6 +124,10 @@ CLI::PCB_EXPORT_PDF_COMMAND::PCB_EXPORT_PDF_COMMAND() :
|
|||||||
.default_value( std::string() )
|
.default_value( std::string() )
|
||||||
.help( UTF8STDSTR( _( ARG_BACKGROUND_COLOR_DESC ) ) )
|
.help( UTF8STDSTR( _( ARG_BACKGROUND_COLOR_DESC ) ) )
|
||||||
.metavar( "COLOR" );
|
.metavar( "COLOR" );
|
||||||
|
|
||||||
|
m_argParser.add_argument( ARG_CHECK_ZONES )
|
||||||
|
.help( UTF8STDSTR( _( ARG_CHECK_ZONES_DESC ) ) )
|
||||||
|
.flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -156,6 +160,7 @@ int CLI::PCB_EXPORT_PDF_COMMAND::doPerform( KIWAY& aKiway )
|
|||||||
pdfJob->m_colorTheme = From_UTF8( m_argParser.get<std::string>( ARG_THEME ).c_str() );
|
pdfJob->m_colorTheme = From_UTF8( m_argParser.get<std::string>( ARG_THEME ).c_str() );
|
||||||
pdfJob->m_negative = m_argParser.get<bool>( ARG_NEGATIVE );
|
pdfJob->m_negative = m_argParser.get<bool>( ARG_NEGATIVE );
|
||||||
pdfJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
pdfJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
||||||
|
pdfJob->m_checkZonesBeforePlot = m_argParser.get<bool>( ARG_CHECK_ZONES );
|
||||||
|
|
||||||
pdfJob->m_sketchPadsOnFabLayers = m_argParser.get<bool>( ARG_SKETCH_PADS_ON_FAB_LAYERS );
|
pdfJob->m_sketchPadsOnFabLayers = m_argParser.get<bool>( ARG_SKETCH_PADS_ON_FAB_LAYERS );
|
||||||
pdfJob->m_hideDNPFPsOnFabLayers = m_argParser.get<bool>( ARG_HIDE_DNP_FPS_ON_FAB_LAYERS );
|
pdfJob->m_hideDNPFPsOnFabLayers = m_argParser.get<bool>( ARG_HIDE_DNP_FPS_ON_FAB_LAYERS );
|
||||||
|
@ -140,6 +140,10 @@ CLI::PCB_EXPORT_PS_COMMAND::PCB_EXPORT_PS_COMMAND() :
|
|||||||
.scan<'g', double>()
|
.scan<'g', double>()
|
||||||
.default_value( 1.0 )
|
.default_value( 1.0 )
|
||||||
.metavar( "SCALE" );
|
.metavar( "SCALE" );
|
||||||
|
|
||||||
|
m_argParser.add_argument( ARG_CHECK_ZONES )
|
||||||
|
.help( UTF8STDSTR( _( ARG_CHECK_ZONES_DESC ) ) )
|
||||||
|
.flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -168,6 +172,7 @@ int CLI::PCB_EXPORT_PS_COMMAND::doPerform( KIWAY& aKiway )
|
|||||||
psJob->m_colorTheme = From_UTF8( m_argParser.get<std::string>( ARG_THEME ).c_str() );
|
psJob->m_colorTheme = From_UTF8( m_argParser.get<std::string>( ARG_THEME ).c_str() );
|
||||||
psJob->m_negative = m_argParser.get<bool>( ARG_NEGATIVE );
|
psJob->m_negative = m_argParser.get<bool>( ARG_NEGATIVE );
|
||||||
psJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
psJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
||||||
|
psJob->m_checkZonesBeforePlot = m_argParser.get<bool>( ARG_CHECK_ZONES );
|
||||||
|
|
||||||
psJob->m_sketchPadsOnFabLayers = m_argParser.get<bool>( ARG_SKETCH_PADS_ON_FAB_LAYERS );
|
psJob->m_sketchPadsOnFabLayers = m_argParser.get<bool>( ARG_SKETCH_PADS_ON_FAB_LAYERS );
|
||||||
psJob->m_hideDNPFPsOnFabLayers = m_argParser.get<bool>( ARG_HIDE_DNP_FPS_ON_FAB_LAYERS );
|
psJob->m_hideDNPFPsOnFabLayers = m_argParser.get<bool>( ARG_HIDE_DNP_FPS_ON_FAB_LAYERS );
|
||||||
|
@ -125,6 +125,10 @@ CLI::PCB_EXPORT_SVG_COMMAND::PCB_EXPORT_SVG_COMMAND() :
|
|||||||
.scan<'g', double>()
|
.scan<'g', double>()
|
||||||
.default_value( 1.0 )
|
.default_value( 1.0 )
|
||||||
.metavar( "SCALE" );
|
.metavar( "SCALE" );
|
||||||
|
|
||||||
|
m_argParser.add_argument( ARG_CHECK_ZONES )
|
||||||
|
.help( UTF8STDSTR( _( ARG_CHECK_ZONES_DESC ) ) )
|
||||||
|
.flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -144,6 +148,7 @@ int CLI::PCB_EXPORT_SVG_COMMAND::doPerform( KIWAY& aKiway )
|
|||||||
svgJob->m_drawingSheet = m_argDrawingSheet;
|
svgJob->m_drawingSheet = m_argDrawingSheet;
|
||||||
svgJob->m_subtractSolderMaskFromSilk = m_argParser.get<bool>( ARG_SUBTRACT_SOLDERMASK );
|
svgJob->m_subtractSolderMaskFromSilk = m_argParser.get<bool>( ARG_SUBTRACT_SOLDERMASK );
|
||||||
svgJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
svgJob->m_scale = m_argParser.get<double>( ARG_SCALE );
|
||||||
|
svgJob->m_checkZonesBeforePlot = m_argParser.get<bool>( ARG_CHECK_ZONES );
|
||||||
|
|
||||||
if( m_argParser.get<bool>( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT ) )
|
if( m_argParser.get<bool>( DEPRECATED_ARG_PLOT_INVISIBLE_TEXT ) )
|
||||||
wxFprintf( stdout, DEPRECATED_ARD_PLOT_INVISIBLE_TEXT_WARNING );
|
wxFprintf( stdout, DEPRECATED_ARD_PLOT_INVISIBLE_TEXT_WARNING );
|
||||||
|
@ -306,7 +306,14 @@ void DIALOG_PLOT::init_Dialog()
|
|||||||
m_PSWidthAdjust = KiROUND( cfg->m_Plot.ps_fine_width_adjust * pcbIUScale.IU_PER_MM );
|
m_PSWidthAdjust = KiROUND( cfg->m_Plot.ps_fine_width_adjust * pcbIUScale.IU_PER_MM );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_zoneFillCheck->SetValue( cfg->m_Plot.check_zones_before_plotting );
|
if( m_job )
|
||||||
|
{
|
||||||
|
m_zoneFillCheck->SetValue( m_job->m_checkZonesBeforePlot );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_zoneFillCheck->SetValue( cfg->m_Plot.check_zones_before_plotting );
|
||||||
|
}
|
||||||
|
|
||||||
m_browseButton->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) );
|
m_browseButton->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) );
|
||||||
m_openDirButton->SetBitmap( KiBitmapBundle( BITMAPS::small_new_window ) );
|
m_openDirButton->SetBitmap( KiBitmapBundle( BITMAPS::small_new_window ) );
|
||||||
@ -547,6 +554,9 @@ void DIALOG_PLOT::transferPlotParamsToJob()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_job->SetConfiguredOutputPath( m_plotOpts.GetOutputDirectory() );
|
m_job->SetConfiguredOutputPath( m_plotOpts.GetOutputDirectory() );
|
||||||
|
|
||||||
|
// this exists outside plot opts because its usually globally saved
|
||||||
|
m_job->m_checkZonesBeforePlot = m_zoneFillCheck->GetValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +109,8 @@
|
|||||||
|
|
||||||
PCBNEW_JOBS_HANDLER::PCBNEW_JOBS_HANDLER( KIWAY* aKiway ) :
|
PCBNEW_JOBS_HANDLER::PCBNEW_JOBS_HANDLER( KIWAY* aKiway ) :
|
||||||
JOB_DISPATCHER( aKiway ),
|
JOB_DISPATCHER( aKiway ),
|
||||||
m_cliBoard( nullptr )
|
m_cliBoard( nullptr ),
|
||||||
|
m_toolManager( nullptr )
|
||||||
{
|
{
|
||||||
Register( "3d", std::bind( &PCBNEW_JOBS_HANDLER::JobExportStep, this, std::placeholders::_1 ),
|
Register( "3d", std::bind( &PCBNEW_JOBS_HANDLER::JobExportStep, this, std::placeholders::_1 ),
|
||||||
[aKiway]( JOB* job, wxWindow* aParent ) -> bool
|
[aKiway]( JOB* job, wxWindow* aParent ) -> bool
|
||||||
@ -333,6 +334,37 @@ PCBNEW_JOBS_HANDLER::PCBNEW_JOBS_HANDLER( KIWAY* aKiway ) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PCBNEW_JOBS_HANDLER::~PCBNEW_JOBS_HANDLER()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TOOL_MANAGER* PCBNEW_JOBS_HANDLER::getToolManager( BOARD* aBrd )
|
||||||
|
{
|
||||||
|
TOOL_MANAGER* toolManager = nullptr;
|
||||||
|
if( Pgm().IsGUI() )
|
||||||
|
{
|
||||||
|
// we assume the PCB we are working on here is the one in the frame
|
||||||
|
// so use the frame's tool manager
|
||||||
|
PCB_EDIT_FRAME* editFrame = (PCB_EDIT_FRAME*) m_kiway->Player( FRAME_PCB_EDITOR, false );
|
||||||
|
if( editFrame )
|
||||||
|
toolManager = editFrame->GetToolManager();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( m_toolManager == nullptr )
|
||||||
|
{
|
||||||
|
m_toolManager = std::make_unique<TOOL_MANAGER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
toolManager = m_toolManager.get();
|
||||||
|
|
||||||
|
toolManager->SetEnvironment( aBrd, nullptr, nullptr, Kiface().KifaceSettings(), nullptr );
|
||||||
|
}
|
||||||
|
return toolManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BOARD* PCBNEW_JOBS_HANDLER::getBoard( const wxString& aPath )
|
BOARD* PCBNEW_JOBS_HANDLER::getBoard( const wxString& aPath )
|
||||||
{
|
{
|
||||||
BOARD* brd = nullptr;
|
BOARD* brd = nullptr;
|
||||||
@ -826,7 +858,8 @@ int PCBNEW_JOBS_HANDLER::JobExportSvg( JOB* aJob )
|
|||||||
if( aSvgJob == nullptr )
|
if( aSvgJob == nullptr )
|
||||||
return CLI::EXIT_CODES::ERR_UNKNOWN;
|
return CLI::EXIT_CODES::ERR_UNKNOWN;
|
||||||
|
|
||||||
BOARD* brd = getBoard( aSvgJob->m_filename );
|
BOARD* brd = getBoard( aSvgJob->m_filename );
|
||||||
|
TOOL_MANAGER* toolManager = getToolManager( brd );
|
||||||
|
|
||||||
if( !brd )
|
if( !brd )
|
||||||
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
||||||
@ -857,6 +890,14 @@ int PCBNEW_JOBS_HANDLER::JobExportSvg( JOB* aJob )
|
|||||||
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
||||||
brd->SynchronizeProperties();
|
brd->SynchronizeProperties();
|
||||||
|
|
||||||
|
if( aSvgJob->m_checkZonesBeforePlot )
|
||||||
|
{
|
||||||
|
if( !toolManager->FindTool( ZONE_FILLER_TOOL_NAME ) )
|
||||||
|
toolManager->RegisterTool( new ZONE_FILLER_TOOL );
|
||||||
|
|
||||||
|
toolManager->GetTool<ZONE_FILLER_TOOL>()->CheckAllZones( nullptr );
|
||||||
|
}
|
||||||
|
|
||||||
if( aSvgJob->m_argLayers )
|
if( aSvgJob->m_argLayers )
|
||||||
aSvgJob->m_plotLayerSequence = convertLayerArg( aSvgJob->m_argLayers.value(), brd );
|
aSvgJob->m_plotLayerSequence = convertLayerArg( aSvgJob->m_argLayers.value(), brd );
|
||||||
|
|
||||||
@ -913,11 +954,21 @@ int PCBNEW_JOBS_HANDLER::JobExportDxf( JOB* aJob )
|
|||||||
if( !brd )
|
if( !brd )
|
||||||
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
||||||
|
|
||||||
|
TOOL_MANAGER* toolManager = getToolManager( brd );
|
||||||
|
|
||||||
aJob->SetTitleBlock( brd->GetTitleBlock() );
|
aJob->SetTitleBlock( brd->GetTitleBlock() );
|
||||||
loadOverrideDrawingSheet( brd, aDxfJob->m_drawingSheet );
|
loadOverrideDrawingSheet( brd, aDxfJob->m_drawingSheet );
|
||||||
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
||||||
brd->SynchronizeProperties();
|
brd->SynchronizeProperties();
|
||||||
|
|
||||||
|
if( aDxfJob->m_checkZonesBeforePlot )
|
||||||
|
{
|
||||||
|
if( !toolManager->FindTool( ZONE_FILLER_TOOL_NAME ) )
|
||||||
|
toolManager->RegisterTool( new ZONE_FILLER_TOOL );
|
||||||
|
|
||||||
|
toolManager->GetTool<ZONE_FILLER_TOOL>()->CheckAllZones( nullptr );
|
||||||
|
}
|
||||||
|
|
||||||
if( aDxfJob->m_argLayers )
|
if( aDxfJob->m_argLayers )
|
||||||
aDxfJob->m_plotLayerSequence = convertLayerArg( aDxfJob->m_argLayers.value(), brd );
|
aDxfJob->m_plotLayerSequence = convertLayerArg( aDxfJob->m_argLayers.value(), brd );
|
||||||
|
|
||||||
@ -995,11 +1046,21 @@ int PCBNEW_JOBS_HANDLER::JobExportPdf( JOB* aJob )
|
|||||||
if( !brd )
|
if( !brd )
|
||||||
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
||||||
|
|
||||||
|
TOOL_MANAGER* toolManager = getToolManager( brd );
|
||||||
|
|
||||||
pdfJob->SetTitleBlock( brd->GetTitleBlock() );
|
pdfJob->SetTitleBlock( brd->GetTitleBlock() );
|
||||||
loadOverrideDrawingSheet( brd, pdfJob->m_drawingSheet );
|
loadOverrideDrawingSheet( brd, pdfJob->m_drawingSheet );
|
||||||
brd->GetProject()->ApplyTextVars( pdfJob->GetVarOverrides() );
|
brd->GetProject()->ApplyTextVars( pdfJob->GetVarOverrides() );
|
||||||
brd->SynchronizeProperties();
|
brd->SynchronizeProperties();
|
||||||
|
|
||||||
|
if( pdfJob->m_checkZonesBeforePlot )
|
||||||
|
{
|
||||||
|
if( !toolManager->FindTool( ZONE_FILLER_TOOL_NAME ) )
|
||||||
|
toolManager->RegisterTool( new ZONE_FILLER_TOOL );
|
||||||
|
|
||||||
|
toolManager->GetTool<ZONE_FILLER_TOOL>()->CheckAllZones( nullptr );
|
||||||
|
}
|
||||||
|
|
||||||
if( pdfJob->m_argLayers )
|
if( pdfJob->m_argLayers )
|
||||||
pdfJob->m_plotLayerSequence = convertLayerArg( pdfJob->m_argLayers.value(), brd );
|
pdfJob->m_plotLayerSequence = convertLayerArg( pdfJob->m_argLayers.value(), brd );
|
||||||
|
|
||||||
@ -1083,6 +1144,8 @@ int PCBNEW_JOBS_HANDLER::JobExportPs( JOB* aJob )
|
|||||||
if( !brd )
|
if( !brd )
|
||||||
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
||||||
|
|
||||||
|
TOOL_MANAGER* toolManager = getToolManager( brd );
|
||||||
|
|
||||||
psJob->SetTitleBlock( brd->GetTitleBlock() );
|
psJob->SetTitleBlock( brd->GetTitleBlock() );
|
||||||
loadOverrideDrawingSheet( brd, psJob->m_drawingSheet );
|
loadOverrideDrawingSheet( brd, psJob->m_drawingSheet );
|
||||||
brd->GetProject()->ApplyTextVars( psJob->GetVarOverrides() );
|
brd->GetProject()->ApplyTextVars( psJob->GetVarOverrides() );
|
||||||
@ -1168,6 +1231,8 @@ int PCBNEW_JOBS_HANDLER::JobExportGerbers( JOB* aJob )
|
|||||||
if( !brd )
|
if( !brd )
|
||||||
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
||||||
|
|
||||||
|
TOOL_MANAGER* toolManager = getToolManager( brd );
|
||||||
|
|
||||||
wxString outPath = aGerberJob->GetFullOutputPath( brd->GetProject() );
|
wxString outPath = aGerberJob->GetFullOutputPath( brd->GetProject() );
|
||||||
|
|
||||||
if( !PATHS::EnsurePathExists( outPath, false ) )
|
if( !PATHS::EnsurePathExists( outPath, false ) )
|
||||||
@ -1181,6 +1246,14 @@ int PCBNEW_JOBS_HANDLER::JobExportGerbers( JOB* aJob )
|
|||||||
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
||||||
brd->SynchronizeProperties();
|
brd->SynchronizeProperties();
|
||||||
|
|
||||||
|
if( aGerberJob->m_checkZonesBeforePlot )
|
||||||
|
{
|
||||||
|
if( !toolManager->FindTool( ZONE_FILLER_TOOL_NAME ) )
|
||||||
|
toolManager->RegisterTool( new ZONE_FILLER_TOOL );
|
||||||
|
|
||||||
|
toolManager->GetTool<ZONE_FILLER_TOOL>()->CheckAllZones( nullptr );
|
||||||
|
}
|
||||||
|
|
||||||
bool hasLayerListSpecified = false; // will be true if the user layer list is not empty
|
bool hasLayerListSpecified = false; // will be true if the user layer list is not empty
|
||||||
|
|
||||||
if( aGerberJob->m_argLayers )
|
if( aGerberJob->m_argLayers )
|
||||||
@ -1388,10 +1461,20 @@ int PCBNEW_JOBS_HANDLER::JobExportGerber( JOB* aJob )
|
|||||||
if( !brd )
|
if( !brd )
|
||||||
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
return CLI::EXIT_CODES::ERR_INVALID_INPUT_FILE;
|
||||||
|
|
||||||
|
TOOL_MANAGER* toolManager = getToolManager( brd );
|
||||||
|
|
||||||
aJob->SetTitleBlock( brd->GetTitleBlock() );
|
aJob->SetTitleBlock( brd->GetTitleBlock() );
|
||||||
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
brd->GetProject()->ApplyTextVars( aJob->GetVarOverrides() );
|
||||||
brd->SynchronizeProperties();
|
brd->SynchronizeProperties();
|
||||||
|
|
||||||
|
if( aGerberJob->m_checkZonesBeforePlot )
|
||||||
|
{
|
||||||
|
if( !toolManager->FindTool( ZONE_FILLER_TOOL_NAME ) )
|
||||||
|
toolManager->RegisterTool( new ZONE_FILLER_TOOL );
|
||||||
|
|
||||||
|
toolManager->GetTool<ZONE_FILLER_TOOL>()->CheckAllZones( nullptr );
|
||||||
|
}
|
||||||
|
|
||||||
if( aGerberJob->m_argLayers )
|
if( aGerberJob->m_argLayers )
|
||||||
aGerberJob->m_plotLayerSequence = convertLayerArg( aGerberJob->m_argLayers.value(), brd );
|
aGerberJob->m_plotLayerSequence = convertLayerArg( aGerberJob->m_argLayers.value(), brd );
|
||||||
|
|
||||||
@ -2064,8 +2147,7 @@ int PCBNEW_JOBS_HANDLER::JobExportDrc( JOB* aJob )
|
|||||||
drcEngine->SetDrawingSheet( getDrawingSheetProxyView( brd ) );
|
drcEngine->SetDrawingSheet( getDrawingSheetProxyView( brd ) );
|
||||||
|
|
||||||
// BOARD_COMMIT uses TOOL_MANAGER to grab the board internally so we must give it one
|
// BOARD_COMMIT uses TOOL_MANAGER to grab the board internally so we must give it one
|
||||||
TOOL_MANAGER* toolManager = new TOOL_MANAGER;
|
TOOL_MANAGER* toolManager = getToolManager( brd );
|
||||||
toolManager->SetEnvironment( brd, nullptr, nullptr, Kiface().KifaceSettings(), nullptr );
|
|
||||||
|
|
||||||
BOARD_COMMIT commit( toolManager );
|
BOARD_COMMIT commit( toolManager );
|
||||||
bool checkParity = drcJob->m_parity;
|
bool checkParity = drcJob->m_parity;
|
||||||
@ -2137,10 +2219,10 @@ int PCBNEW_JOBS_HANDLER::JobExportDrc( JOB* aJob )
|
|||||||
|
|
||||||
if( drcJob->m_refillZones )
|
if( drcJob->m_refillZones )
|
||||||
{
|
{
|
||||||
toolManager->RegisterTool( new ZONE_FILLER_TOOL );
|
if( !toolManager->FindTool( ZONE_FILLER_TOOL_NAME ) )
|
||||||
ZONE_FILLER_TOOL* zoneFiller = toolManager->GetTool<ZONE_FILLER_TOOL>();
|
toolManager->RegisterTool( new ZONE_FILLER_TOOL );
|
||||||
|
|
||||||
zoneFiller->FillAllZones( nullptr, m_progressReporter, true );
|
toolManager->GetTool<ZONE_FILLER_TOOL>()->FillAllZones( nullptr, m_progressReporter, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
drcEngine->SetProgressReporter( m_progressReporter );
|
drcEngine->SetProgressReporter( m_progressReporter );
|
||||||
|
@ -31,11 +31,14 @@ class FOOTPRINT;
|
|||||||
class JOB_EXPORT_PCB_GERBER;
|
class JOB_EXPORT_PCB_GERBER;
|
||||||
class JOB_EXPORT_PCB_GERBERS;
|
class JOB_EXPORT_PCB_GERBERS;
|
||||||
class JOB_FP_EXPORT_SVG;
|
class JOB_FP_EXPORT_SVG;
|
||||||
|
class TOOL_MANAGER;
|
||||||
|
|
||||||
class PCBNEW_JOBS_HANDLER : public JOB_DISPATCHER
|
class PCBNEW_JOBS_HANDLER : public JOB_DISPATCHER
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PCBNEW_JOBS_HANDLER( KIWAY* aKiway );
|
PCBNEW_JOBS_HANDLER( KIWAY* aKiway );
|
||||||
|
virtual ~PCBNEW_JOBS_HANDLER();
|
||||||
|
|
||||||
int JobExportStep( JOB* aJob );
|
int JobExportStep( JOB* aJob );
|
||||||
int JobExportRender( JOB* aJob );
|
int JobExportRender( JOB* aJob );
|
||||||
int JobExportSvg( JOB* aJob );
|
int JobExportSvg( JOB* aJob );
|
||||||
@ -67,7 +70,10 @@ private:
|
|||||||
|
|
||||||
DS_PROXY_VIEW_ITEM* getDrawingSheetProxyView( BOARD* aBrd );
|
DS_PROXY_VIEW_ITEM* getDrawingSheetProxyView( BOARD* aBrd );
|
||||||
|
|
||||||
|
TOOL_MANAGER* getToolManager( BOARD* aBrd );
|
||||||
|
|
||||||
BOARD* m_cliBoard;
|
BOARD* m_cliBoard;
|
||||||
|
std::unique_ptr<TOOL_MANAGER> m_toolManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#include <core/profile.h>
|
#include <core/profile.h>
|
||||||
|
|
||||||
ZONE_FILLER_TOOL::ZONE_FILLER_TOOL() :
|
ZONE_FILLER_TOOL::ZONE_FILLER_TOOL() :
|
||||||
PCB_TOOL_BASE( "pcbnew.ZoneFiller" ),
|
PCB_TOOL_BASE( ZONE_FILLER_TOOL_NAME ),
|
||||||
m_fillInProgress( false )
|
m_fillInProgress( false )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ class PROGRESS_REPORTER;
|
|||||||
class WX_PROGRESS_REPORTER;
|
class WX_PROGRESS_REPORTER;
|
||||||
class ZONE_FILLER;
|
class ZONE_FILLER;
|
||||||
|
|
||||||
|
#define ZONE_FILLER_TOOL_NAME "pcbnew.ZoneFiller"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle actions specific to filling copper zones.
|
* Handle actions specific to filling copper zones.
|
||||||
|
@ -462,7 +462,7 @@ ZONE_FILLER::~ZONE_FILLER()
|
|||||||
|
|
||||||
|
|
||||||
ZONE_FILLER_TOOL::ZONE_FILLER_TOOL() :
|
ZONE_FILLER_TOOL::ZONE_FILLER_TOOL() :
|
||||||
PCB_TOOL_BASE( "pcbnew.ZoneFiller" ),
|
PCB_TOOL_BASE( ZONE_FILLER_TOOL_NAME ),
|
||||||
m_fillInProgress( false )
|
m_fillInProgress( false )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user