diff --git a/change_log.txt b/change_log.txt index fb396ecdfc..d73d4ecc29 100644 --- a/change_log.txt +++ b/change_log.txt @@ -5,6 +5,14 @@ Please add newer entries at the top, list the date and your name with email address. +2007-Aug-24 UPDATE Geoff Harland +================================================================================ ++ pcbnew + A new option has now been provided which permits Gerber files to be generated + in which the contents of the Edges Pcb layer are not also included with the + contents of each other layer. + + 2007-Aug-23 UPDATE Dick Hollenbeck ================================================================================ + eeschema & pcbnew diff --git a/pcbnew/pcbplot.cpp b/pcbnew/pcbplot.cpp index d979124e19..9a0425f07e 100644 --- a/pcbnew/pcbplot.cpp +++ b/pcbnew/pcbplot.cpp @@ -16,12 +16,12 @@ #define PLOT_DEFAULT_MARGE 300 // mils -/* variables locale : */ +// variables locale : static long s_SelectedLayers = CUIVRE_LAYER | CMP_LAYER | SILKSCREEN_LAYER_CMP | SILKSCREEN_LAYER_CU; static bool s_PlotOriginIsAuxAxis = FALSE; -/* Routines Locales */ +// Routines Locales enum id_plotps { @@ -37,6 +37,7 @@ enum id_plotps ID_SEL_PLOT_FORMAT, ID_SEL_GERBER_FORMAT, ID_SAVE_OPT_PLOT, + ID_EXCLUDE_EDGES_PCB, ID_PRINT_REF, ID_PRINT_VALUE, ID_PRINT_MODULE_TEXTS, @@ -66,6 +67,7 @@ public: wxCheckBox * m_PlotMirorOpt; wxCheckBox * m_PlotNoViaOnMaskOpt; wxCheckBox * m_HPGL_PlotCenter_Opt; + wxCheckBox * m_Exclude_Edges_Pcb; wxCheckBox * m_Plot_Sheet_Ref; wxCheckBox * m_Plot_Invisible_Text; wxCheckBox * m_Plot_Text_Value; @@ -105,10 +107,11 @@ BEGIN_EVENT_TABLE(WinEDA_PlotFrame, wxDialog) END_EVENT_TABLE() +const int UNITS_MILS = 1000; +const int H_SIZE = 640; +const int V_SIZE = 430; + -#define UNITS_MILS 1000 -#define H_SIZE 640 -#define V_SIZE 430 /********************************************************************/ WinEDA_PlotFrame::WinEDA_PlotFrame(WinEDA_BasePcbFrame * parent): wxDialog(parent, -1, _("Plot"), @@ -146,35 +149,35 @@ wxString fmtmsg[4] = { wxT("HPGL"), wxT("Gerber"), wxT("Postscript"), wxT("Posts MidRightBoxSizer->Add(m_PlotFormatOpt, 0, wxGROW|wxALL, 5); switch ( m_PlotFormat ) { - case PLOT_FORMAT_HPGL: - m_PlotFormatOpt->SetSelection(0); - break; + case PLOT_FORMAT_HPGL: + m_PlotFormatOpt->SetSelection(0); + break; - case PLOT_FORMAT_GERBER: - m_PlotFormatOpt->SetSelection(1); - break; + case PLOT_FORMAT_GERBER: + m_PlotFormatOpt->SetSelection(1); + break; - default: // ( PLOT_FORMAT_POST or PLOT_FORMAT_POST_A4 ) - // As m_PlotFormat is never set to a value of PLOT_FORMAT_POST_A4, - // use the value of g_ForcePlotPS_On_A4 to determine whether the - // "Postscript" or "Postscipt A4" radiobutton had been selected - // previously (and thus which button should be reselected now). - if ( g_ForcePlotPS_On_A4 ) - m_PlotFormatOpt->SetSelection(3); - else - m_PlotFormatOpt->SetSelection(2); - break; + default: // ( PLOT_FORMAT_POST or PLOT_FORMAT_POST_A4 ) + // As m_PlotFormat is never set to a value of PLOT_FORMAT_POST_A4, + // use the value of g_ForcePlotPS_On_A4 to determine whether the + // "Postscript" or "Postscipt A4" radiobutton had been selected + // previously (and thus which button should be reselected now). + if( g_ForcePlotPS_On_A4 ) + m_PlotFormatOpt->SetSelection(3); + else + m_PlotFormatOpt->SetSelection(2); + break; } - /* Creation des menus d'option du format GERBER */ + // Creation des menus d'option du format GERBER m_GerbSpotSizeMinOpt = new WinEDA_ValueCtrl(this, _("Spot min"), spot_mini, g_UnitMetric, MidRightBoxSizer, UNITS_MILS); - /* Creation des menus d'option du format HPGL */ + // Creation des menus d'option du format HPGL m_HPGLPenSizeOpt = new WinEDA_ValueCtrl(this, _("Pen Size"), g_HPGL_Pen_Diam, g_UnitMetric, MidRightBoxSizer, UNITS_MILS); - /* unites standards = cm pour vitesse plume en HPLG */ + // unites standards = cm pour vitesse plume en HPGL m_HPGLPenSpeedOpt = new WinEDA_ValueCtrl(this, _("Pen Speed (cm/s)"), g_HPGL_Pen_Speed, CENTIMETRE, MidRightBoxSizer, 1); m_HPGLPenSpeedOpt->SetToolTip(_("Set pen speed in cm/s")); @@ -187,14 +190,15 @@ wxString fmtmsg[4] = { wxT("HPGL"), wxT("Gerber"), wxT("Postscript"), wxT("Posts g_PlotLine_Width, g_UnitMetric, MidRightBoxSizer, PCB_INTERNAL_UNIT); m_LinesWidth->SetToolTip(_("Set width for lines in Line plot mode")); - /* Create the right column commands */ + // Create the right column commands wxString choice_plot_offset_msg[] = {_("Absolute"), _("Auxiliary axis")}; m_Choice_Plot_Offset = new wxRadioBox(this, ID_SEL_PLOT_OFFSET_OPTION, _("Plot Origin"), wxDefaultPosition,wxSize(-1,-1), 2,choice_plot_offset_msg,1,wxRA_SPECIFY_COLS); - if ( s_PlotOriginIsAuxAxis ) m_Choice_Plot_Offset->SetSelection(1); + if( s_PlotOriginIsAuxAxis ) + m_Choice_Plot_Offset->SetSelection(1); RightBoxSizer->Add(m_Choice_Plot_Offset, 0, wxGROW|wxALL, 5); /* Add a spacer for a better look */ RightBoxSizer->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 20); @@ -216,10 +220,9 @@ wxString choice_plot_offset_msg[] = Button->SetForegroundColour(wxColour(0,80,80) ); RightBoxSizer->Add(Button, 0, wxGROW|wxALL, 5); - // Create scale adjust option m_XScaleAdjust = m_YScaleAdjust = 1.0; - if ( m_Parent->m_Parent->m_EDA_Config ) + if( m_Parent->m_Parent->m_EDA_Config ) { m_Parent->m_Parent->m_EDA_Config->Read(wxT("PlotXFineScaleAdj"), &m_XScaleAdjust); m_Parent->m_Parent->m_EDA_Config->Read(wxT("PlotYFineScaleAdj"), &m_YScaleAdjust); @@ -233,32 +236,41 @@ wxString choice_plot_offset_msg[] = m_Plot_PS_Negative->SetValue(g_Plot_PS_Negative); RightBoxSizer->Add(m_Plot_PS_Negative, 0, wxGROW|wxALL, 5); - /* Creation de la liste des layers */ + // Creation de la liste des layers int mask = 1; wxBoxSizer * OneColonLayerBoxSizer = new wxBoxSizer(wxVERTICAL); LayersBoxSizer->Add(OneColonLayerBoxSizer, 0, wxGROW|wxALL, 5); for ( ii = 0; ii < NB_LAYERS; ii++, mask <<= 1 ) { - if ( ii == 16 ) + if( ii == 16 ) { OneColonLayerBoxSizer = new wxBoxSizer(wxVERTICAL); LayersBoxSizer->Add(OneColonLayerBoxSizer, 0, wxGROW|wxALL, 5); } - m_BoxSelecLayer[ii] = new wxCheckBox(this, -1, - ReturnPcbLayerName(ii)); - if ( mask & s_SelectedLayers) m_BoxSelecLayer[ii]->SetValue(true); + m_BoxSelecLayer[ii] = new wxCheckBox(this, -1, ReturnPcbLayerName(ii)); + if( mask & s_SelectedLayers ) + m_BoxSelecLayer[ii]->SetValue(true); OneColonLayerBoxSizer->Add(m_BoxSelecLayer[ii], 0, wxGROW|wxALL, 1); } + // Option for excluding contents of "Edges Pcb" layer + m_Exclude_Edges_Pcb = new wxCheckBox(this, + ID_EXCLUDE_EDGES_PCB, _("Exclude Edges Pcb layer") ); + m_Exclude_Edges_Pcb->SetValue(Exclude_Edges_Pcb); + m_Exclude_Edges_Pcb->SetToolTip( + _("Exclude contents of Edges Pcb layer from all other layers") ); + LeftBoxSizer->Add(m_Exclude_Edges_Pcb, 0, wxGROW|wxALL, 1); + // Option d'impression du cartouche: - if ( m_Parent->m_Print_Sheet_Ref ) + if( m_Parent->m_Print_Sheet_Ref ) { m_Plot_Sheet_Ref = new wxCheckBox(this, ID_PRINT_REF, _("Print Sheet Ref") ); m_Plot_Sheet_Ref->SetValue(Plot_Sheet_Ref); LeftBoxSizer->Add(m_Plot_Sheet_Ref, 0, wxGROW|wxALL, 1); } - else Plot_Sheet_Ref = false; + else + Plot_Sheet_Ref = false; // Option d'impression des pads sur toutes les couches m_Plot_Pads_on_Silkscreen = new wxCheckBox(this, @@ -349,20 +361,24 @@ wxCommandEvent event; GetSizer()->SetSizeHints(this); } + /***************************************************************/ void WinEDA_PlotFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) /***************************************************************/ + /* Called by the close button -*/ + */ { Close(true); // true is to force the frame to close } + /****************************************************/ void WinEDA_PlotFrame::OnClose(wxCloseEvent & event) /****************************************************/ -/* called when WinEDA_PlotFrame is closed -*/ + +/* Called when WinEDA_PlotFrame is closed + */ { EndModal(0); } @@ -371,17 +387,20 @@ void WinEDA_PlotFrame::OnClose(wxCloseEvent & event) /*********************************************************/ void WinEDA_PlotFrame::CreateDrillFile(wxCommandEvent & event) /*********************************************************/ + /* Create the board drill file used with gerber documents -*/ + */ { ((WinEDA_PcbFrame * )m_Parent)->InstallDrillFrame(event); } + /*********************************************************/ void WinEDA_PlotFrame::SetCommands(wxCommandEvent & event) /*********************************************************/ + /* active ou désactive les différents menus d'option selon le standard choisi -*/ + */ { int format; int format_list[] = @@ -390,76 +409,82 @@ int format_list[] = format = format_list[m_PlotFormatOpt->GetSelection()]; - switch ( format ) - { - case PLOT_FORMAT_POST_A4: - case PLOT_FORMAT_POST: - m_Drill_Shape_Opt->Enable(true); - m_PlotModeOpt->Enable(true); - m_PlotMirorOpt->Enable(true); - m_GerbSpotSizeMinOpt->Enable(false); - m_Choice_Plot_Offset->Enable(false); - m_LinesWidth->Enable(true); - m_HPGLPenSizeOpt->Enable(false); - m_HPGLPenSpeedOpt->Enable(false); - m_HPGLPenOverlayOpt->Enable(false); - m_HPGL_PlotCenter_Opt->Enable(false); - m_Plot_Sheet_Ref->Enable(true); - m_Scale_Opt->Enable(true); - m_FineAdjustXscaleOpt->Enable(true); - m_FineAdjustYscaleOpt->Enable(true); - m_PlotFormat = PLOT_FORMAT_POST; - if ( format == PLOT_FORMAT_POST_A4 ) g_ForcePlotPS_On_A4 = true; - else g_ForcePlotPS_On_A4 = false; - m_Plot_PS_Negative->Enable(true); - break; + switch( format ) + { + case PLOT_FORMAT_POST_A4: + case PLOT_FORMAT_POST: + default: + m_Drill_Shape_Opt->Enable(true); + m_PlotModeOpt->Enable(true); + m_PlotMirorOpt->Enable(true); + m_GerbSpotSizeMinOpt->Enable(false); + m_Choice_Plot_Offset->Enable(false); + m_LinesWidth->Enable(true); + m_HPGLPenSizeOpt->Enable(false); + m_HPGLPenSpeedOpt->Enable(false); + m_HPGLPenOverlayOpt->Enable(false); + m_HPGL_PlotCenter_Opt->Enable(false); + m_Exclude_Edges_Pcb->Enable(false); + m_Plot_Sheet_Ref->Enable(true); + m_Scale_Opt->Enable(true); + m_FineAdjustXscaleOpt->Enable(true); + m_FineAdjustYscaleOpt->Enable(true); + m_PlotFormat = PLOT_FORMAT_POST; + g_ForcePlotPS_On_A4 = (format == PLOT_FORMAT_POST_A4); + m_Plot_PS_Negative->Enable(true); + break; - case PLOT_FORMAT_GERBER: - m_Drill_Shape_Opt->Enable(false); - m_PlotModeOpt->Enable(false); - m_PlotMirorOpt->Enable(false); - m_GerbSpotSizeMinOpt->Enable(true); - m_Choice_Plot_Offset->Enable(true); - m_LinesWidth->Enable(true); - m_HPGLPenSizeOpt->Enable(false); - m_HPGLPenSpeedOpt->Enable(false); - m_HPGLPenOverlayOpt->Enable(false); - m_HPGL_PlotCenter_Opt->Enable(false); - m_Plot_Sheet_Ref->Enable(false); - m_Scale_Opt->Enable(false); - m_FineAdjustXscaleOpt->Enable(false); - m_FineAdjustYscaleOpt->Enable(false); - m_PlotFormat = PLOT_FORMAT_GERBER; - m_Plot_PS_Negative->Enable(false); - break; + case PLOT_FORMAT_GERBER: + m_Drill_Shape_Opt->Enable(false); + m_PlotModeOpt->Enable(false); + m_PlotMirorOpt->Enable(false); + m_GerbSpotSizeMinOpt->Enable(true); + m_Choice_Plot_Offset->Enable(true); + m_LinesWidth->Enable(true); + m_HPGLPenSizeOpt->Enable(false); + m_HPGLPenSpeedOpt->Enable(false); + m_HPGLPenOverlayOpt->Enable(false); + m_HPGL_PlotCenter_Opt->Enable(false); + m_Exclude_Edges_Pcb->Enable(true); + m_Plot_Sheet_Ref->Enable(false); + m_Scale_Opt->Enable(false); + m_FineAdjustXscaleOpt->Enable(false); + m_FineAdjustYscaleOpt->Enable(false); + m_PlotFormat = PLOT_FORMAT_GERBER; + m_Plot_PS_Negative->Enable(false); + break; - case PLOT_FORMAT_HPGL: - m_PlotMirorOpt->Enable(true); - m_Drill_Shape_Opt->Enable(false); - m_PlotModeOpt->Enable(true); - m_GerbSpotSizeMinOpt->Enable(false); - m_Choice_Plot_Offset->Enable(false); - m_LinesWidth->Enable(false); - m_HPGLPenSizeOpt->Enable(true); - m_HPGLPenSpeedOpt->Enable(true); - m_HPGLPenOverlayOpt->Enable(true); - m_HPGL_PlotCenter_Opt->Enable(true); - m_Plot_Sheet_Ref->Enable(true); - m_Scale_Opt->Enable(true); - m_FineAdjustXscaleOpt->Enable(false); - m_FineAdjustYscaleOpt->Enable(false); - m_PlotFormat = PLOT_FORMAT_HPGL; - m_Plot_PS_Negative->Enable(false); - break; - } + case PLOT_FORMAT_HPGL: + m_PlotMirorOpt->Enable(true); + m_Drill_Shape_Opt->Enable(false); + m_PlotModeOpt->Enable(true); + m_GerbSpotSizeMinOpt->Enable(false); + m_Choice_Plot_Offset->Enable(false); + m_LinesWidth->Enable(false); + m_HPGLPenSizeOpt->Enable(true); + m_HPGLPenSpeedOpt->Enable(true); + m_HPGLPenOverlayOpt->Enable(true); + m_HPGL_PlotCenter_Opt->Enable(true); + m_Exclude_Edges_Pcb->Enable(false); + m_Plot_Sheet_Ref->Enable(true); + m_Scale_Opt->Enable(true); + m_FineAdjustXscaleOpt->Enable(false); + m_FineAdjustYscaleOpt->Enable(false); + m_PlotFormat = PLOT_FORMAT_HPGL; + m_Plot_PS_Negative->Enable(false); + break; + } format_plot = m_PlotFormat; } + /*********************************************************/ void WinEDA_PlotFrame::SaveOptPlot(wxCommandEvent & event) /*********************************************************/ { - if ( m_Plot_Sheet_Ref ) + Exclude_Edges_Pcb = m_Exclude_Edges_Pcb->GetValue(); + + if( m_Plot_Sheet_Ref ) Plot_Sheet_Ref = m_Plot_Sheet_Ref->GetValue(); PlotPadsOnSilkLayer = m_Plot_Pads_on_Silkscreen->GetValue(); @@ -475,8 +500,10 @@ void WinEDA_PlotFrame::SaveOptPlot(wxCommandEvent & event) g_PlotScaleOpt = m_Scale_Opt->GetSelection(); g_DrillShapeOpt = m_Drill_Shape_Opt->GetSelection(); Plot_Set_MIROIR = m_PlotMirorOpt->GetValue(); - if ( Plot_Set_MIROIR ) g_PlotOrient = PLOT_MIROIR; - else g_PlotOrient = 0; + if( Plot_Set_MIROIR ) + g_PlotOrient = PLOT_MIROIR; + else + g_PlotOrient = 0; Plot_Mode = m_PlotModeOpt->GetSelection(); g_DrawViaOnMaskLayer = m_PlotNoViaOnMaskOpt->GetValue(); spot_mini = m_GerbSpotSizeMinOpt->GetValue(); @@ -488,7 +515,8 @@ void WinEDA_PlotFrame::SaveOptPlot(wxCommandEvent & event) m_XScaleAdjust = m_FineAdjustXscaleOpt->GetValue(); m_YScaleAdjust = m_FineAdjustYscaleOpt->GetValue(); - if ( m_Parent->m_Parent->m_EDA_Config ) + + if( m_Parent->m_Parent->m_EDA_Config ) { m_Parent->m_Parent->m_EDA_Config->Write(wxT("PlotXFineScaleAdj"), m_XScaleAdjust); m_Parent->m_Parent->m_EDA_Config->Write(wxT("PlotYFineScaleAdj"), m_YScaleAdjust); @@ -497,6 +525,7 @@ void WinEDA_PlotFrame::SaveOptPlot(wxCommandEvent & event) g_Plot_PS_Negative = m_Plot_PS_Negative->GetValue(); } + /***************************************************/ void WinEDA_PlotFrame::Plot(wxCommandEvent & event) /***************************************************/ @@ -507,75 +536,72 @@ wxString ext; SaveOptPlot(event); - switch ( g_PlotScaleOpt ) - { - default: - Scale_X = Scale_Y = 1; - break; + switch( g_PlotScaleOpt ) + { + default: + Scale_X = Scale_Y = 1; + break; - case 2: - Scale_X = Scale_Y = 1.5; - break; + case 2: + Scale_X = Scale_Y = 1.5; + break; - case 3: - Scale_X = Scale_Y = 2; - break; + case 3: + Scale_X = Scale_Y = 2; + break; - case 4: - Scale_X = Scale_Y = 3; - break; + case 4: + Scale_X = Scale_Y = 3; + break; + } - } - - Scale_X *= m_XScaleAdjust; - Scale_Y *= m_YScaleAdjust; + Scale_X *= m_XScaleAdjust; + Scale_Y *= m_YScaleAdjust; BaseFileName = m_Parent->GetScreen()->m_FileName; ChangeFileNameExt( BaseFileName, wxT("-") ); - switch ( m_PlotFormat) - { - case PLOT_FORMAT_POST: - ext = wxT(".ps"); - break; + switch( m_PlotFormat) + { + case PLOT_FORMAT_POST: + ext = wxT(".ps"); + break; - case PLOT_FORMAT_GERBER: - ext = wxT(".pho"); - break; + case PLOT_FORMAT_GERBER: + ext = wxT(".pho"); + break; - case PLOT_FORMAT_HPGL: - ext = wxT(".plt"); - break; - } + case PLOT_FORMAT_HPGL: + ext = wxT(".plt"); + break; + } int mask = 1; s_SelectedLayers = 0; - for ( layer_to_plot = 0; layer_to_plot < 29; layer_to_plot++, mask <<= 1 ) + for( layer_to_plot = 0; layer_to_plot < 29; layer_to_plot++, mask <<= 1 ) { - if ( m_BoxSelecLayer[layer_to_plot]->GetValue() ) + if( m_BoxSelecLayer[layer_to_plot]->GetValue() ) { s_SelectedLayers |= mask; - /* Calcul du nom du fichier */ + // Calcul du nom du fichier FullFileName = BaseFileName + ReturnPcbLayerName(layer_to_plot, true) + ext; switch ( m_PlotFormat) { - case PLOT_FORMAT_POST: - m_Parent->Genere_PS(FullFileName, layer_to_plot); - break; + case PLOT_FORMAT_POST: + m_Parent->Genere_PS(FullFileName, layer_to_plot); + break; - case PLOT_FORMAT_GERBER: - m_Parent->Genere_GERBER(FullFileName, layer_to_plot, s_PlotOriginIsAuxAxis); - break; - - case PLOT_FORMAT_HPGL: - m_Parent->Genere_HPGL(FullFileName, layer_to_plot); - break; + case PLOT_FORMAT_GERBER: + m_Parent->Genere_GERBER(FullFileName, layer_to_plot, s_PlotOriginIsAuxAxis); + break; + case PLOT_FORMAT_HPGL: + m_Parent->Genere_HPGL(FullFileName, layer_to_plot); + break; } } } - // Close(true); } @@ -588,4 +614,3 @@ void WinEDA_BasePcbFrame::ToPlotter(wxCommandEvent& event) frame->ShowModal(); frame->Destroy(); } - diff --git a/pcbnew/pcbplot.h b/pcbnew/pcbplot.h index 471f6007dc..4e3d703694 100644 --- a/pcbnew/pcbplot.h +++ b/pcbnew/pcbplot.h @@ -18,6 +18,11 @@ #define SCALE_HPGL 0.102041 /* Options : */ +eda_global bool Exclude_Edges_Pcb // True to exclude contents of Edges Pcb layer +#ifdef MAIN += TRUE +#endif +; eda_global bool Plot_Sheet_Ref; eda_global bool g_DrawViaOnMaskLayer; // True if vias are drawn on Mask layer (ie protected by mask) eda_global int Plot_Mode // = FILAIRE, FILL ou SKETCH @@ -190,3 +195,4 @@ void trace_1_pad_TRAPEZE_POST(wxPoint centre, wxSize size, wxSize delta, #endif /* #define PCBPLOT_H */ + diff --git a/pcbnew/plot_rtn.cpp b/pcbnew/plot_rtn.cpp index acd908bbb3..368fa3badb 100644 --- a/pcbnew/plot_rtn.cpp +++ b/pcbnew/plot_rtn.cpp @@ -47,23 +47,24 @@ wxString msg; switch( PtStruct->m_StructType ) { case TYPEDRAWSEGMENT: - PlotDrawSegment( (DRAWSEGMENT*) PtStruct, format_plot, - EDGE_LAYER | masque_layer ); + PlotDrawSegment( (DRAWSEGMENT*) PtStruct, format_plot, masque_layer ); + // (Following line has been superceded by new commands elsewhere.) +// EDGE_LAYER | masque_layer ); break; case TYPETEXTE: - PlotTextePcb((TEXTE_PCB*) PtStruct,format_plot, - EDGE_LAYER | masque_layer); + PlotTextePcb( (TEXTE_PCB*) PtStruct,format_plot, masque_layer ); +// EDGE_LAYER | masque_layer ); break; case TYPECOTATION: - PlotCotation((COTATION*) PtStruct, format_plot, - EDGE_LAYER | masque_layer); + PlotCotation( (COTATION*) PtStruct, format_plot, masque_layer ); +// EDGE_LAYER | masque_layer ); break; case TYPEMIRE: - PlotMirePcb((MIREPCB*) PtStruct, format_plot, - EDGE_LAYER | masque_layer); + PlotMirePcb( (MIREPCB*) PtStruct, format_plot, masque_layer ); +// EDGE_LAYER | masque_layer ); break; case TYPEMARQUEUR: @@ -285,7 +286,8 @@ DRAWSEGMENT *DrawTmp; DrawTmp = new DRAWSEGMENT(NULL); - masque_layer |= EDGE_LAYER; +// (Following command has been superceded by new commands elsewhere.) +// masque_layer |= EDGE_LAYER; DrawTmp->m_Width = Cotation->m_Width; DrawTmp->SetLayer( Cotation->GetLayer() ); @@ -334,7 +336,8 @@ int dx1,dx2, dy1, dy2, rayon; DrawTmp = new DRAWSEGMENT(NULL); - masque_layer |= EDGE_LAYER; +// (Following command has been superceded by new commands elsewhere.) +// masque_layer |= EDGE_LAYER; DrawTmp->m_Width = Mire->m_Width; DrawTmp->SetLayer( Mire->GetLayer() ); diff --git a/pcbnew/plotgerb.cpp b/pcbnew/plotgerb.cpp index 70b71cfb28..aa5504a07e 100644 --- a/pcbnew/plotgerb.cpp +++ b/pcbnew/plotgerb.cpp @@ -87,6 +87,11 @@ int tracevia = 1; nb_plot_erreur = 0 ; int layer_mask = g_TabOneLayerMask[Layer]; + // Specify that the contents of the "Edges Pcb" layer are also to be + // plotted, unless the option of excluding that layer has been selected. + if( ! Exclude_Edges_Pcb ) + layer_mask |= EDGE_LAYER; + switch(Layer) { case CUIVRE_N : @@ -105,7 +110,7 @@ int tracevia = 1; case LAYER_N_14 : case LAYER_N_15 : case CMP_N : - Plot_Layer_GERBER(dest,layer_mask, 0, 1); + Plot_Layer_GERBER(dest, layer_mask, 0, 1); break; case SOLDERMASK_N_CU : @@ -121,7 +126,7 @@ int tracevia = 1; break; default: - Plot_Serigraphie(PLOT_FORMAT_GERBER,dest, layer_mask); + Plot_Serigraphie(PLOT_FORMAT_GERBER, dest, layer_mask); break; } @@ -145,7 +150,8 @@ TRACK * track ; EDA_BaseStruct * PtStruct; wxString msg; - masque_layer |= EDGE_LAYER; /* Les elements de la couche EDGE sont tj traces */ +// (Following command has been superceded by new command on lines 92 and 93.) +// masque_layer |= EDGE_LAYER; /* Les elements de la couche EDGE sont tj traces */ /* trace des elements type Drawings Pcb : */ PtStruct = m_Pcb->m_Drawings; @@ -155,22 +161,22 @@ wxString msg; { case TYPEDRAWSEGMENT: PlotDrawSegment( (DRAWSEGMENT*) PtStruct, PLOT_FORMAT_GERBER, - masque_layer); + masque_layer ); break; case TYPETEXTE: - PlotTextePcb((TEXTE_PCB*) PtStruct,PLOT_FORMAT_GERBER, - masque_layer); + PlotTextePcb( (TEXTE_PCB*) PtStruct, PLOT_FORMAT_GERBER, + masque_layer ); break; case TYPECOTATION: - PlotCotation((COTATION*) PtStruct, PLOT_FORMAT_GERBER, - masque_layer); + PlotCotation( (COTATION*) PtStruct, PLOT_FORMAT_GERBER, + masque_layer ); break; case TYPEMIRE: - PlotMirePcb((MIREPCB*) PtStruct, PLOT_FORMAT_GERBER, - masque_layer); + PlotMirePcb( (MIREPCB*) PtStruct, PLOT_FORMAT_GERBER, + masque_layer ); break; case TYPEMARQUEUR: diff --git a/pcbnew/plothpgl.cpp b/pcbnew/plothpgl.cpp index 81e329ad40..ff84d939ca 100644 --- a/pcbnew/plothpgl.cpp +++ b/pcbnew/plothpgl.cpp @@ -48,7 +48,7 @@ void WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer ) // Compute pen_dim (from g_HPGL_Pen_Diam in mils) in pcb units, // with plot scale (if Scale is 2, pen diametre is always g_HPGL_Pen_Diam // so apparent pen diam is real pen diam / Scale - pen_diam = (int) round( (g_HPGL_Pen_Diam * 10.0) / Scale_X ); // Assume Scale_X # Scale_Y + pen_diam = (int) round( (g_HPGL_Pen_Diam * U_PCB) / Scale_X ); // Assume Scale_X # Scale_Y pen_rayon = pen_diam / 2; nb_plot_erreur = 0; @@ -130,6 +130,10 @@ void WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer ) InitPlotParametresHPGL( g_PlotOffset, scale_x, scale_y, g_PlotOrient ); + // Specify that the contents of the "Edges Pcb" layer are to be plotted + // in addition to the contents of the currently specified layer. + int layer_mask = g_TabOneLayerMask[Layer] | EDGE_LAYER; + switch( Layer ) { case CUIVRE_N: @@ -148,12 +152,12 @@ void WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer ) case LAYER_N_14: case LAYER_N_15: case CMP_N: - Plot_Layer_HPGL( dest, g_TabOneLayerMask[Layer], 0, 1, modetrace ); + Plot_Layer_HPGL( dest, layer_mask, 0, 1, modetrace ); break; case SILKSCREEN_N_CU: case SILKSCREEN_N_CMP: - Plot_Serigraphie( PLOT_FORMAT_HPGL, dest, g_TabOneLayerMask[Layer] ); + Plot_Serigraphie( PLOT_FORMAT_HPGL, dest, layer_mask ); break; case SOLDERMASK_N_CU: @@ -164,18 +168,18 @@ void WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer ) tracevia = 1; else tracevia = 0; - Plot_Layer_HPGL( dest, g_TabOneLayerMask[Layer], + Plot_Layer_HPGL( dest, layer_mask, g_DesignSettings.m_MaskMargin, tracevia, modetrace ); } break; case SOLDERPASTE_N_CU: case SOLDERPASTE_N_CMP: /* Trace du masque de pate de soudure */ - Plot_Layer_HPGL( dest, g_TabOneLayerMask[Layer], 0, 0, modetrace ); + Plot_Layer_HPGL( dest, layer_mask, 0, 0, modetrace ); break; default: /* Trace des autres couches (dessin, adhesives,eco,comment) */ - Plot_Serigraphie( PLOT_FORMAT_HPGL, dest, g_TabOneLayerMask[Layer] ); + Plot_Serigraphie( PLOT_FORMAT_HPGL, dest, layer_mask ); break; } @@ -202,7 +206,8 @@ void WinEDA_BasePcbFrame::Plot_Layer_HPGL( FILE* File, int masque_layer, BOARD_ITEM* PtStruct; wxString msg; - masque_layer |= EDGE_LAYER; /* Les elements de la couche EDGE sont tj traces */ +// (Following command has been superceded by new command on line 135.) +// masque_layer |= EDGE_LAYER; /* Les elements de la couche EDGE sont tj traces */ /* trace des elements type Drawings Pcb : */ PtStruct = m_Pcb->m_Drawings; diff --git a/pcbnew/plotps.cpp b/pcbnew/plotps.cpp index 8d357579ad..9b8b2d69bb 100644 --- a/pcbnew/plotps.cpp +++ b/pcbnew/plotps.cpp @@ -168,10 +168,14 @@ void WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer ) SetColorMapPS( WHITE ); } + // Specify that the contents of the "Edges Pcb" layer are to be plotted + // in addition to the contents of the currently specified layer. + int layer_mask = g_TabOneLayerMask[Layer] | EDGE_LAYER; + switch( Layer ) { case - 1: - Plot_Layer_PS( dest, g_TabOneLayerMask[Layer], 0, 1, modetrace ); + Plot_Layer_PS( dest, layer_mask, 0, 1, modetrace ); break; case CUIVRE_N: @@ -190,12 +194,12 @@ void WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer ) case LAYER_N_14: case LAYER_N_15: case CMP_N: - Plot_Layer_PS( dest, g_TabOneLayerMask[Layer], 0, 1, modetrace ); + Plot_Layer_PS( dest, layer_mask, 0, 1, modetrace ); break; case SILKSCREEN_N_CU: case SILKSCREEN_N_CMP: - Plot_Serigraphie( PLOT_FORMAT_POST, dest, g_TabOneLayerMask[Layer] ); + Plot_Serigraphie( PLOT_FORMAT_POST, dest, layer_mask ); break; case SOLDERMASK_N_CU: @@ -204,17 +208,17 @@ void WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer ) tracevia = 1; else tracevia = 0; - Plot_Layer_PS( dest, g_TabOneLayerMask[Layer], g_DesignSettings.m_MaskMargin, + Plot_Layer_PS( dest, layer_mask, g_DesignSettings.m_MaskMargin, tracevia, modetrace ); break; case SOLDERPASTE_N_CU: case SOLDERPASTE_N_CMP: // Trace du masque de pate de soudure - Plot_Layer_PS( dest, g_TabOneLayerMask[Layer], 0, 0, modetrace ); + Plot_Layer_PS( dest, layer_mask, 0, 0, modetrace ); break; default: - Plot_Serigraphie( PLOT_FORMAT_POST, dest, g_TabOneLayerMask[Layer] ); + Plot_Serigraphie( PLOT_FORMAT_POST, dest, layer_mask ); break; } @@ -240,7 +244,8 @@ void WinEDA_BasePcbFrame::Plot_Layer_PS( FILE* File, int masque_layer, BOARD_ITEM* PtStruct; wxString msg; - masque_layer |= EDGE_LAYER; // Les elements de la couche EDGE sont tj traces +// (Following command has been superceded by new command on line 173.) +// masque_layer |= EDGE_LAYER; // Les elements de la couche EDGE sont tj traces // trace des elements type Drawings Pcb : PtStruct = m_Pcb->m_Drawings;