PCB calculator: add galvanic corrosion chart

This commit is contained in:
Fabien Corona 2022-03-30 00:23:46 +02:00 committed by Jon Evans
parent 528fe4d371
commit c6090a44d6
7 changed files with 602 additions and 0 deletions

View File

@ -22,6 +22,8 @@ set( PCB_CALCULATOR_SRCS
calculator_panels/panel_cable_size_base.cpp
calculator_panels/panel_color_code.cpp
calculator_panels/panel_color_code_base.cpp
calculator_panels/panel_corrosion.cpp
calculator_panels/panel_corrosion_base.cpp
calculator_panels/panel_electrical_spacing.cpp
calculator_panels/panel_electrical_spacing_base.cpp
calculator_panels/panel_eserie.cpp

View File

@ -0,0 +1,153 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 1992-2022 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 <calculator_panels/panel_corrosion.h>
#include <pcb_calculator_settings.h>
#define CORROSION_VOLTAGE_1 0.3
#define CORROSION_VOLTAGE_2 0.5
#define CORROSION_VOLTAGE_3 0.8
CORROSION_TABLE_ENTRY::CORROSION_TABLE_ENTRY( wxString aName, wxString aSymbol, double aPot )
{
m_potential = aPot;
m_name = aName;
m_symbol = aSymbol;
}
PANEL_CORROSION::PANEL_CORROSION( wxWindow* parent, wxWindowID id, const wxPoint& pos,
const wxSize& size, long style, const wxString& name ) :
PANEL_CORROSION_BASE( parent, id, pos, size, style, name )
{
m_entries.clear();
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Platinum" ), "Pt", -0.57 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Gold" ), "Au", -0.44 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Titanium" ), "Ti", -0.32 ) );
m_entries.push_back(
CORROSION_TABLE_ENTRY( wxT( "Stainless steel 18-9" ), "X8CrNiS18-9", -0.32 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Silver" ), "Ag", -0.22 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Mercury" ), "Hg", -0.22 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Nickel" ), "Ni", -0.14 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Copper" ), "Cu", 0.0 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Copper-Aluminium" ), "CuAl10", 0.03 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Brass" ), "CuZn39Pb", 0.08 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Bronze" ), "CuSn12", 0.2 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Tin" ), "CuSn12", 0.23 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Lead" ), "Pb", 0.27 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Aluminium-Copper" ), "AlCu4Mg", 0.37 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Cast iron" ), "", 0.38 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Carbon steel" ), "", 0.43 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Aluminium" ), "Al", 0.52 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Cadmium" ), "Al", 0.53 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Iron" ), "Fe", 0.535 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Chrome" ), "Fe", 0.63 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Zinc" ), "Zn", 0.83 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Manganese" ), "Mn", 0.9 ) );
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Magnesium" ), "Mg", 1.38 ) );
// Resize the table
m_table->DeleteCols( 0, m_table->GetNumberCols() );
m_table->DeleteRows( 0, m_table->GetNumberRows() );
m_table->AppendCols( m_entries.size() );
m_table->AppendRows( m_entries.size() );
// Fill the table with data
int i = 0;
wxColour color_ok( 189, 255, 189 );
wxColour color_w1( 255, 255, 157 );
wxColour color_w2( 250, 191, 9 );
wxColour color_w3( 255, 83, 83 );
wxColour color_text( 0, 0, 0 );
wxString value;
for( CORROSION_TABLE_ENTRY entryA : m_entries )
{
int j = 0;
wxString label = entryA.m_name;
if( entryA.m_symbol.size() > 0 )
{
label += " (" + entryA.m_symbol + ")";
}
m_table->SetRowLabelValue( i, label );
m_table->SetColLabelValue( i, label );
for( CORROSION_TABLE_ENTRY entryB : m_entries )
{
double diff = entryA.m_potential - entryB.m_potential;
value = "";
value << diff * 1000; // Let's display it in mV instead of V.
m_table->SetCellValue( i, j, value );
// Overide anything that could come from a dark them
m_table->SetCellTextColour( i, j, color_text );
if( abs( diff ) > CORROSION_VOLTAGE_3 )
{
m_table->SetCellBackgroundColour( i, j, color_w3 );
}
else if( abs( diff ) > CORROSION_VOLTAGE_2 )
{
m_table->SetCellBackgroundColour( i, j, color_w2 );
}
else if( abs( diff ) > CORROSION_VOLTAGE_1 )
{
m_table->SetCellBackgroundColour( i, j, color_w1 );
}
else
{
m_table->SetCellBackgroundColour( i, j, color_ok );
}
j++;
}
i++;
}
m_table->SetColLabelTextOrientation( wxVERTICAL );
m_table->SetColLabelSize( wxGRID_AUTOSIZE );
m_table->SetRowLabelSize( wxGRID_AUTOSIZE );
m_table->AutoSizeColumns();
m_table->AutoSizeRows();
}
PANEL_CORROSION::~PANEL_CORROSION()
{
}
void PANEL_CORROSION::ThemeChanged()
{
}
void PANEL_CORROSION::LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg )
{
}
void PANEL_CORROSION::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg )
{
}

View File

@ -0,0 +1,55 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 1992-2022 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 PANEL_CORROSION_H
#define PANEL_CORROSION_H
#include "panel_corrosion_base.h"
#include <vector>
class PCB_CALCULATOR_SETTINGS;
class CORROSION_TABLE_ENTRY
{
public:
CORROSION_TABLE_ENTRY( wxString aName, wxString aSymbol, double aPot );
/** @brief Translatable name ( Copper ) */
wxString m_name;
/** @brief Chemical symbol (Cu), not translatable */
wxString m_symbol;
/** @brief potential in volts, relative to copper */
double m_potential;
};
class PANEL_CORROSION : public PANEL_CORROSION_BASE
{
public:
PANEL_CORROSION( wxWindow* parent, wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
~PANEL_CORROSION();
std::vector<CORROSION_TABLE_ENTRY> m_entries;
// Methods from CALCULATOR_PANEL that must be overriden
void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override;
void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override;
void ThemeChanged() override;
};
#endif

View File

@ -0,0 +1,65 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "panel_corrosion_base.h"
///////////////////////////////////////////////////////////////////////////
PANEL_CORROSION_BASE::PANEL_CORROSION_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name )
{
wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxVERTICAL );
m_scrolledWindow1 = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
m_scrolledWindow1->SetScrollRate( 5, 5 );
wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxVERTICAL );
m_table = new wxGrid( m_scrolledWindow1, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
// Grid
m_table->CreateGrid( 1, 1 );
m_table->EnableEditing( true );
m_table->EnableGridLines( true );
m_table->EnableDragGridSize( false );
m_table->SetMargins( 0, 0 );
// Columns
m_table->EnableDragColMove( false );
m_table->EnableDragColSize( true );
m_table->SetColLabelValue( 0, _("Copper (Cu)") );
m_table->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
// Rows
m_table->EnableDragRowSize( true );
m_table->SetRowLabelValue( 0, _("Copper (Cu)") );
m_table->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
// Label Appearance
// Cell Defaults
m_table->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
bSizer7->Add( m_table, 1, wxALL|wxEXPAND, 5 );
m_scrolledWindow1->SetSizer( bSizer7 );
m_scrolledWindow1->Layout();
bSizer7->Fit( m_scrolledWindow1 );
bSizer6->Add( m_scrolledWindow1, 1, wxEXPAND | wxALL, 5 );
m_staticText16 = new wxStaticText( this, wxID_ANY, _("When two metals are in contact, there will be a potential difference between them that will lead to corrosion.\nIn order to avoid corrosion, it is good practice to keep the difference below 300mV.\n\nOne of the metal will be anodic (+) and will be attacked. The other one will be cathodic and will be protected.\nIn the table below, if the number is positive then the row is anodic and the column is cathodic. \n\nYou can use an interface metal, just like with the ENIG surface finish that uses nickel as an interface between gold and copper to prevent corrosion."), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText16->Wrap( -1 );
bSizer6->Add( m_staticText16, 0, wxALL, 5 );
this->SetSizer( bSizer6 );
this->Layout();
}
PANEL_CORROSION_BASE::~PANEL_CORROSION_BASE()
{
}

View File

@ -0,0 +1,277 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="16" />
<object class="Project" expanded="1">
<property name="class_decoration"></property>
<property name="code_generation">C++</property>
<property name="disconnect_events">1</property>
<property name="disconnect_mode">source_name</property>
<property name="disconnect_php_events">0</property>
<property name="disconnect_python_events">0</property>
<property name="embedded_files_path">res</property>
<property name="encoding">UTF-8</property>
<property name="event_generation">connect</property>
<property name="file">panel_corrosion_base</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="image_path_wrapper_function_name"></property>
<property name="indent_with_spaces"></property>
<property name="internationalize">1</property>
<property name="name">panel_corrosion_base</property>
<property name="namespace"></property>
<property name="path">.</property>
<property name="precompiled_header"></property>
<property name="relative_path">1</property>
<property name="skip_lua_events">1</property>
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_array_enum">0</property>
<property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property>
<object class="Panel" expanded="1">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
<property name="bg"></property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">PANEL_CORROSION_BASE</property>
<property name="pos"></property>
<property name="size">677,453</property>
<property name="subclass">CALCULATOR_PANEL; calculator_panels/calculator_panel.h; </property>
<property name="tooltip"></property>
<property name="two_step_creation">0</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer6</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND | wxALL</property>
<property name="proportion">1</property>
<object class="wxScrolledWindow" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_scrolledWindow1</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="scroll_rate_x">5</property>
<property name="scroll_rate_y">5</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxHSCROLL|wxVSCROLL</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer7</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxGrid" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="autosize_cols">0</property>
<property name="autosize_rows">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="cell_bg"></property>
<property name="cell_font"></property>
<property name="cell_horiz_alignment">wxALIGN_LEFT</property>
<property name="cell_text"></property>
<property name="cell_vert_alignment">wxALIGN_TOP</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="col_label_horiz_alignment">wxALIGN_CENTER</property>
<property name="col_label_size"></property>
<property name="col_label_values">&quot;Copper (Cu)&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">1</property>
<property name="column_sizes"></property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_col_move">0</property>
<property name="drag_col_size">1</property>
<property name="drag_grid_size">0</property>
<property name="drag_row_size">1</property>
<property name="editing">1</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="grid_line_color"></property>
<property name="grid_lines">1</property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label_bg"></property>
<property name="label_font"></property>
<property name="label_text"></property>
<property name="margin_height">0</property>
<property name="margin_width">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_table</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="row_label_horiz_alignment">wxALIGN_CENTER</property>
<property name="row_label_size"></property>
<property name="row_label_values">&quot;Copper (Cu)&quot;</property>
<property name="row_label_vert_alignment">wxALIGN_CENTER</property>
<property name="row_sizes"></property>
<property name="rows">1</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">When two metals are in contact, there will be a potential difference between them that will lead to corrosion.&#x0A;In order to avoid corrosion, it is good practice to keep the difference below 300mV.&#x0A;&#x0A;One of the metal will be anodic (+) and will be attacked. The other one will be cathodic and will be protected.&#x0A;In the table below, if the number is positive then the row is anodic and the column is cathodic. &#x0A;&#x0A;You can use an interface metal, just like with the ENIG surface finish that uses nickel as an interface between gold and copper to prevent corrosion.</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText16</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>

View File

@ -0,0 +1,47 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#pragma once
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
#include "calculator_panels/calculator_panel.h"
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/string.h>
#include <wx/font.h>
#include <wx/grid.h>
#include <wx/gdicmn.h>
#include <wx/sizer.h>
#include <wx/scrolwin.h>
#include <wx/stattext.h>
#include <wx/panel.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class PANEL_CORROSION_BASE
///////////////////////////////////////////////////////////////////////////////
class PANEL_CORROSION_BASE : public CALCULATOR_PANEL
{
private:
protected:
wxScrolledWindow* m_scrolledWindow1;
wxGrid* m_table;
wxStaticText* m_staticText16;
public:
PANEL_CORROSION_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 677,453 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
~PANEL_CORROSION_BASE();
};

View File

@ -36,6 +36,7 @@
#include <calculator_panels/panel_attenuators.h>
#include <calculator_panels/panel_board_class.h>
#include <calculator_panels/panel_cable_size.h>
#include <calculator_panels/panel_corrosion.h>
#include <calculator_panels/panel_color_code.h>
#include <calculator_panels/panel_electrical_spacing.h>
#include <calculator_panels/panel_eserie.h>
@ -114,6 +115,8 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
_( "Color Code" ) );
AddCalculator( new PANEL_BOARD_CLASS( m_treebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ),
_("Board Classes") );
AddCalculator( new PANEL_CORROSION( m_treebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ),
_( "Galvanic corrosion" ) );
LoadSettings( config() );