Implement min pen width for SCH plotting jobs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19398
This commit is contained in:
Jeff Young 2025-02-11 17:05:22 +00:00
parent dc4708cdb7
commit e741d46770
4 changed files with 11 additions and 3 deletions

View File

@ -72,6 +72,7 @@ JOB_EXPORT_SCH_PLOT::JOB_EXPORT_SCH_PLOT( bool aOutputIsDirectory ) :
m_blackAndWhite( false ),
m_pageSizeSelect( JOB_PAGE_SIZE::PAGE_SIZE_AUTO ),
m_useBackgroundColor( true ),
m_minPenWidth( 847 /* hairline @ 300dpi */ ),
m_HPGLPenSize( 1.0 ),
m_HPGLPaperSizeSelect( JOB_HPGL_PAGE_SIZE::DEFAULT ),
m_PDFPropertyPopups( true ),
@ -101,6 +102,9 @@ JOB_EXPORT_SCH_PLOT::JOB_EXPORT_SCH_PLOT( bool aOutputIsDirectory ) :
m_params.emplace_back( new JOB_PARAM<bool>( "use_background_color",
&m_useBackgroundColor, m_useBackgroundColor ) );
m_params.emplace_back( new JOB_PARAM<int>( "min_pen_width",
&m_minPenWidth, m_minPenWidth ) );
m_params.emplace_back( new JOB_PARAM<double>( "hpgl_pen_size",
&m_HPGLPenSize, m_HPGLPenSize ) );

View File

@ -88,6 +88,7 @@ public:
bool m_blackAndWhite;
JOB_PAGE_SIZE m_pageSizeSelect;
bool m_useBackgroundColor;
int m_minPenWidth;
double m_HPGLPenSize; // for HPGL format only: pen size
JOB_HPGL_PAGE_SIZE m_HPGLPaperSizeSelect;
bool m_PDFPropertyPopups;

View File

@ -198,6 +198,7 @@ void DIALOG_PLOT_SCHEMATIC::initDlg()
m_colorTheme->SetSelection( 0 );
m_plotBackgroundColor->SetValue( m_job->m_useBackgroundColor );
m_defaultLineWidth.SetValue( m_job->m_minPenWidth );
m_penWidth.SetDoubleValue( m_job->m_HPGLPenSize );
m_HPGLPaperSizeSelect = static_cast<HPGL_PAGE_SIZE>( m_job->m_HPGLPaperSizeSelect );
m_plotPDFPropertyPopups->SetValue( m_job->m_PDFPropertyPopups );
@ -215,9 +216,9 @@ void DIALOG_PLOT_SCHEMATIC::initDlg()
{
default:
case SCH_PLOT_FORMAT::POST: m_plotFormatOpt->SetSelection( 0 ); break;
case SCH_PLOT_FORMAT::PDF: m_plotFormatOpt->SetSelection( 1 ); break;
case SCH_PLOT_FORMAT::SVG: m_plotFormatOpt->SetSelection( 2 ); break;
case SCH_PLOT_FORMAT::DXF: m_plotFormatOpt->SetSelection( 3 ); break;
case SCH_PLOT_FORMAT::PDF: m_plotFormatOpt->SetSelection( 1 ); break;
case SCH_PLOT_FORMAT::SVG: m_plotFormatOpt->SetSelection( 2 ); break;
case SCH_PLOT_FORMAT::DXF: m_plotFormatOpt->SetSelection( 3 ); break;
case SCH_PLOT_FORMAT::HPGL: m_plotFormatOpt->SetSelection( 4 ); break;
}
@ -445,6 +446,7 @@ void DIALOG_PLOT_SCHEMATIC::OnPlotAll( wxCommandEvent& event )
{
m_job->m_blackAndWhite = !getModeColor();
m_job->m_useBackgroundColor = m_plotBackgroundColor->GetValue();
m_job->m_minPenWidth = m_defaultLineWidth.GetIntValue();
m_job->m_HPGLPenSize = m_penWidth.GetDoubleValue();
// m_job->m_HPGLPaperSizeSelect = m_HPGLPaperSizeSelect;

View File

@ -264,6 +264,7 @@ int EESCHEMA_JOBS_HANDLER::JobExportPlot( JOB* aJob )
std::unique_ptr<SCH_RENDER_SETTINGS> renderSettings = std::make_unique<SCH_RENDER_SETTINGS>();
InitRenderSettings( renderSettings.get(), aPlotJob->m_theme, sch, aPlotJob->m_drawingSheet );
renderSettings->SetDefaultFont( aPlotJob->m_defaultFont );
renderSettings->SetMinPenWidth( aPlotJob->m_minPenWidth );
std::unique_ptr<SCH_PLOTTER> schPlotter = std::make_unique<SCH_PLOTTER>( sch );