From 7e80e7207c3815190720b494885ea9ff0558b2e1 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sun, 22 Feb 2015 16:42:13 +0100 Subject: [PATCH] Pcbnew, Footprint place file: use standard keywords "top" and "bottom" as board side identifiers instead of external copper layers names, which have no meaning in this fabrication file --- pcbnew/exporters/gen_modules_placefile.cpp | 54 ++++++++++++---------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/pcbnew/exporters/gen_modules_placefile.cpp b/pcbnew/exporters/gen_modules_placefile.cpp index 231b72c1fa..275add2041 100644 --- a/pcbnew/exporters/gen_modules_placefile.cpp +++ b/pcbnew/exporters/gen_modules_placefile.cpp @@ -4,7 +4,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2012 KiCad Developers, see CHANGELOG.TXT for contributors. + * Copyright (C) 2015 KiCad Developers, see CHANGELOG.TXT for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -51,6 +51,24 @@ #include #include +/* + * The format of the kicad place file is: + * ### Module positions - created on 04/12/2012 15:24:24 ### + * ### Printed by Pcbnew version pcbnew (2012-11-30 BZR 3828)-testing + * ## Unit = inches, Angle = deg. + * or + * ## Unit = mm, Angle = deg. + * ## Side : top + * or + * ## Side : bottom + * or + * ## Side : all + * # Ref Val Package PosX PosY Rot Side + * C123 0,1uF/50V SM0603 1.6024 -2.6280 180.0 Front + * C124 0,1uF/50V SM0603 1.6063 -2.7579 180.0 Front + * C125 0,1uF/50V SM0603 1.6010 -2.8310 180.0 Front + * ## End + */ class LIST_MOD // An helper class used to build a list of useful footprints. @@ -126,6 +144,11 @@ private: int DIALOG_GEN_MODULE_POSITION::m_unitsOpt = 0; int DIALOG_GEN_MODULE_POSITION::m_fileOpt = 0; +// Use standard board side name. do not translate them, +// they are keywords in place file +const wxString frontSideName = wxT( "top" ); +const wxString backSideName = wxT( "bottom" ); + void DIALOG_GEN_MODULE_POSITION::OnInitDialog( wxInitDialogEvent& event ) { // Output directory @@ -192,8 +215,6 @@ bool DIALOG_GEN_MODULE_POSITION::CreateFiles() BOARD * brd = m_parent->GetBoard(); wxFileName fn; wxString msg; - wxString frontLayerName; - wxString backLayerName; bool singleFile = OneFileOnly(); int fullcount = 0; @@ -222,8 +243,6 @@ bool DIALOG_GEN_MODULE_POSITION::CreateFiles() fn = m_parent->GetBoard()->GetFileName(); fn.SetPath( outputDir.GetPath() ); - frontLayerName = brd->GetLayerName( F_Cu ); - backLayerName = brd->GetLayerName( B_Cu ); // Create the the Front or Top side placement file, // or the single file @@ -235,7 +254,7 @@ bool DIALOG_GEN_MODULE_POSITION::CreateFiles() fn.SetName( fn.GetName() + wxT( "-" ) + wxT("all") ); } else - fn.SetName( fn.GetName() + wxT( "-" ) + frontLayerName ); + fn.SetName( fn.GetName() + wxT( "-" ) + frontSideName ); fn.SetExt( FootprintPlaceFileExtension ); @@ -267,7 +286,7 @@ bool DIALOG_GEN_MODULE_POSITION::CreateFiles() side = 0; fn = brd->GetFileName(); fn.SetPath( outputDir.GetPath() ); - fn.SetName( fn.GetName() + wxT( "-" ) + backLayerName ); + fn.SetName( fn.GetName() + wxT( "-" ) + backSideName ); fn.SetExt( wxT( "pos" ) ); fpcount = m_parent->DoGenFootprintsPositionFile( fn.GetFullPath(), UnitsMM(), @@ -356,18 +375,6 @@ void PCB_EDIT_FRAME::GenFootprintsPositionFile( wxCommandEvent& event ) * aSide = 2 -> both sides * if aFullFileName is empty, the file is not crated, only the * count of footprints to place is returned - * - * The format is: - * ### Module positions - created on 04/12/2012 15:24:24 ### - * ### Printed by Pcbnew version pcbnew (2012-11-30 BZR 3828)-testing - * ## Unit = inches, Angle = deg. - * ## Side : Front - * # Ref Val Package PosX PosY Rot Side - * C123 0,1uF/50V SM0603 1.6024 -2.6280 180.0 Front - * C124 0,1uF/50V SM0603 1.6063 -2.7579 180.0 Front - * C125 0,1uF/50V SM0603 1.6010 -2.8310 180.0 Front - * ## End - * */ int PCB_EDIT_FRAME::DoGenFootprintsPositionFile( const wxString& aFullFileName, bool aUnitsMM, @@ -463,9 +470,6 @@ int PCB_EDIT_FRAME::DoGenFootprintsPositionFile( const wxString& aFullFileName, if( list.size() > 1 ) sort( list.begin(), list.end(), sortFPlist ); - wxString frontLayerName = GetBoard()->GetLayerName( F_Cu ); - wxString backLayerName = GetBoard()->GetLayerName( B_Cu ); - // Switch the locale to standard C (needed to print floating point numbers) LOCALE_IO toggle; @@ -480,7 +484,7 @@ int PCB_EDIT_FRAME::DoGenFootprintsPositionFile( const wxString& aFullFileName, fputs( unit_text, file ); sprintf( line, "## Side : %s\n", - ( aSide < 2 ) ? TO_UTF8( frontLayerName ) : "All" ); + ( aSide < 2 ) ? TO_UTF8( frontSideName ) : "All" ); fputs( line, file ); sprintf( line, @@ -515,13 +519,13 @@ int PCB_EDIT_FRAME::DoGenFootprintsPositionFile( const wxString& aFullFileName, if( layer == F_Cu ) { - strcat( line, TO_UTF8( frontLayerName ) ); + strcat( line, TO_UTF8( frontSideName ) ); strcat( line, "\n" ); fputs( line, file ); } else if( layer == B_Cu ) { - strcat( line, TO_UTF8( backLayerName ) ); + strcat( line, TO_UTF8( backSideName ) ); strcat( line, "\n" ); fputs( line, file ); }