diff --git a/pcbnew/gen_drill_report_files.cpp b/pcbnew/gen_drill_report_files.cpp index c049b64752..1ac35d506a 100644 --- a/pcbnew/gen_drill_report_files.cpp +++ b/pcbnew/gen_drill_report_files.cpp @@ -39,7 +39,7 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w { unsigned ii; int x, y; - int plotX, plotY, TextWidth; + int plotX, plotY, TextWidth, LineWidth; int intervalle = 0, CharSize = 0; EDA_BaseStruct* PtStruct; int old_g_PlotOrient = g_PlotOrient; @@ -161,45 +161,26 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w } } - TextWidth = 50; // Set Drill Symbols width in 1/10000 mils - - if( IsPostScript( format ) ) + // Set Drill Symbols width in 1/10000 mils + LineWidth = 50 / scale_x; // real scale will be CharScale * scale_x + int tmpPlotLineWidth = g_PlotLine_Width; + // Plot board outlines and drill map + if ( format == PLOT_FORMAT_POST) { - sprintf( line, "%d setlinewidth\n", TextWidth ); - fputs( line, aFile ); + SetDefaultLineWidthPS( LineWidth ); + SetCurrentLineWidthPS( LineWidth ); + g_PlotLine_Width = LineWidth; // Default line width in FILAIRE mode, used to plot drill symbols } - Gen_Drill_PcbMap( aPcb, aFile, aHoleListBuffer, aToolListBuffer, format ); + /* Impression de la liste des symboles utilises */ CharSize = 800; /* text size in 1/10000 mils */ float CharScale = 1.0 / scale_x; /* real scale will be CharScale * scale_x, * because the global plot scale is scale_x */ - TextWidth = (int) (50 * CharScale); // Set text width + TextWidth = (int) ((CharSize * CharScale) / 10); // Set text width (thickness) intervalle = (int) (CharSize * CharScale) + TextWidth; - switch( format ) - { - case PLOT_FORMAT_HPGL: - { - /* generation des dim: commande SI x,y; x et y = dim en cm */ - char csize[256]; - sprintf( csize, "%2.3f", (float) CharSize * CharScale * 0.000254 ); - sprintf( line, "SI %s, %s;\n", csize, csize ); - break; - } - - case PLOT_FORMAT_POST: - /* Reglage de l'epaisseur de traits des textes */ - sprintf( line, "%d setlinewidth\n", TextWidth ); - break; - - default: - *line = 0; - break; - } - - fputs( line, aFile ); switch( format ) { @@ -208,44 +189,27 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w g_PlotOffset.x = 0; g_PlotOffset.y = 0; InitPlotParametresPS( g_PlotOffset, SheetPS, scale_x, scale_x ); + SetDefaultLineWidthPS( LineWidth ); + SetCurrentLineWidthPS( LineWidth ); break; case PLOT_FORMAT_HPGL: - InitPlotParametresHPGL( g_PlotOffset, scale_x, scale_x ); - break; - } - - /* Trace des informations */ - - /* Trace de "Infos" */ - plotX = marge + 1000; - plotY = CharSize + 1000; - x = plotX; y = plotY; - x = +g_PlotOffset.x + (int) (x * fTextScale); - y = g_PlotOffset.y - (int) (y * fTextScale); - - plotY += (int) ( intervalle * 1.2) + 200; - - switch( format ) { - case PLOT_FORMAT_HPGL: - sprintf( line, "PU %d, %d; LBInfos\03;\n", - x + (int) (intervalle * CharScale * fTextScale), - y - (int) (CharSize / 2 * CharScale * fTextScale) ); + InitPlotParametresHPGL( g_PlotOffset, scale_x, scale_x ); + /* generation des dim: commande SI x,y; x et y = dim en cm */ + char csize[256]; + sprintf( csize, "%2.3f", (float) CharSize * CharScale * 0.000254 ); + sprintf( line, "SI %s, %s;\n", csize, csize ); fputs( line, aFile ); break; - - case PLOT_FORMAT_POST: - wxString Text = wxT( "Infos" ); - PlotGraphicText( format, wxPoint(x,y), BLACK, - Text, - 0, wxSize((int)(CharSize * CharScale), (int)(CharSize * CharScale)), - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, - TextWidth ); - break; + } } + /* Trace des informations */ + plotX = marge + 1000; + plotY = CharSize + 1000; + for( ii = 0; ii < aToolListBuffer.size(); ii++ ) { int plot_diam; @@ -256,6 +220,9 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w x = plotX; y = plotY; x = -g_PlotOffset.x + (int) (x * fTextScale); y = g_PlotOffset.y - (int) (y * fTextScale); + sprintf( line, "%d setlinewidth\n", LineWidth ); + SetDefaultLineWidthPS( LineWidth ); + SetCurrentLineWidthPS( LineWidth ); PlotDrillSymbol( wxPoint( x, y ), plot_diam, ii, format ); intervalle = (int) (CharSize * CharScale) + TextWidth; @@ -265,7 +232,8 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w intervalle = plot_diam + 200 + TextWidth; int rayon = plot_diam / 2; - x = plotX + rayon + (int) (CharSize * CharScale); y = plotY; + x = plotX + rayon + (int) (CharSize * CharScale); + y = plotY; x = -g_PlotOffset.x + (int) (x * fTextScale); y = g_PlotOffset.y - (int) (y * fTextScale); @@ -341,6 +309,8 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w aToolListBuffer[ii].m_TotalCount, aToolListBuffer[ii].m_OvalCount ); msg += CONV_FROM_UTF8( line ); + SetDefaultLineWidthPS( TextWidth ); + SetCurrentLineWidthPS( TextWidth ); PlotGraphicText( format, wxPoint(x,y), BLACK, msg, 0, wxSize((int)(CharSize * CharScale), (int)(CharSize * CharScale)), @@ -352,6 +322,32 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w plotY += intervalle; } + /* Plot title "Info" */ + plotY += (int) ( intervalle * 0.2); // Add exta line separation + x = plotX; y = plotY; + x = +g_PlotOffset.x + (int) (x * fTextScale); + y = g_PlotOffset.y - (int) (y * fTextScale); + switch( format ) + { + case PLOT_FORMAT_HPGL: + sprintf( line, "PU %d, %d; LBInfo:\03;\n", + x + (int) (intervalle * CharScale * fTextScale), + y - (int) (CharSize / 2 * CharScale * fTextScale) ); + fputs( line, aFile ); + break; + + case PLOT_FORMAT_POST: + SetDefaultLineWidthPS( TextWidth ); + SetCurrentLineWidthPS( TextWidth ); + wxString Text = wxT( "Info:" ); + PlotGraphicText( format, wxPoint(x,y), BLACK, + Text, + 0, wxSize((int)(CharSize * CharScale), (int)(CharSize * CharScale)), + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, + TextWidth ); + break; + } + switch( format ) { case PLOT_FORMAT_HPGL: @@ -365,7 +361,9 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w SetLocaleTo_Default( ); // Revert to local notation for float numbers + // Retrieve setup values, changed for plotting drill map g_PlotOrient = old_g_PlotOrient; + g_PlotLine_Width = tmpPlotLineWidth; }