This commit is contained in:
Dick Hollenbeck 2014-06-30 01:44:46 -05:00
parent 1e7495e634
commit 60140dfbcf
7 changed files with 59 additions and 63 deletions

View File

@ -88,6 +88,8 @@ typedef int wxPenStyle;
extern GR_DRAWMODE g_XorMode;
extern EDA_COLOR_T g_DrawBgColor;
typedef enum {

View File

@ -320,18 +320,6 @@ void DIALOG_SVG_PRINT::ExportSVGFile( bool aOnlyOneFile )
);
}
wxFileName fn(boardFilename);
BuildPlotFileName( &fn, outputDir.GetPath(), suffix, SVGFileExtension );
if( m_PrintBoardEdgesCtrl->IsChecked() )
m_printMaskLayer |= EDGE_LAYER;
if( CreateSVGFile( fn.GetFullPath() ) )
msg.Printf( _( "Plot: %s OK\n" ), GetChars( fn.GetFullPath() ) );
else // Error
msg.Printf( _( "** Unable to create %s **\n" ), GetChars( fn.GetFullPath() ) );
m_messagesBox->AppendText( msg );
if( aOnlyOneFile )
break;
}
@ -378,9 +366,9 @@ bool DIALOG_SVG_PRINT::CreateSVGFile( const wxString& aFullFileName )
}
LOCALE_IO toggle;
SVG_PLOTTER* plotter = (SVG_PLOTTER*) StartPlotBoard( m_board,
&plot_opts, aFullFileName,
wxEmptyString );
&plot_opts, UNDEFINED_LAYER, aFullFileName, wxEmptyString );
if( plotter )
{

View File

@ -797,7 +797,7 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
LOCALE_IO toggle;
BOARD* board = m_parent->GetBoard();
PLOTTER* plotter = StartPlotBoard( board, &m_plotOpts, fn.GetFullPath(), wxEmptyString );
PLOTTER* plotter = StartPlotBoard( board, &m_plotOpts, layer, fn.GetFullPath(), wxEmptyString );
// Print diags in messages box:
wxString msg;

View File

@ -255,6 +255,9 @@ static double MapYTo( int aY )
/* Driver function: processing starts here */
void PCB_EDIT_FRAME::ExportToGenCAD( wxCommandEvent& aEvent )
{
#if 0 // working on this 30-Jun-14, not ready yet, failed the initial testing.
wxFileName fn = GetBoard()->GetFileName();
FILE* file;
@ -344,6 +347,8 @@ void PCB_EDIT_FRAME::ExportToGenCAD( wxCommandEvent& aEvent )
module->SetFlag( 0 );
}
}
#endif
}

View File

@ -439,9 +439,9 @@ static void write_layers( MODEL_VRML& aModel, std::ofstream& output_file, BOARD*
aModel.plated_holes.Tesselate( NULL, true );
write_triangle_bag( output_file, aModel.GetColor( VRML_COLOR_TIN ),
&aModel.plated_holes, false, false,
aModel.GetLayerZ( LAST_COPPER_LAYER )
aModel.GetLayerZ( F_Cu )
+ Millimeter2iu( ART_OFFSET / 2.0 ) * aModel.scale,
aModel.GetLayerZ( FIRST_COPPER_LAYER )
aModel.GetLayerZ( B_Cu )
- Millimeter2iu( ART_OFFSET / 2.0 ) * aModel.scale,
aModel.precision );

View File

@ -145,6 +145,7 @@ void DXF2BRD_CONVERTER::addPolyline(const DRW_Polyline& data )
// Obviously, the z coordinate is ignored
wxPoint startpoint;
for( unsigned ii = 0; ii < data.vertlist.size(); ii++ )
{
DRW_Vertex* vertex = data.vertlist[ii];
@ -157,7 +158,8 @@ void DXF2BRD_CONVERTER::addPolyline(const DRW_Polyline& data )
}
DRAWSEGMENT* segm = new DRAWSEGMENT( m_brd );
segm->SetLayer( m_brdLayer );
segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
segm->SetStart( startpoint );
wxPoint endpoint( mapX( vertex->basePoint.x ), mapY( vertex->basePoint.y ) );
segm->SetEnd( endpoint );
@ -176,6 +178,7 @@ void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& data )
// (obviously contant and is the width of the DRW_LWPolyline.
// the variable width of each vertex (when exists) is not used.
wxPoint startpoint;
for( unsigned ii = 0; ii < data.vertlist.size(); ii++ )
{
DRW_Vertex2D* vertex = data.vertlist[ii];
@ -188,7 +191,8 @@ void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& data )
}
DRAWSEGMENT* segm = new DRAWSEGMENT( m_brd );
segm->SetLayer( m_brdLayer );
segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
segm->SetStart( startpoint );
wxPoint endpoint( mapX( vertex->x ), mapY( vertex->y ) );
segm->SetEnd( endpoint );

View File

@ -90,87 +90,83 @@ wxString GetGerberFileFunction( const BOARD *aBoard, LAYER_NUM aLayer )
switch( aLayer )
{
case LAYER_N_BACK:
attrib = wxString::Format( wxT( "Copper,L%d" ), aBoard->GetCopperLayerCount() );
break;
case LAYER_N_2:
case LAYER_N_3:
case LAYER_N_4:
case LAYER_N_5:
case LAYER_N_6:
case LAYER_N_7:
case LAYER_N_8:
case LAYER_N_9:
case LAYER_N_10:
case LAYER_N_11:
case LAYER_N_12:
case LAYER_N_13:
case LAYER_N_14:
case LAYER_N_15:
// LAYER_N_2 is the first inner layer counting from the bottom; this
// must be converted to a 1-based number starting from the top
attrib = wxString::Format( wxT( "Copper,L%d" ),
aBoard->GetCopperLayerCount() - ( aLayer - LAYER_N_2 + 1 ) );
break;
case LAYER_N_FRONT:
attrib = wxString( wxT( "Copper,L1" ) );
break;
case ADHESIVE_N_FRONT:
case F_Adhes:
attrib = wxString( wxT( "Glue,Top" ) );
break;
case ADHESIVE_N_BACK:
case B_Adhes:
attrib = wxString( wxT( "Glue,Bot" ) );
break;
case SILKSCREEN_N_FRONT:
case F_SilkS:
attrib = wxString( wxT( "Legend,Top" ) );
break;
case SILKSCREEN_N_BACK:
case B_SilkS:
attrib = wxString( wxT( "Legend,Bot" ) );
break;
case SOLDERMASK_N_FRONT:
case F_Mask:
attrib = wxString( wxT( "Soldermask,Top" ) );
break;
case SOLDERMASK_N_BACK:
case B_Mask:
attrib = wxString( wxT( "Soldermask,Bot" ) );
break;
case SOLDERPASTE_N_FRONT:
case F_Paste:
attrib = wxString( wxT( "Paste,Top" ) );
break;
case SOLDERPASTE_N_BACK:
case B_Paste:
attrib = wxString( wxT( "Paste,Bot" ) );
break;
case EDGE_N:
case Edge_Cuts:
attrib = wxString( wxT( "Profile" ) );
break;
case DRAW_N:
case Dwgs_User:
attrib = wxString( wxT( "Drawing" ) );
break;
case COMMENT_N:
case Cmts_User:
attrib = wxString( wxT( "Other,Comment" ) );
break;
case ECO1_N:
case ECO2_N:
attrib = wxString::Format( wxT( "Other,ECO%d" ), aLayer - ECO1_N + 1 );
case Eco1_User:
case Eco2_User:
attrib = wxString::Format( wxT( "Other,ECO%d" ), aLayer - Eco1_User + 1 );
break;
case F_Cu:
attrib = wxString( wxT( "Copper,L1" ) );
break;
case B_Cu:
attrib = wxString::Format( wxT( "Copper,L%d" ), aBoard->GetCopperLayerCount() );
break;
default:
if( IsCopperLayer( aLayer ) )
{
#if 0 // was:
// LAYER_N_2 is the first inner layer counting from the bottom; this
// must be converted to a 1-based number starting from the top
attrib = wxString::Format( wxT( "Copper,L%d" ),
aBoard->GetCopperLayerCount() - ( aLayer - LAYER_N_2 + 1 ) );
#else
attrib = wxString::Format( wxT( "Copper,L%d" ), aLayer );
#endif
}
break;
}
// Add the signal type of the layer, if relevant
if( FIRST_COPPER_LAYER <= aLayer && aLayer <= LAST_COPPER_LAYER ) {
LAYER_T type = aBoard->GetLayerType( aLayer );
if( IsCopperLayer( aLayer ) )
{
LAYER_T type = aBoard->GetLayerType( ToLAYER_ID( aLayer ) );
switch( type )
{
case LT_SIGNAL:
@ -190,6 +186,7 @@ wxString GetGerberFileFunction( const BOARD *aBoard, LAYER_NUM aLayer )
return attrib;
}
void BuildPlotFileName( wxFileName* aFilename,
const wxString& aOutputDir,
const wxString& aSuffix,