Browse Source
			
			
			Add IPC-D-356 Export to kicad-cli
			
				
		Add IPC-D-356 Export to kicad-cli
	
		
	
			
				ADDED: Added IPC-D-356 exporting to kicad-cli.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13951
(cherry picked from commit 5a5759c41a)
			
			
				9.0
			
			
		
							committed by
							
								 Seth Hillbrand
								Seth Hillbrand
							
						
					
				
				 11 changed files with 279 additions and 12 deletions
			
			
		- 
					1common/CMakeLists.txt
- 
					53common/jobs/job_export_pcb_ipcd356.cpp
- 
					40common/jobs/job_export_pcb_ipcd356.h
- 
					1kicad/CMakeLists.txt
- 
					60kicad/cli/command_pcb_export_ipcd356.cpp
- 
					40kicad/cli/command_pcb_export_ipcd356.h
- 
					5kicad/kicad_cli.cpp
- 
					31pcbnew/exporters/export_d356.cpp
- 
					3pcbnew/exporters/export_d356.h
- 
					56pcbnew/pcbnew_jobs_handler.cpp
- 
					1pcbnew/pcbnew_jobs_handler.h
| @ -0,0 +1,53 @@ | |||
| /*
 | |||
|  * This program source code file is part of KiCad, a free EDA CAD application. | |||
|  * | |||
|  * Copyright (C) 2025 Connor Goss <connor.goss@acroname.com> | |||
|  * Copyright The KiCad Developers, see AUTHORS.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 as published by the | |||
|  * Free Software Foundation, either version 3 of the License, or (at your | |||
|  * option) any later version. | |||
|  * | |||
|  * This program is distributed in the hope that it will be useful, but | |||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | |||
|  * General Public License for more details. | |||
|  * | |||
|  * You should have received a copy of the GNU General Public License along | |||
|  * with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| #include <jobs/job_export_pcb_ipcd356.h>
 | |||
| #include <jobs/job_registry.h>
 | |||
| #include <i18n_utility.h>
 | |||
| #include <wildcards_and_files_ext.h>
 | |||
| 
 | |||
| JOB_EXPORT_PCB_IPCD356::JOB_EXPORT_PCB_IPCD356() : JOB( "ipcd356", false ), m_filename() | |||
| { | |||
| } | |||
| 
 | |||
| 
 | |||
| wxString JOB_EXPORT_PCB_IPCD356::GetDefaultDescription() const | |||
| { | |||
|     return _( "Export IPC-D-356" ); | |||
| } | |||
| 
 | |||
| 
 | |||
| wxString JOB_EXPORT_PCB_IPCD356::GetSettingsDialogTitle() const | |||
| { | |||
|     return _( "Export IPC-D-356 Job Settings" ); | |||
| } | |||
| 
 | |||
| 
 | |||
| void JOB_EXPORT_PCB_IPCD356::SetDefaultOutputPath( const wxString& aReferenceName ) | |||
| { | |||
|     wxFileName fn = aReferenceName; | |||
| 
 | |||
|     fn.SetExt( FILEEXT::IpcD356FileExtension ); | |||
| 
 | |||
|     SetConfiguredOutputPath( fn.GetFullName() ); | |||
| } | |||
| 
 | |||
| REGISTER_JOB( pcb_export_ipcd356, _HKI( "PCB: Export IPC-D-356" ), KIWAY::FACE_PCB, | |||
|               JOB_EXPORT_PCB_IPCD356 ); | |||
| @ -0,0 +1,40 @@ | |||
| /* | |||
|  * This program source code file is part of KiCad, a free EDA CAD application. | |||
|  * | |||
|  * Copyright (C) 2025 Connor Goss <connor.goss@acroname.com> | |||
|  * Copyright The KiCad Developers, see AUTHORS.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 as published by the | |||
|  * Free Software Foundation, either version 3 of the License, or (at your | |||
|  * option) any later version. | |||
|  * | |||
|  * This program is distributed in the hope that it will be useful, but | |||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | |||
|  * General Public License for more details. | |||
|  * | |||
|  * You should have received a copy of the GNU General Public License along | |||
|  * with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
|  */ | |||
| 
 | |||
| #ifndef JOB_EXPORT_PCB_IPCD356_H | |||
| #define JOB_EXPORT_PCB_IPCD356_H | |||
| 
 | |||
| #include <kicommon.h> | |||
| #include <wx/string.h> | |||
| #include "job.h" | |||
| 
 | |||
| class KICOMMON_API JOB_EXPORT_PCB_IPCD356 : public JOB | |||
| { | |||
| public: | |||
|     JOB_EXPORT_PCB_IPCD356(); | |||
|     wxString GetDefaultDescription() const override; | |||
|     wxString GetSettingsDialogTitle() const override; | |||
| 
 | |||
|     void SetDefaultOutputPath( const wxString& aReferenceName ); | |||
| 
 | |||
|     wxString m_filename; | |||
| }; | |||
| 
 | |||
| #endif | |||
| @ -0,0 +1,60 @@ | |||
| /*
 | |||
|  * This program source code file is part of KiCad, a free EDA CAD application. | |||
|  * | |||
|  * Copyright (C) 2025 Connor Goss <connor.goss@acroname.com> | |||
|  * Copyright The KiCad Developers, see AUTHORS.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 as published by the | |||
|  * Free Software Foundation, either version 3 of the License, or (at your | |||
|  * option) any later version. | |||
|  * | |||
|  * This program is distributed in the hope that it will be useful, but | |||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | |||
|  * General Public License for more details. | |||
|  * | |||
|  * You should have received a copy of the GNU General Public License along | |||
|  * with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |||
|  */ | |||
| 
 | |||
| #include "command_pcb_export_ipcd356.h"
 | |||
| #include <cli/exit_codes.h>
 | |||
| #include "jobs/job_export_pcb_ipcd356.h"
 | |||
| #include <kiface_base.h>
 | |||
| #include <string_utils.h>
 | |||
| #include <wx/crt.h>
 | |||
| 
 | |||
| #include <macros.h>
 | |||
| #include <wx/tokenzr.h>
 | |||
| 
 | |||
| #include <locale_io.h>
 | |||
| 
 | |||
| CLI::PCB_EXPORT_IPCD356_COMMAND::PCB_EXPORT_IPCD356_COMMAND() : PCB_EXPORT_BASE_COMMAND( "ipcd356" ) | |||
| { | |||
|     m_argParser.add_description( std::string( "Generate IPC-D-356 netlist file" ) ); | |||
| } | |||
| 
 | |||
| 
 | |||
| int CLI::PCB_EXPORT_IPCD356_COMMAND::doPerform( KIWAY& aKiway ) | |||
| { | |||
|     int exitCode = PCB_EXPORT_BASE_COMMAND::doPerform( aKiway ); | |||
| 
 | |||
|     if( exitCode != EXIT_CODES::OK ) | |||
|         return exitCode; | |||
| 
 | |||
|     std::unique_ptr<JOB_EXPORT_PCB_IPCD356> ipcd356Job( new JOB_EXPORT_PCB_IPCD356() ); | |||
| 
 | |||
|     ipcd356Job->m_filename = m_argInput; | |||
|     ipcd356Job->SetConfiguredOutputPath( m_argOutput ); | |||
| 
 | |||
|     if( !wxFile::Exists( ipcd356Job->m_filename ) ) | |||
|     { | |||
|         wxFprintf( stderr, _( "Board file does not exist or is not accessible\n" ) ); | |||
|         return EXIT_CODES::ERR_INVALID_INPUT_FILE; | |||
|     } | |||
| 
 | |||
|     exitCode = aKiway.ProcessJob( KIWAY::FACE_PCB, ipcd356Job.get() ); | |||
| 
 | |||
|     return exitCode; | |||
| } | |||
| @ -0,0 +1,40 @@ | |||
| /* | |||
|  * This program source code file is part of KiCad, a free EDA CAD application. | |||
|  * | |||
|  * Copyright (C) 2025 Connor Goss <connor.goss@acroname.com> | |||
|  * Copyright The KiCad Developers, see AUTHORS.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 as published by the | |||
|  * Free Software Foundation, either version 3 of the License, or (at your | |||
|  * option) any later version. | |||
|  * | |||
|  * This program is distributed in the hope that it will be useful, but | |||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | |||
|  * General Public License for more details. | |||
|  * | |||
|  * You should have received a copy of the GNU General Public License along | |||
|  * with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
|  */ | |||
| 
 | |||
| #ifndef COMMAND_EXPORT_PCB_IPCD356_H | |||
| #define COMMAND_EXPORT_PCB_IPCD356_H | |||
| 
 | |||
| #include "command_pcb_export_base.h" | |||
| 
 | |||
| 
 | |||
| namespace CLI | |||
| { | |||
| 
 | |||
| class PCB_EXPORT_IPCD356_COMMAND : public PCB_EXPORT_BASE_COMMAND | |||
| { | |||
| public: | |||
|     PCB_EXPORT_IPCD356_COMMAND(); | |||
| 
 | |||
| protected: | |||
|     int doPerform( KIWAY& aKiway ) override; | |||
| }; | |||
| } // namespace CLI | |||
| 
 | |||
| #endif | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue