83#include <wx/wfstream.h>
84#include <wx/zipstrm.h>
111 m_cliBoard( nullptr )
114 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
121 wxCHECK( svgJob && editFrame,
false );
128 [](
JOB* job, wxWindow* aParent ) ->
bool
132 wxCHECK( renderJob,
false );
138 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
145 wxCHECK( svgJob && editFrame,
false );
152 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
159 wxCHECK( gencadJob && editFrame,
false );
165 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
172 wxCHECK( dxfJob && editFrame,
false );
178 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
185 wxCHECK( pdfJob && editFrame,
false );
191 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
198 wxCHECK( psJob && editFrame,
false );
205 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
212 wxCHECK( gJob && editFrame,
false );
219 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
226 wxCHECK( gJob && editFrame,
false );
234 m_reporter->
Report(
_(
"Plotting to HPGL is no longer supported as of KiCad 10.0.\n" ),
238 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
243 wxCHECK( editFrame,
false );
246 _(
"Plotting to HPGL is no longer supported as of KiCad 10.0." ) );
251 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
258 wxCHECK( drillJob && editFrame,
false );
264 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
271 wxCHECK( posJob && editFrame,
false );
278 [](
JOB* job, wxWindow* aParent ) ->
bool
284 [](
JOB* job, wxWindow* aParent ) ->
bool
289 [](
JOB* job, wxWindow* aParent ) ->
bool
293 wxCHECK( drcJob,
false );
300 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
307 wxCHECK( ipcJob && editFrame,
false );
314 [](
JOB* job, wxWindow* aParent ) ->
bool
320 [aKiway](
JOB* job, wxWindow* aParent ) ->
bool
327 wxCHECK( odbJob && editFrame,
false );
337 BOARD* brd =
nullptr;
341 wxString pcbPath = aPath;
343 if( pcbPath.IsEmpty() )
348 pcbPath =
path.GetFullPath();
377 std::map<wxString, LSET> layerUserMasks;
378 std::map<wxString, LSET> layerMasks;
379 std::map<wxString, LSET> layerGuiMasks;
414 [&](
const LSET& layerSet )
417 layerMask.push_back( layer );
420 if( !aLayerString.IsEmpty() )
422 wxStringTokenizer layerTokens( aLayerString,
"," );
424 while( layerTokens.HasMoreTokens() )
426 std::string token =
TO_UTF8( layerTokens.GetNextToken() );
428 if( layerUserMasks.contains( token ) )
429 pushLayers( layerUserMasks.at( token ) );
430 else if( layerMasks.count( token ) )
431 pushLayers( layerMasks.at( token ) );
432 else if( layerGuiMasks.count( token ) )
433 pushLayers( layerGuiMasks.at( token ) );
435 m_reporter->
Report( wxString::Format(
_(
"Invalid layer name \"%s\"\n" ), token ) );
447 if( aStepJob ==
nullptr )
462 fn.SetName( fn.GetName() );
559 if( !stepExporter.
Export() )
571 if( aRenderJob ==
nullptr )
607 fn.SetName( wxString::Format(
"%s-%d", fn.GetName(),
static_cast<int>( aRenderJob->
m_side ) ) );
692 lightColor, lightColor, lightColor, lightColor,
693 lightColor, lightColor, lightColor, lightColor,
699 sideElevation, sideElevation, sideElevation, sideElevation,
700 -sideElevation, -sideElevation, -sideElevation, -sideElevation,
704 45, 135, 225, 315, 45, 135, 225, 315,
708 boardAdapter.
m_Cfg = &cfg;
720 static std::map<JOB_PCB_RENDER::SIDE, VIEW3D_TYPE> s_viewCmdMap = {
730 : PROJECTION_TYPE::ORTHO;
768 uint8_t* rgbaBuffer = raytrace.
GetBuffer();
770 bool success = !!rgbaBuffer;
774 const unsigned int wxh = realSize.x * realSize.y;
776 unsigned char* rgbBuffer = (
unsigned char*) malloc( wxh * 3 );
777 unsigned char* alphaBuffer = (
unsigned char*) malloc( wxh );
779 unsigned char* rgbaPtr = rgbaBuffer;
780 unsigned char* rgbPtr = rgbBuffer;
781 unsigned char* alphaPtr = alphaBuffer;
783 for(
int y = 0; y < realSize.y; y++ )
785 for(
int x = 0; x < realSize.x; x++ )
787 rgbPtr[0] = rgbaPtr[0];
788 rgbPtr[1] = rgbaPtr[1];
789 rgbPtr[2] = rgbaPtr[2];
790 alphaPtr[0] = rgbaPtr[3];
798 wxImage
image( realSize );
799 image.SetData( rgbBuffer );
800 image.SetAlpha( alphaBuffer );
803 image.SetOption( wxIMAGE_OPTION_QUALITY, 90 );
805 : wxBITMAP_TYPE_JPEG );
825 if( aSvgJob ==
nullptr )
840 fn.SetName( fn.GetName() );
876 std::optional<wxString> layerName;
877 std::optional<wxString> sheetName;
878 std::optional<wxString> sheetPath;
894 layerName, sheetName, sheetPath ) )
907 if( aDxfJob ==
nullptr )
937 fn.SetName( fn.GetName() );
957 std::optional<wxString> layerName;
958 std::optional<wxString> sheetName;
959 std::optional<wxString> sheetPath;
975 layerName, sheetName, sheetPath ) )
986 bool plotAllLayersOneFile =
false;
989 if( pdfJob ==
nullptr )
1009 plotAllLayersOneFile =
true;
1020 fn.SetName( fn.GetName() );
1030 if( plotAllLayersOneFile )
1043 std::optional<wxString> layerName;
1044 std::optional<wxString> sheetName;
1045 std::optional<wxString> sheetPath;
1047 if( plotAllLayersOneFile )
1064 layerName, sheetName, sheetPath ) )
1077 if( psJob ==
nullptr )
1109 fn.SetName( fn.GetName() );
1129 std::optional<wxString> layerName;
1130 std::optional<wxString> sheetName;
1131 std::optional<wxString> sheetPath;
1148 layerName, sheetName, sheetPath ) )
1162 if( aGerberJob ==
nullptr )
1183 bool hasLayerListSpecified =
false;
1190 hasLayerListSpecified =
true;
1233 plotSequence.push_back( layer );
1239 if(
find( plotSequence.begin(), plotSequence.end(), layer_all ) != plotSequence.end() )
1242 plotSequence.push_back( layer_all );
1253 plotOpts = boardPlotOptions;
1263 wxString fullname = fn.GetFullName();
1271 jobfile_writer.
AddGbrFile( layer, fullname );
1287 fn.GetFullPath(), sheetName, sheetPath );
1292 m_reporter->
Report( wxString::Format(
_(
"Plotted to '%s'.\n" ), fn.GetFullPath() ),
1300 m_reporter->
Report( wxString::Format(
_(
"Failed to plot to '%s'.\n" ), fn.GetFullPath() ),
1325 if( aGencadJob ==
nullptr )
1330 if( brd ==
nullptr )
1349 fn.SetName( fn.GetName() );
1365 m_reporter->
Report( wxString::Format(
_(
"Failed to create file '%s'.\n" ), outPath ),
1382 if( aGerberJob ==
nullptr )
1409 fn.SetName( fn.GetName() );
1455 m_reporter->
Report( wxString::Format(
_(
"Failed to plot to '%s'.\n" ), outPath ),
1473 if( aDrillJob ==
nullptr )
1491 std::unique_ptr<GENDRILL_WRITER_BASE> drillWriter;
1494 drillWriter = std::make_unique<EXCELLON_WRITER>( brd );
1496 drillWriter = std::make_unique<GERBER_WRITER>( brd );
1546 if( excellonWriter ==
nullptr )
1567 if( gerberWriter ==
nullptr )
1592 if( aPosJob ==
nullptr )
1605 fn.SetName( fn.GetName() );
1628 wxFileName fn( outPath );
1629 wxString baseName = fn.GetName();
1631 auto exportPlaceFile =
1632 [&](
bool frontSide,
bool backSide,
const wxString& curr_outPath ) ->
bool
1634 FILE* file = wxFopen( curr_outPath, wxS(
"wt" ) );
1635 wxCHECK( file,
false );
1649 fputs( data.c_str(), file );
1662 if( exportPlaceFile(
true,
false, fn.GetFullPath() ) )
1664 m_reporter->
Report( wxString::Format(
_(
"Wrote front position data to '%s'.\n" ),
1680 if( exportPlaceFile(
false,
true, fn.GetFullPath() ) )
1682 m_reporter->
Report( wxString::Format(
_(
"Wrote back position data to '%s'.\n" ),
1709 if( exportPlaceFile( front, back, fn.GetFullPath() ) )
1727 wxString outPath_base = outPath;
1737 m_reporter->
Report( wxString::Format(
_(
"Wrote front position data to '%s'.\n" ), outPath ),
1753 outPath = outPath_base;
1760 m_reporter->
Report( wxString::Format(
_(
"Wrote back position data to '%s'.\n" ), outPath ),
1780 if( upgradeJob ==
nullptr )
1797 m_reporter->
Report(
_(
"Output path must be specified to convert legacy and non-KiCad libraries\n" ),
1807 m_reporter->
Report(
_(
"Footprint library path does not exist or is not accessible\n" ),
1828 bool shouldSave = upgradeJob->
m_force;
1874 if( svgJob ==
nullptr )
1907 bool singleFpPlotted =
false;
1909 for(
const auto& [fpName, fpCacheEntry] : fpLib.
GetFootprints() )
1923 singleFpPlotted =
true;
1926 exitCode =
doFpExportSvg( svgJob, fpCacheEntry->GetFootprint().get() );
1932 if( !svgJob->
m_footprint.IsEmpty() && !singleFpPlotted )
1934 m_reporter->
Report(
_(
"The given footprint could not be found to export." ) + wxS(
"\n" ),
1946 std::unique_ptr<BOARD> brd;
1949 brd->SynchronizeProperties();
1962 pad->SetLocalRatsnestVisible(
false );
1963 pad->SetNetCode( 0 );
1969 brd->Add( fp, ADD_MODE::INSERT,
true );
1971 wxFileName outputFile;
1978 outputFile.GetFullPath() ),
1997 if( !plotter.
Plot( outputFile.GetFullPath(),
2002 wxEmptyString, wxEmptyString,
2017 if( drcJob ==
nullptr )
2032 fn.SetName( fn.GetName() + wxS(
"-drc" ) );
2057 default: units = EDA_UNITS::MM;
break;
2061 std::unique_ptr<NETLIST>
netlist = std::make_unique<NETLIST>();
2070 bool checkParity = drcJob->
m_parity;
2071 std::string netlist_str;
2075 wxString annotateMsg =
_(
"Schematic parity tests require a fully annotated schematic." );
2076 netlist_str = annotateMsg;
2088 wxFileName schematicPath( drcJob->
m_filename );
2091 if( !schematicPath.Exists() )
2094 if( !schematicPath.Exists() )
2096 m_reporter->
Report(
_(
"Failed to fetch schematic netlist for parity tests.\n" ),
2098 checkParity =
false;
2102 typedef bool ( *NETLIST_FN_PTR )(
const wxString&, std::string& );
2104 NETLIST_FN_PTR netlister =
2106 ( *netlister )( schematicPath.GetFullPath(), netlist_str );
2110 if( netlist_str == annotateMsg )
2113 checkParity =
false;
2122 _(
"Eeschema netlist" ) );
2129 m_reporter->
Report(
_(
"Failed to fetch schematic netlist for parity tests.\n" ),
2131 checkParity =
false;
2134 drcEngine->SetSchematicNetlist(
netlist.get() );
2138 drcEngine->SetViolationHandler(
2139 [&](
const std::shared_ptr<DRC_ITEM>& aItem,
VECTOR2I aPos,
int aLayer,
2143 commit.
Add( marker );
2149 drcEngine->ClearViolationHandler();
2156 std::shared_ptr<DRC_ITEMS_PROVIDER> markersProvider = std::make_shared<DRC_ITEMS_PROVIDER>(
2159 std::shared_ptr<DRC_ITEMS_PROVIDER> ratsnestProvider =
2162 std::shared_ptr<DRC_ITEMS_PROVIDER> fpWarningsProvider =
2165 markersProvider->SetSeverities( drcJob->
m_severity );
2166 ratsnestProvider->SetSeverities( drcJob->
m_severity );
2167 fpWarningsProvider->SetSeverities( drcJob->
m_severity );
2170 markersProvider->GetCount() ),
2173 ratsnestProvider->GetCount() ),
2178 m_reporter->
Report( wxString::Format(
_(
"Found %d schematic parity issues\n" ),
2179 fpWarningsProvider->GetCount() ),
2183 DRC_REPORT reportWriter( brd, units, markersProvider, ratsnestProvider, fpWarningsProvider );
2185 bool wroteReport =
false;
2194 m_reporter->
Report( wxString::Format(
_(
"Unable to save DRC report to %s\n" ), outPath ),
2199 m_reporter->
Report( wxString::Format(
_(
"Saved DRC Report to %s\n" ), outPath ),
2204 if( markersProvider->GetCount() > 0 || ratsnestProvider->GetCount() > 0
2205 || fpWarningsProvider->GetCount() > 0 )
2219 if( job ==
nullptr )
2232 fn.SetName( fn.GetName() );
2246 std::map<std::string, UTF8> props;
2248 props[
"sigfig"] = wxString::Format(
"%d", job->
m_precision );
2256 wxString tempFile = wxFileName::CreateTempFileName( wxS(
"pcbnew_ipc" ) );
2261 pi->SaveBoard( tempFile, brd, &props );
2265 m_reporter->
Report( wxString::Format(
_(
"Error generating IPC-2581 file '%s'.\n%s" ),
2270 wxRemoveFile( tempFile );
2277 wxFileName tempfn = outPath;
2279 wxFileName zipfn = tempFile;
2280 zipfn.SetExt(
"zip" );
2283 wxFFileOutputStream fnout( zipfn.GetFullPath() );
2284 wxZipOutputStream
zip( fnout );
2285 wxFFileInputStream fnin( tempFile );
2287 zip.PutNextEntry( tempfn.GetFullName() );
2291 wxRemoveFile( tempFile );
2292 tempFile = zipfn.GetFullPath();
2296 if( !wxRenameFile( tempFile, outPath ) )
2298 m_reporter->
Report( wxString::Format(
_(
"Error generating IPC-2581 file '%s'.\n"
2299 "Failed to rename temporary file '%s." ),
2313 if( job ==
nullptr )
2326 fn.SetName( fn.GetName() );
2342 bool success = exporter.
Write( outPath );
2361 if( job ==
nullptr )
2383 fn.SetName( fn.GetName() + wxS(
"-odb" ) );
2421 return drawingSheet;
2428 if( aSheetPath.IsEmpty() )
2432 [&](
const wxString&
path ) ->
bool
2448 + wxS(
"\n" ) + msg + wxS(
"\n" ),
2456 if( loadSheet( aSheetPath ) )
constexpr EDA_IU_SCALE pcbIUScale
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
#define RANGE_SCALE_3D
This defines the range that all coord will have to be rendered.
static wxString m_DrawingSheetFileName
the name of the drawing sheet file, or empty to use the default drawing sheet
Helper class to handle information needed to display 3D board.
double BiuTo3dUnits() const noexcept
Board integer units To 3D units.
bool m_IsPreviewer
true if we're in a 3D preview panel, false for the standard 3D viewer
void SetBoard(BOARD *aBoard) noexcept
Set current board to be rendered.
EDA_3D_VIEWER_SETTINGS * m_Cfg
std::map< int, COLOR4D > m_ColorOverrides
allows to override color scheme colors
void Set3dCacheManager(S3D_CACHE *aCacheMgr) noexcept
Update the cache manager pointer.
virtual void Push(const wxString &aMessage=wxEmptyString, int aCommitFlags=0) override
Execute the changes.
std::shared_ptr< DRC_ENGINE > m_DRCEngine
const VECTOR2I & GetAuxOrigin() const
Information pertinent to a Pcbnew printed circuit board.
EMBEDDED_FILES * GetEmbeddedFiles() override
const PAGE_INFO & GetPageSettings() const
void RecordDRCExclusions()
Scan existing markers and record data from any that are Excluded.
TITLE_BLOCK & GetTitleBlock()
BOX2I ComputeBoundingBox(bool aBoardEdgesOnly=false) const
Calculate the bounding box containing all board items (or board edge segments).
const std::map< wxString, wxString > & GetProperties() const
const wxString & GetFileName() const
std::vector< PCB_MARKER * > ResolveDRCExclusions(bool aCreateMarkers)
Rebuild DRC markers from the serialized data in BOARD_DESIGN_SETTINGS.
const PCB_PLOT_PARAMS & GetPlotOptions() const
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
PROJECT * GetProject() const
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
const LSET & GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
void SynchronizeProperties()
Copy the current project's text variables into the boards property cache.
void DeleteMARKERs()
Delete all MARKERS from the board.
constexpr const Vec GetCenter() const
void SetProjection(PROJECTION_TYPE aProjection)
void RotateY_T1(float aAngleInRadians)
bool Zoom_T1(float aFactor)
bool SetCurWindowSize(const wxSize &aSize)
Update the windows size of the camera.
bool ViewCommand_T1(VIEW3D_TYPE aRequestedView)
void RotateX_T1(float aAngleInRadians)
void SetLookAtPos_T1(const SFVEC3F &aLookAtPos)
const SFVEC3F & GetLookAtPos_T1() const
void RotateZ_T1(float aAngleInRadians)
COMMIT & Add(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr)
Add a new item to the model.
static void GenerateODBPPFiles(const JOB_EXPORT_PCB_ODB &aJob, BOARD *aBoard, PCB_EDIT_FRAME *aParentFrame=nullptr, PROGRESS_REPORTER *aProgressReporter=nullptr, REPORTER *aErrorReporter=nullptr)
A dialog to set the plot options and create plot files in various formats.
bool WriteJsonReport(const wxString &aFullFileName)
bool WriteTextReport(const wxString &aFullFileName)
Helper to handle drill precision format in excellon files.
bool LoadDrawingSheet(const wxString &aFullFileName, wxString *aMsg, bool aAppend=false)
Populate the list with a custom layout or the default layout if no custom layout is available.
static DS_DATA_MODEL & GetTheInstance()
Return the instance of DS_DATA_MODEL used in the application.
void SetSheetPath(const std::string &aSheetPath)
Set the sheet path displayed in the title block.
void SetSheetName(const std::string &aSheetName)
Set the sheet name displayed in the title block.
void SetIsFirstPage(bool aIsFirstPage)
Change if this is first page.
void SetFileName(const std::string &aFileName)
Set the file name displayed in the title block.
std::vector< LAYER_PRESET_3D > m_LayerPresets
void SetFlags(EDA_ITEM_FLAGS aMask)
virtual void SetParent(EDA_ITEM *aParent)
Create Excellon drill, drill map, and drill report files.
void SetFormat(bool aMetric, ZEROS_FMT aZerosFmt=DECIMAL_FORMAT, int aLeftDigits=0, int aRightDigits=0)
Initialize internal parameters to match the given format.
bool CreateDrillandMapFilesSet(const wxString &aPlotDirectory, bool aGenDrill, bool aGenMap, REPORTER *aReporter=nullptr)
Create the full set of Excellon drill file for the board.
void SetOptions(bool aMirror, bool aMinimalHeader, const VECTOR2I &aOffset, bool aMerge_PTH_NPTH)
Initialize internal parameters to match drill options.
void SetRouteModeForOvalHoles(bool aUseRouteModeForOvalHoles)
bool m_IncludeUnspecified
Wrapper to expose an API for writing VRML files, without exposing all the many structures used in the...
bool ExportVRML_File(PROJECT *aProject, wxString *aMessages, const wxString &aFullFileName, double aMMtoWRMLunit, bool aIncludeUnspecified, bool aIncludeDNP, bool aExport3DFiles, bool aUseRelativePaths, const wxString &a3D_Subdir, double aXRef, double aYRef)
Exports the board and its footprint shapes 3D (vrml files only) as a vrml file.
Provide an extensible class to resolve 3D model paths.
wxString ResolvePath(const wxString &aFileName, const wxString &aWorkingPath, std::vector< const EMBEDDED_FILES * > aEmbeddedFilesStack)
Determine the full path of the given file name.
void SetProgramBase(PGM_BASE *aBase)
Set a pointer to the application's PGM_BASE instance used to extract the local env vars.
bool SetProject(const PROJECT *aProject, bool *flgChanged=nullptr)
Set the current KiCad project directory as the first entry in the model path list.
void SetPath(const wxString &aPath)
void Save(FOOTPRINT *aFootprintFilter=nullptr)
Save the footprint cache or a single footprint from it to disk.
boost::ptr_map< wxString, FP_CACHE_ENTRY > & GetFootprints()
Export board to GenCAD file format.
void UseIndividualShapes(bool aUnique)
Make pad shapes unique.
void UsePinNamesUnique(bool aUnique)
Make pin names unique.
void StoreOriginCoordsInFile(bool aStore)
Store origin coordinate in GenCAD file.
void FlipBottomPads(bool aFlip)
Flip pad shapes on the bottom side.
void SetPlotOffet(VECTOR2I aOffset)
Set the coordinates offset when exporting items.
bool WriteFile(const wxString &aFullFileName)
Export a GenCAD file.
void SetMapFileFormat(PLOT_FORMAT aMapFmt)
Initialize the format for the drill map file.
GERBER_JOBFILE_WRITER is a class used to create Gerber job file a Gerber job file stores info to make...
bool CreateJobFile(const wxString &aFullFilename)
Creates a Gerber job file.
void AddGbrFile(PCB_LAYER_ID aLayer, wxString &aFilename)
add a gerber file name and type in job file list
virtual bool EndPlot() override
Used to create Gerber drill files.
bool CreateDrillandMapFilesSet(const wxString &aPlotDirectory, bool aGenDrill, bool aGenMap, bool aGenTenting, REPORTER *aReporter=nullptr)
Create the full set of Excellon drill file for the board filenames are computed from the board name,...
void SetOptions(const VECTOR2I &aOffset)
Initialize internal parameters to match drill options.
void SetFormat(int aRightDigits=6)
Initialize internal parameters to match the given format.
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
virtual const wxString What() const
A composite of Problem() and Where()
Wrapper to expose an API for writing IPC-D356 files.
bool Write(const wxString &aFilename)
Generates and writes the netlist to a given path.
void Register(const std::string &aJobTypeName, std::function< int(JOB *job)> aHandler, std::function< bool(JOB *job, wxWindow *aParent)> aConfigHandler)
PROGRESS_REPORTER * m_progressReporter
JOB_EXPORT_PCB_3D::FORMAT m_format
EXPORTER_STEP_PARAMS m_3dparams
Despite the name; also used for other formats.
ZEROS_FORMAT m_zeroFormat
bool m_excellonOvalDrillRoute
DRILL_ORIGIN m_drillOrigin
bool m_excellonCombinePTHNPTH
bool m_excellonMinimalHeader
bool m_useIndividualShapes
bool m_useBoardPlotParams
IPC2581_VERSION m_version
ODB_COMPRESSION m_compressionMode
@ ALL_LAYERS_ONE_FILE
DEPRECATED MODE.
GEN_MODE m_pdfGenMode
The background color specified in a hex string.
LSEQ m_plotOnAllLayersSequence
Used by SVG & PDF.
std::optional< wxString > m_argLayers
std::optional< wxString > m_argCommonLayers
LSEQ m_plotLayerSequence
Layers to include on all individual layer prints.
bool m_useDrillPlaceFileOrigin
bool m_excludeFootprintsWithTh
wxString m_outputLibraryPath
bool m_reportAllTrackErrors
VECTOR3D m_lightBottomIntensity
VECTOR3D m_lightTopIntensity
VECTOR3D m_lightCameraIntensity
bool m_proceduralTextures
VECTOR3D m_lightSideIntensity
std::string m_appearancePreset
bool m_exitCodeViolations
An simple container class that lets us dispatch output jobs to kifaces.
void AddOutput(wxString aOutputPath)
wxString GetFullOutputPath(PROJECT *aProject) const
Returns the full output path for the job, taking into account the configured output path,...
wxString GetConfiguredOutputPath() const
Returns the configured output path for the job.
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock)
void SetWorkingOutputPath(const wxString &aPath)
Sets a transient output path for the job, it takes priority over the configured output path when GetF...
const std::map< wxString, wxString > & GetVarOverrides() const
Read the new s-expression based KiCad netlist format.
virtual void LoadNetlist() override
Load the contents of the netlist file into aNetlist.
A color representation with 4 components: red, green, blue, alpha.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
virtual KIFACE * KiFACE(FACE_T aFaceId, bool doLoad=true)
Return the KIFACE* given a FACE_T.
virtual void ExpressMail(FRAME_T aDestination, MAIL_T aCommand, std::string &aPayload, wxWindow *aSource=nullptr)
Send aPayload to aDestination from aSource.
const UTF8 & GetLibItemName() const
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown.
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
LSET is a set of PCB_LAYER_IDs.
LSEQ UIOrder() const
Return the copper, technical and user layers in the order shown in layer widget.
LSEQ SeqStackupForPlotting() const
Return the sequence that is typical for a bottom-to-top stack-up.
static LSET AllNonCuMask()
Return a mask holding all layer minus CU layers.
static const LSET & AllLayersMask()
static LSET AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
static const LSET & InternalCuMask()
Return a complete set of internal copper layers which is all Cu layers except F_Cu and B_Cu.
static wxString Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
static bool EnsurePathExists(const wxString &aPath, bool aPathToFile=false)
Attempts to create a given path if it does not exist.
int JobExportStep(JOB *aJob)
int JobExportPs(JOB *aJob)
int JobExportPos(JOB *aJob)
int JobExportFpSvg(JOB *aJob)
int JobExportOdb(JOB *aJob)
int JobExportDrc(JOB *aJob)
int JobExportFpUpgrade(JOB *aJob)
int JobExportGerber(JOB *aJob)
DS_PROXY_VIEW_ITEM * getDrawingSheetProxyView(BOARD *aBrd)
int JobExportDxf(JOB *aJob)
int JobExportPdf(JOB *aJob)
int JobExportDrill(JOB *aJob)
int JobExportSvg(JOB *aJob)
void loadOverrideDrawingSheet(BOARD *brd, const wxString &aSheetPath)
PCBNEW_JOBS_HANDLER(KIWAY *aKiway)
int JobExportGerbers(JOB *aJob)
int JobExportGencad(JOB *aJob)
BOARD * getBoard(const wxString &aPath=wxEmptyString)
int JobExportIpc2581(JOB *aJob)
LSEQ convertLayerArg(wxString &aLayerString, BOARD *aBoard) const
int JobExportRender(JOB *aJob)
int JobExportIpcD356(JOB *aJob)
int doFpExportSvg(JOB_FP_EXPORT_SVG *aSvgJob, const FOOTPRINT *aFootprint)
The main frame for Pcbnew.
A #PLUGIN derivation for saving and loading Pcbnew s-expression formatted files.
static PCB_IO * PluginFind(PCB_FILE_T aFileType)
Return a #PLUGIN which the caller can use to import, export, save, or load design documents.
PCB_FILE_T
The set of file types that the PCB_IO_MGR knows about, and for which there has been a plugin written,...
@ KICAD_SEXP
S-expression Pcbnew file format.
static bool ConvertLibrary(std::map< std::string, UTF8 > *aOldFileProps, const wxString &aOldFilePath, const wxString &aNewFilePath, REPORTER *aReporter)
Convert a schematic symbol library to the latest KiCad format.
static PCB_FILE_T GuessPluginTypeFromLibPath(const wxString &aLibPath, int aCtl=0)
Return a plugin type given a footprint library's libPath.
bool Plot(const wxString &aOutputPath, const LSEQ &aLayersToPlot, const LSEQ &aCommonLayers, bool aUseGerberFileExtensions, bool aOutputPathIsSingle=false, std::optional< wxString > aLayerName=std::nullopt, std::optional< wxString > aSheetName=std::nullopt, std::optional< wxString > aSheetPath=std::nullopt)
static void PlotJobToPlotOpts(PCB_PLOT_PARAMS &aOpts, JOB_EXPORT_PCB_PLOT *aJob, REPORTER &aReporter)
Translate a JOB to PCB_PLOT_PARAMS.
Parameters and options when plotting/printing a board.
LSEQ GetPlotOnAllLayersSequence() const
void SetSkipPlotNPTH_Pads(bool aSkip)
void SetLayerSelection(const LSET &aSelection)
void SetPlotOnAllLayersSequence(LSEQ aSeq)
void SetPlotFrameRef(bool aFlag)
void SetPlotPadNumbers(bool aFlag)
LSET GetLayerSelection() const
void SetMirror(bool aFlag)
bool GetSketchPadsOnFabLayers() const
bool m_PDFSingle
Generate a single PDF file for all layers.
void SetSvgFitPageToBoard(int aSvgFitPageToBoard)
bool GetUseGerberProtelExtensions() const
virtual SETTINGS_MANAGER & GetSettingsManager() const
Used to create Gerber drill files.
const wxString GetPlaceFileName(const wxString &aFullBaseFilename, PCB_LAYER_ID aLayer) const
int CreatePlaceFile(const wxString &aFullFilename, PCB_LAYER_ID aLayer, bool aIncludeBrdEdges, bool aExcludeDNP)
Create an pnp gerber file.
The ASCII format of the kicad place file is:
static wxString DecorateFilename(const wxString &aBaseName, bool aFront, bool aBack)
std::string GenPositionData()
build a string filled with the position data
Base plotter engine class.
virtual bool KeepRefreshing(bool aWait=false)=0
Update the UI (if any).
virtual void AdvancePhase()=0
Use the next available virtual zone of the dialog progress bar.
wxString m_BoardDrawingSheetFile
PcbNew params.
static S3D_CACHE * Get3DCacheManager(PROJECT *aProject, bool updateProjDir=false)
Return a pointer to an instance of the 3D cache manager.
virtual const wxString GetProjectFullName() const
Return the full path and name of the project.
virtual const wxString GetProjectPath() const
Return the full path of the project.
virtual void ApplyTextVars(const std::map< wxString, wxString > &aVarsMap)
Applies the given var map, it will create or update existing vars.
virtual PROJECT_FILE & GetProjectFile() const
bool Redraw(bool aIsMoving, REPORTER *aStatusReporter, REPORTER *aWarningReporter) override
Redraw the view.
wxSize GetRealBufferSize()
void SetCurWindowSize(const wxSize &aSize) override
Before each render, the canvas will tell the render what is the size of its windows,...
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
Report a string with a given severity.
PROJECT & Prj() const
A helper while we are not MDI-capable – return the one and only project.
Is a LINE_READER that reads from a multiline 8 bit wide std::string.
void Pan_T1(const SFVEC3F &aDeltaOffsetInc) override
void SetT0_and_T1_current_T() override
This will set T0 and T1 with the current values.
void Interpolate(float t) override
It will update the matrix to interpolate between T0 and T1 values.
wxString GetDefaultPlotExtension(PLOT_FORMAT aFormat)
Return the default plot extension for a format.
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
This file is part of the common library.
static DRILL_PRECISION precisionListForInches(2, 4)
static DRILL_PRECISION precisionListForMetric(3, 3)
std::function< void(PCB_MARKER *aMarker)> DRC_CUSTOM_MARKER_HANDLER
static constexpr EDA_ANGLE ANGLE_0
#define IS_NEW
New item, just created.
static FILENAME_RESOLVER * resolver
Classes used in drill files, map files and report files generation.
Classes used in drill files, map files and report files generation.
Classes used to generate a Gerber job file in JSON.
Classes used in place file generation.
static const std::string LegacySchematicFileExtension
static const std::string BrepFileExtension
static const std::string JpegFileExtension
static const std::string GerberJobFileExtension
static const std::string GerberFileExtension
static const std::string XaoFileExtension
static const std::string ReportFileExtension
static const std::string GltfBinaryFileExtension
static const std::string PngFileExtension
static const std::string FootprintPlaceFileExtension
static const std::string JsonFileExtension
static const std::string KiCadSchematicFileExtension
static const std::string CsvFileExtension
static const std::string Ipc2581FileExtension
static const std::string GencadFileExtension
static const std::string StlFileExtension
static const std::string IpcD356FileExtension
static const std::string PlyFileExtension
static const std::string StepFileExtension
static const std::string SVGFileExtension
static const std::string VrmlFileExtension
static const std::string ArchiveFileExtension
static const std::string KiCadPcbFileExtension
std::unique_ptr< T > IO_RELEASER
Helper to hold and release an IO_BASE object when exceptions are thrown.
@ KIFACE_NETLIST_SCHEMATIC
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
@ LAYER_3D_BACKGROUND_TOP
@ LAYER_3D_BACKGROUND_BOTTOM
PCB_LAYER_ID
A quick note on layer IDs:
This file contains miscellaneous commonly used macros and functions.
static const int ERR_ARGS
static const int ERR_RC_VIOLATIONS
Rules check violation count was greater than 0.
static const int ERR_INVALID_INPUT_FILE
static const int ERR_INVALID_OUTPUT_CONFLICT
static const int ERR_UNKNOWN
#define SEXPR_BOARD_FILE_VERSION
Current s-expression file format version. 2 was the last legacy format version.
#define CTL_FOR_LIBRARY
Format output for a footprint library instead of clipboard or BOARD.
static DRILL_PRECISION precisionListForInches(2, 4)
static DRILL_PRECISION precisionListForMetric(3, 3)
SETTINGS_MANAGER * GetSettingsManager()
BOARD * CreateEmptyBoard()
Construct a default BOARD with a temporary (no filename) project.
BOARD * LoadBoard(const wxString &aFileName, bool aSetActive)
Loads a board from file This function identifies the file type by extension and determines the correc...
const wxString GetGerberProtelExtension(int aLayer)
void BuildPlotFileName(wxFileName *aFilename, const wxString &aOutputDir, const wxString &aSuffix, const wxString &aExtension)
Complete a plot filename.
PLOTTER * StartPlotBoard(BOARD *aBoard, const PCB_PLOT_PARAMS *aPlotOpts, int aLayer, const wxString &aLayerName, const wxString &aFullFileName, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aPageName=wxT("1"), const wxString &aPageNumber=wxEmptyString, const int aPageCount=1)
Open a new plotfile using the options (and especially the format) specified in the options and prepar...
void PlotBoardLayers(BOARD *aBoard, PLOTTER *aPlotter, const LSEQ &aLayerSequence, const PCB_PLOT_PARAMS &aPlotOptions)
Plot a sequence of board layer IDs.
PGM_BASE & Pgm()
The global program "get" accessor.
PLOT_FORMAT
The set of supported output plot formats.
Plotting engines similar to ps (PostScript, Gerber, svg)
std::vector< FAB_LAYER_COLOR > dummy
MODEL3D_FORMAT_TYPE fileType(const char *aFileName)
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
std::vector< int > raytrace_lightElevation
KIGFX::COLOR4D raytrace_lightColorCamera
bool raytrace_post_processing
std::vector< KIGFX::COLOR4D > raytrace_lightColor
KIGFX::COLOR4D raytrace_lightColorBottom
bool raytrace_reflections
bool differentiate_plated_copper
std::vector< int > raytrace_lightAzimuth
bool raytrace_refractions
bool raytrace_procedural_textures
int raytrace_recursivelevel_refractions
KIGFX::COLOR4D raytrace_lightColorTop
bool raytrace_anti_aliasing
constexpr double IUTomm(int iu) const
constexpr int mmToIU(double mm) const
Implement a participant in the KIWAY alchemy.
Declaration for a track ball camera.
double DEG2RAD(double deg)
VECTOR2< int32_t > VECTOR2I
Definition of file extensions used in Kicad.