52    m_NetSettings = std::make_shared<NET_SETTINGS>( 
nullptr, 
"" );
 
  333            [&]() -> nlohmann::json
 
  335                nlohmann::json ret = {};
 
  339                    wxString 
name = item.GetSettingsKey();
 
  340                    int      code = item.GetErrorCode();
 
  350            [&]( 
const nlohmann::json& aJson )
 
  352                if( !aJson.is_object() )
 
  360                if( aJson.contains( 
"hole_near_hole" ) )
 
  365                    wxString 
name = item.GetSettingsKey();
 
  366                    std::string key( 
name.ToUTF8() );
 
  368                    if( aJson.contains( key ) )
 
  374            [&]() -> nlohmann::json
 
  376                nlohmann::json js = nlohmann::json::array();
 
  383            [&]( 
const nlohmann::json& aObj )
 
  387                if( !aObj.is_array() )
 
  390                for( 
const nlohmann::json& entry : aObj )
 
  392                    if( entry.is_array() )
 
  394                        wxString serialized = entry[0].get<wxString>();
 
  398                    else if( entry.is_string() )
 
  407            [&]() -> nlohmann::json
 
  409                nlohmann::json js = nlohmann::json::array();
 
  416            [&]( 
const nlohmann::json& aJson )
 
  418                if( !aJson.is_array() )
 
  423                for( 
const nlohmann::json& entry : aJson )
 
  434            [&]() -> nlohmann::json
 
  436                nlohmann::json js = nlohmann::json::array();
 
  440                    nlohmann::json entry = {};
 
  445                    js.push_back( entry );
 
  450            [&]( 
const nlohmann::json& aObj )
 
  452                if( !aObj.is_array() )
 
  457                for( 
const nlohmann::json& entry : aObj )
 
  459                    if( entry.empty() || !entry.is_object() )
 
  462                    if( !entry.contains( 
"diameter" ) || !entry.contains( 
"drill" ) )
 
  465                    int diameter = 
pcbIUScale.mmToIU( entry[
"diameter"].get<double>() );
 
  466                    int drill    = 
pcbIUScale.mmToIU( entry[
"drill"].get<double>() );
 
  474            [&]() -> nlohmann::json
 
  476                nlohmann::json js = nlohmann::json::array();
 
  480                    nlohmann::json entry = {};
 
  482                    entry[
"width"]   = 
pcbIUScale.IUTomm( pair.m_Width );
 
  483                    entry[
"gap"]     = 
pcbIUScale.IUTomm( pair.m_Gap );
 
  484                    entry[
"via_gap"] = 
pcbIUScale.IUTomm( pair.m_ViaGap );
 
  486                    js.push_back( entry );
 
  491            [&]( 
const nlohmann::json& aObj )
 
  493                if( !aObj.is_array() )
 
  498                for( 
const nlohmann::json& entry : aObj )
 
  500                    if( entry.empty() || !entry.is_object() )
 
  503                    if( !entry.contains( 
"width" )
 
  504                            || !entry.contains( 
"gap" )
 
  505                            || !entry.contains( 
"via_gap" ) )
 
  510                    int width   = 
pcbIUScale.mmToIU( entry[
"width"].get<double>() );
 
  511                    int gap     = 
pcbIUScale.mmToIU( entry[
"gap"].get<double>() );
 
  512                    int via_gap = 
pcbIUScale.mmToIU( entry[
"via_gap"].get<double>() );
 
  521            [&]() -> nlohmann::json
 
  523                nlohmann::json js = nlohmann::json::array();
 
  524                nlohmann::json entry = {};
 
  532                js.push_back( entry );
 
  536            [&]( 
const nlohmann::json& aObj )
 
  538                if( !aObj.is_array() )
 
  541                for( 
const nlohmann::json& entry : aObj )
 
  543                    if( entry.empty() || !entry.is_object() )
 
  546                    if( entry.contains( 
"td_onvia" ) )
 
  549                    if( entry.contains( 
"td_onpthpad" ) )
 
  552                    if( entry.contains( 
"td_onsmdpad" ) )
 
  555                    if( entry.contains( 
"td_ontrackend" ) )
 
  558                    if( entry.contains( 
"td_onroundshapesonly" ) )
 
  562                    for( 
int ii = 0; ii < 3; ++ii )
 
  566                        if( entry.contains( 
"td_allow_use_two_tracks" ) )
 
  569                        if( entry.contains( 
"td_curve_segcount" ) )
 
  571                            if( entry[
"td_curve_segcount"].get<int>() > 0 )
 
  575                        if( entry.contains( 
"td_on_pad_in_zone" ) )
 
  584            [&]() -> nlohmann::json
 
  586                nlohmann::json js = nlohmann::json::array();
 
  590                    nlohmann::json entry = {};
 
  603                    js.push_back( entry );
 
  608            [&]( 
const nlohmann::json& aObj )
 
  610                if( !aObj.is_array() )
 
  613                for( 
const nlohmann::json& entry : aObj )
 
  615                    if( entry.empty() || !entry.is_object() )
 
  618                    if( !entry.contains( 
"td_target_name" ) )
 
  623                    if( idx >= 0 && idx < 3 )
 
  627                        if( entry.contains( 
"td_maxlen" ) )
 
  630                        if( entry.contains( 
"td_maxheight" ) )
 
  633                        if( entry.contains( 
"td_length_ratio" ) )
 
  636                        if( entry.contains( 
"td_height_ratio" ) )
 
  639                        if( entry.contains( 
"td_curve_segcount" ) )
 
  641                            if( entry[
"td_curve_segcount"].get<int>() > 0 )
 
  645                        if( entry.contains( 
"td_width_to_size_filter_ratio" ) )
 
  648                        if( entry.contains( 
"td_allow_use_two_tracks" ) )
 
  651                        if( entry.contains( 
"td_on_pad_in_zone" ) )
 
  659            [&]() -> nlohmann::json
 
  661                nlohmann::json js = {};
 
  666                            nlohmann::json entry = {};
 
  668                            entry[
"min_amplitude"] = 
pcbIUScale.IUTomm( aSettings.m_minAmplitude );
 
  669                            entry[
"max_amplitude"] = 
pcbIUScale.IUTomm( aSettings.m_maxAmplitude );
 
  670                            entry[
"spacing"] = 
pcbIUScale.IUTomm( aSettings.m_spacing );
 
  672                            entry[
"corner_radius_percentage"] = aSettings.m_cornerRadiusPercentage;
 
  673                            entry[
"single_sided"] = aSettings.m_singleSided;
 
  684            [&]( 
const nlohmann::json& aObj )
 
  691                            if( entry.contains( 
"min_amplitude" ) )
 
  694                            if( entry.contains( 
"max_amplitude" ) )
 
  697                            if( entry.contains( 
"spacing" ) )
 
  700                            if( entry.contains( 
"corner_style" ) )
 
  706                            if( entry.contains( 
"corner_radius_percentage" ) )
 
  709                            if( entry.contains( 
"single_sided" ) )
 
  715                if( aObj.contains( 
"single_track_defaults" ) )
 
  718                if( aObj.contains( 
"diff_pair_defaults" ) )
 
  721                if( aObj.contains( 
"diff_pair_skew_defaults" ) )
 
  733            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  737            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  741            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  745            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  755            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  759            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  763            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  767            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  777            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  781            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  785            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  789            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  793            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  797            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  807            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  811            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  815            minTextSize, maxTextSize, 
pcbIUScale.MM_PER_IU ) );
 
  819            minStroke, maxStroke, 
pcbIUScale.MM_PER_IU ) );
 
  873            [&]() -> nlohmann::json
 
  884            [&]( 
const nlohmann::json& aJson )
 
  886                if( aJson.contains( 
"width" ) && aJson.contains( 
"height" )
 
  887                        && aJson.contains( 
"drill" ) )
 
  890                    sz.
x = 
pcbIUScale.mmToIU( aJson[
"width"].get<double>() );
 
  891                    sz.
y = 
pcbIUScale.mmToIU( aJson[
"height"].get<double>() );
 
  895                    int drill = 
pcbIUScale.mmToIU( aJson[
"drill"].get<double>() );
 
  920                if( std::optional<double> optval = 
Get<double>( 
"rules.solder_mask_clearance" ) )
 
  923                if( std::optional<double> optval = 
Get<double>( 
"rules.solder_mask_min_width" ) )
 
  926                if( std::optional<double> optval = 
Get<double>( 
"rules.solder_paste_clearance" ) )
 
  929                if( std::optional<double> optval = 
Get<double>( 
"rules.solder_paste_margin_ratio" ) )
 
  934                    At( 
"rules" ).erase( 
"solder_mask_clearance" );
 
  935                    At( 
"rules" ).erase( 
"solder_mask_min_width" );
 
  936                    At( 
"rules" ).erase( 
"solder_paste_clearance" );
 
  937                    At( 
"rules" ).erase( 
"solder_paste_margin_ratio" );
 
 
  951        m_parent->ReleaseNestedSettings( 
this );
 
 
 1200    std::string units_ptr( 
"defaults.dimension_units" );
 
 1201    std::string precision_ptr( 
"defaults.dimension_precision" );
 
 1205            && 
At( units_ptr ).is_number_integer()
 
 1206            && 
At( precision_ptr ).is_number_integer() ) )
 
 1212    int units     = *
Get<int>( units_ptr );
 
 1213    int precision = *
Get<int>( precision_ptr );
 
 1216    int extraDigits = 0;
 
 1220    case 0: extraDigits = 3; 
break;
 
 1221    case 2: extraDigits = 2; 
break;
 
 1225    precision += extraDigits;
 
 1227    Set( precision_ptr, precision );
 
 
 1246    bool migrated = 
false;
 
 1249            []( 
int aCode ) -> std::string
 
 1251                return std::string( 
DRC_ITEM::Create( aCode )->GetSettingsKey().ToUTF8() );
 
 1254    const std::string rs = 
"rule_severities.";
 
 1255    const std::string no_courtyard_key = 
"legacy_no_courtyard_defined";
 
 1256    const std::string courtyard_overlap_key = 
"legacy_courtyards_overlap";
 
 1260        nlohmann::json& severities =
 
 1261                project->Internals()->at( 
"/board/design_settings/rule_severities"_json_pointer );
 
 1263        if( severities.contains( no_courtyard_key ) )
 
 1265            if( severities[no_courtyard_key].get<bool>() )
 
 1270            severities.erase( no_courtyard_key );
 
 1274        if( severities.contains( courtyard_overlap_key ) )
 
 1276            if( severities[courtyard_overlap_key].get<bool>() )
 
 1281            severities.erase( courtyard_overlap_key );
 
 1295        project->At( 
"legacy" ).erase( 
"pcbnew" );
 
 
 1329        biggest = std::max( biggest, constraint.
Value().
Min() );
 
 1332        biggest = std::max( biggest, constraint.
Value().
Min() );
 
 1335        biggest = std::max( biggest, constraint.
Value().
Min() );
 
 1338        biggest = std::max( biggest, constraint.
Value().
Min() );
 
 1341        biggest = std::max( biggest, constraint.
Value().
Min() );
 
 
 1372        return m_NetSettings->GetDefaultNetclass()->GetViaDiameter();
 
 
 1389    return drill > 0 ? drill : -1;
 
 
 1405        return m_NetSettings->GetDefaultNetclass()->GetTrackWidth();
 
 
 1428        if( 
m_NetSettings->GetDefaultNetclass()->HasDiffPairWidth() )
 
 1429            return m_NetSettings->GetDefaultNetclass()->GetDiffPairWidth();
 
 1431            return m_NetSettings->GetDefaultNetclass()->GetTrackWidth();
 
 
 1449            return m_NetSettings->GetDefaultNetclass()->GetDiffPairGap();
 
 
 1468        if( 
m_NetSettings->GetDefaultNetclass()->HasDiffPairViaGap() )
 
 1469            return m_NetSettings->GetDefaultNetclass()->GetDiffPairViaGap();
 
 
 1487    if( aNewLayerCount > 0 )
 
 
 1498    if( aNewLayerCount > 0 )
 
 
 1515    LSET copperLayers = aMask;
 
 
 1537    else if( aLayer == 
F_Fab || aLayer == 
B_Fab )
 
 
constexpr int ARC_HIGH_DEF
 
constexpr EDA_IU_SCALE pcbIUScale
 
const int bdsSchemaVersion
 
#define DEFAULT_MICROVIASMINDRILL
 
#define DEFAULT_SOLDERPASTE_CLEARANCE
 
#define DEFAULT_SOLDERPASTE_RATIO
 
#define DEFAULT_CUSTOMDPAIRWIDTH
 
#define DEFAULT_DP_MEANDER_SPACING
 
#define DEFAULT_PAD_WIDTH_MM
 
#define DEFAULT_VIASMINSIZE
 
#define DEFAULT_PAD_DRILL_DIAMETER_MM
 
#define DEFAULT_TEXT_WIDTH
 
#define DEFAULT_COPPER_TEXT_WIDTH
 
#define DEFAULT_CUSTOMDPAIRGAP
 
#define DEFAULT_MINCLEARANCE
 
#define DEFAULT_HOLECLEARANCE
 
#define DEFAULT_SOLDERMASK_EXPANSION
 
#define DEFAULT_SOLDERMASK_MIN_WIDTH
 
#define DEFAULT_DIMENSION_EXTENSION_OFFSET
 
#define DEFAULT_COPPEREDGECLEARANCE
 
#define DEFAULT_PAD_HEIGTH_MM
 
#define DEFAULT_DIMENSION_ARROW_LENGTH
 
#define DEFAULT_TRACKMINWIDTH
 
#define DEFAULT_MINTHROUGHDRILL
 
#define DEFAULT_PAD_RR_RADIUS_RATIO
 
#define DEFAULT_SILK_TEXT_SIZE
 
#define MAXIMUM_CLEARANCE
 
#define DEFAULT_HOLETOHOLEMIN
 
#define DEFAULT_MINCONNECTION
 
#define DEFAULT_COPPER_LINE_WIDTH
 
#define DEFAULT_SILK_LINE_WIDTH
 
#define DEFAULT_SILKCLEARANCE
 
#define DEFAULT_MICROVIASMINSIZE
 
#define DEFAULT_SILK_TEXT_WIDTH
 
#define DEFAULT_MINGROOVEWIDTH
 
#define DEFAULT_TEXT_SIZE
 
#define DEFAULT_EDGE_WIDTH
 
#define DEFAULT_CUSTOMTRACKWIDTH
 
#define DEFAULT_CUSTOMDPAIRVIAGAP
 
#define DEFAULT_COPPER_TEXT_SIZE
 
#define DEFAULT_SOLDERMASK_TO_COPPER_CLEARANCE
 
#define DEFAULT_LINE_WIDTH
 
#define DEFAULT_MEANDER_SPACING
 
#define DEFAULT_COURTYARD_WIDTH
 
#define DEFAULT_BOARD_THICKNESS_MM
 
#define DEFAULT_MINRESOLVEDSPOKES
 
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
 
BASE_SET & set(size_t pos)
 
DIM_PRECISION m_DimensionPrecision
Number of digits after the decimal.
 
std::vector< TEXT_ITEM_INFO > m_DefaultFPTextItems
 
int GetHolePlatingThickness() const
Pad & via drills are finish size.
 
VIATYPE m_CurrentViaType
(VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA)
 
void SetEnabledLayers(const LSET &aMask)
Change the bit-mask of enabled layers to aMask.
 
std::shared_ptr< NET_SETTINGS > m_NetSettings
 
bool operator==(const BOARD_DESIGN_SETTINGS &aOther) const
 
std::map< wxString, wxString > m_DrcExclusionComments
 
DIM_UNITS_FORMAT m_DimensionUnitsFormat
 
void initFromOther(const BOARD_DESIGN_SETTINGS &aOther)
 
int m_CopperEdgeClearance
 
bool GetTextUpright(PCB_LAYER_ID aLayer) const
 
std::map< int, SEVERITY > m_DRCSeverities
 
VECTOR2I m_gridOrigin
origin for grid offsets
 
int GetTextThickness(PCB_LAYER_ID aLayer) const
Return the default text thickness from the layer class for the given layer.
 
VECTOR2I m_auxOrigin
origin for plot exports
 
bool m_TextUpright[LAYER_CLASS_COUNT]
 
BOARD_DESIGN_SETTINGS(JSON_SETTINGS *aParent, const std::string &aPath)
 
bool GetTextItalic(PCB_LAYER_ID aLayer) const
 
int m_MinSilkTextThickness
 
int GetCurrentViaSize() const
 
wxString m_currentNetClassName
Current net class name used to display netclass info.
 
void SetViaSizeIndex(int aIndex)
Set the current via size list index to aIndex.
 
std::shared_ptr< DRC_ENGINE > m_DRCEngine
 
bool m_UseConnectedTrackWidth
 
virtual ~BOARD_DESIGN_SETTINGS()
 
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
 
VIA_DIMENSION m_customViaSize
 
std::set< wxString > m_DrcExclusions
 
bool Ignore(int aDRCErrorCode)
Return true if the DRC error code's severity is SEVERITY_IGNORE.
 
void SetDiffPairIndex(int aIndex)
 
int m_SolderMaskToCopperClearance
 
std::map< std::string, wxString > m_UserLayerNames
 
bool m_TempOverrideTrackWidth
 
int GetSmallestClearanceValue() const
 
bool m_AllowSoldermaskBridgesInFPs
 
std::unique_ptr< PAD > m_Pad_Master
 
bool m_DimensionSuppressZeroes
 
TEARDROP_PARAMETERS_LIST m_TeardropParamsList
The parameters of teardrops for the different teardrop targets (via/pad, track end).
 
void SetDefaultMasterPad()
 
int GetCurrentDiffPairWidth() const
 
void SetUserDefinedLayerCount(int aNewLayerCount)
Set the number of user defined layers to aNewLayerCount.
 
int GetCurrentDiffPairViaGap() const
 
int GetCurrentDiffPairGap() const
 
int m_SolderMaskExpansion
 
int GetDRCEpsilon() const
Return an epsilon which accounts for rounding errors, etc.
 
int GetBiggestClearanceValue() const
 
int GetLayerClass(PCB_LAYER_ID aLayer) const
 
PNS::MEANDER_SETTINGS m_DiffPairMeanderSettings
 
int GetCurrentTrackWidth() const
 
int m_boardThickness
Board thickness for 3D viewer.
 
int m_copperLayerCount
Number of copper layers for this design.
 
int m_userDefinedLayerCount
Number of user defined layers for this design.
 
bool LoadFromFile(const wxString &aDirectory="") override
Loads the backing file from disk and then calls Load()
 
PNS::MEANDER_SETTINGS m_SingleTrackMeanderSettings
 
void SetTrackWidthIndex(int aIndex)
Set the current track width list index to aIndex.
 
int m_TextThickness[LAYER_CLASS_COUNT]
 
ZONE_SETTINGS m_defaultZoneSettings
The default settings that will be used for new zones.
 
SEVERITY GetSeverity(int aDRCErrorCode)
 
std::vector< int > m_TrackWidthList
 
DIFF_PAIR_DIMENSION m_customDiffPair
 
int m_LineThickness[LAYER_CLASS_COUNT]
 
bool m_DimensionKeepTextAligned
 
VECTOR2I GetTextSize(PCB_LAYER_ID aLayer) const
Return the default text size from the layer class for the given layer.
 
double m_SolderPasteMarginRatio
 
int GetLineThickness(PCB_LAYER_ID aLayer) const
Return the default graphic segment thickness from the layer class for the given layer.
 
bool m_UseHeightForLengthCalcs
Enable inclusion of stackup height in track length measurements and length tuning.
 
int GetCurrentViaDrill() const
 
VECTOR2I m_TextSize[LAYER_CLASS_COUNT]
 
PNS::MEANDER_SETTINGS m_SkewMeanderSettings
 
LSET m_enabledLayers
Bit-mask for layer enabling.
 
bool m_TextItalic[LAYER_CLASS_COUNT]
 
void SetCopperLayerCount(int aNewLayerCount)
Set the copper layer count to aNewLayerCount.
 
DIM_TEXT_POSITION m_DimensionTextPosition
 
BOARD_STACKUP m_stackup
The description of layers stackup, for board fabrication only physical layers are in layers stackup.
 
bool m_ZoneKeepExternalFillets
 
DIM_UNITS_MODE m_DimensionUnitsMode
 
std::vector< VIA_DIMENSION > m_ViasDimensionsList
 
int m_ViasMinAnnularWidth
 
BOARD_DESIGN_SETTINGS & operator=(const BOARD_DESIGN_SETTINGS &aOther)
 
int m_DimensionExtensionOffset
 
int m_DimensionArrowLength
 
MINOPTMAX< int > & Value()
 
static std::vector< std::reference_wrapper< RC_ITEM > > GetItemsWithSeverities()
 
static std::shared_ptr< DRC_ITEM > Create(int aErrorCode)
Constructs a DRC_ITEM for the given error code.
 
void Set(const std::string &aPath, ValueType aVal)
Stores a value into the JSON document Will throw an exception if ValueType isn't something that the l...
 
bool Contains(const std::string &aPath) const
 
virtual void Load()
Updates the parameters of this object based on the current JSON document contents.
 
std::optional< ValueType > Get(const std::string &aPath) const
Fetches a value from within the JSON document.
 
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)
 
void registerMigration(int aOldSchemaVersion, int aNewSchemaVersion, std::function< bool(void)> aMigrator)
Registers a migration from one schema version to another.
 
nlohmann::json & At(const std::string &aPath)
Wrappers for the underlying JSON API so that most consumers don't need json.hpp All of these function...
 
JSON_SETTINGS(const wxString &aFilename, SETTINGS_LOC aLocation, int aSchemaVersion)
 
bool m_resetParamsIfMissing
Whether or not to set parameters to their default value if missing from JSON on Load()
 
LSET is a set of PCB_LAYER_IDs.
 
LSET & ClearNonCopperLayers()
Clear the non-copper layers in this set.
 
static LSET UserDefinedLayersMask(int aUserDefinedLayerCount=MAX_USER_DEFINED_LAYERS)
Return a mask with the requested number of user defined layers.
 
static LSET AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
 
std::string m_path
The path (in pointer format) of where to store this document in the parent.
 
JSON_SETTINGS * GetParent()
 
JSON_SETTINGS * m_parent
A pointer to the parent object to load and store from.
 
NESTED_SETTINGS(const std::string &aName, int aSchemaVersion, JSON_SETTINGS *aParent, const std::string &aPath, bool aLoadFromFile=true)
 
bool LoadFromFile(const wxString &aDirectory="") override
Loads the JSON document from the parent and then calls Load()
 
static constexpr PCB_LAYER_ID ALL_LAYERS
! Temporary layer identifier to identify code that is not padstack-aware
 
Stores an enum as an integer.
 
Like a normal param, but with custom getter and setter functions.
 
Represents a parameter that has a scaling factor between the value in the file and the value used int...
 
Dimensions for the meandering algorithm.
 
int m_minAmplitude
Maximum meandering amplitude.
 
int m_cornerRadiusPercentage
Place meanders on one side.
 
bool m_singleSided
Initial side when placing meanders at segment.
 
MEANDER_STYLE m_cornerStyle
Rounding percentage (0 - 100).
 
int m_maxAmplitude
Meandering period/spacing (see dialog picture for explanation).
 
int m_spacing
Amplitude/spacing adjustment step.
 
The backing store for a PROJECT, in JSON format.
 
A holder for a rule check item, DRC in Pcbnew or ERC in Eeschema.
 
TEARDROP_PARAMETARS is a helper class to handle parameters needed to build teardrops for a board thes...
 
double m_BestWidthRatio
The height of a teardrop as ratio between height and size of pad/via.
 
int m_TdMaxLen
max allowed length for teardrops in IU. <= 0 to disable
 
bool m_AllowUseTwoTracks
True to create teardrops using 2 track segments if the first in too small.
 
int m_TdMaxWidth
max allowed height for teardrops in IU. <= 0 to disable
 
double m_BestLengthRatio
The length of a teardrop as ratio between length and size of pad/via.
 
double m_WidthtoSizeFilterRatio
The ratio (H/D) between the via/pad size and the track width max value to create a teardrop 1....
 
bool m_TdOnPadsInZones
A filter to exclude pads inside zone fills.
 
bool m_CurvedEdges
True if the teardrop should be curved.
 
@ DRCE_SILK_EDGE_CLEARANCE
 
@ DRCE_SILK_MASK_CLEARANCE
 
@ DRCE_MIRRORED_TEXT_ON_FRONT_LAYER
 
@ DRCE_LIB_FOOTPRINT_ISSUES
 
@ DRCE_OVERLAPPING_FOOTPRINTS
 
@ DRCE_MISSING_TUNING_PROFILE
 
@ DRCE_DRILLED_HOLES_TOO_CLOSE
 
@ DRCE_FOOTPRINT_TYPE_MISMATCH
 
@ DRCE_NONMIRRORED_TEXT_ON_BACK_LAYER
 
@ DRCE_DUPLICATE_FOOTPRINT
 
@ DRCE_DRILLED_HOLES_COLOCATED
 
@ DRCE_LIB_FOOTPRINT_MISMATCH
 
@ EDGE_CLEARANCE_CONSTRAINT
 
@ HOLE_CLEARANCE_CONSTRAINT
 
@ PHYSICAL_CLEARANCE_CONSTRAINT
 
@ HOLE_TO_HOLE_CONSTRAINT
 
static constexpr EDA_ANGLE ANGLE_90
 
static constexpr EDA_ANGLE ANGLE_45
 
#define TEXT_MIN_SIZE_MM
Minimum text size (1 micron).
 
#define TEXT_MAX_SIZE_MM
Maximum text size in mm (~10 inches)
 
bool IsCopperLayer(int aLayerId)
Test whether a layer is a copper layer.
 
PCB_LAYER_ID
A quick note on layer IDs:
 
@ OUTSIDE
Text appears outside the dimension line (default)
 
@ INLINE
Text appears in line with the dimension line.
 
Container to handle a stock of specific differential pairs each with unique track width,...
 
Container to handle a stock of specific vias each with unique diameter and drill sizes in the BOARD c...
 
std::string GetTeardropTargetCanonicalName(TARGET_TD aTdType)
 
TARGET_TD GetTeardropTargetTypeFromCanonicalName(const std::string &aTargetName)
 
SEVERITY SeverityFromString(const wxString &aSeverity)
 
wxString SeverityToString(const SEVERITY &aSeverity)
 
VECTOR2< int32_t > VECTOR2I
 
#define ZONE_CLEARANCE_MM