KiCad PCB EDA Suite
Loading...
Searching...
No Matches
PCB_WRITER_V9 Class Reference

Writes a board or footprint in the KiCad 9.0 file format. More...

#include <pcb_writer_v9.h>

Public Member Functions

 PCB_WRITER_V9 ()
 
void SaveBoard (const wxString &aFileName, BOARD *aBoard)
 
void SaveFootprintFile (const wxString &aFileName, FOOTPRINT *aFootprint)
 

Static Public Attributes

static constexpr int FORMAT_VERSION = 20241229
 

Private Member Functions

void Format (const BOARD_ITEM *aItem) const
 
void formatSetup (const BOARD *aBoard) const
 
void formatGeneral (const BOARD *aBoard) const
 
void formatBoardLayers (const BOARD *aBoard) const
 
void formatNetInformation (const BOARD *aBoard) const
 
void formatProperties (const BOARD *aBoard) const
 
void formatHeader (const BOARD *aBoard) const
 
void formatTeardropParameters (const TEARDROP_PARAMETERS &tdParams) const
 
void format (const BOARD *aBoard) const
 
void format (const PCB_DIMENSION_BASE *aDimension) const
 
void format (const PCB_REFERENCE_IMAGE *aBitmap) const
 
void format (const PCB_GROUP *aGroup) const
 
void format (const PCB_SHAPE *aSegment) const
 
void format (const PCB_TARGET *aTarget) const
 
void format (const FOOTPRINT *aFootprint) const
 
void format (const PAD *aPad) const
 
void format (const PCB_TEXT *aText) const
 
void format (const PCB_TEXTBOX *aTextBox) const
 
void format (const PCB_TABLE *aTable) const
 
void format (const PCB_GENERATOR *aGenerator) const
 
void format (const PCB_TRACK *aTrack) const
 
void format (const ZONE *aZone) const
 
void formatPolyPts (const SHAPE_LINE_CHAIN &aOutline, const FOOTPRINT *aParentFP=nullptr) const
 
void formatRenderCache (const EDA_TEXT *aText) const
 
void formatLayer (PCB_LAYER_ID aLayer, bool aIsKnockout=false) const
 
void formatLayers (LSET aLayerMask, bool aEnumerateLayers) const
 
void formatTenting (const PADSTACK &aPadstack) const
 

Private Attributes

BOARD * m_board
 
OUTPUTFORMATTER * m_out
 
int m_ctl
 
NET_MAPPING_V9 m_mapping
 

Detailed Description

Writes a board or footprint in the KiCad 9.0 file format.

Extracted from the 9.0.0 release, so it can only emit what that release can read back.

Definition at line 74 of file pcb_writer_v9.h.

Constructor & Destructor Documentation

◆ PCB_WRITER_V9()

PCB_WRITER_V9::PCB_WRITER_V9 ( )
inline

Definition at line 79 of file pcb_writer_v9.h.

References m_board, m_ctl, and m_out.

Member Function Documentation

◆ Format()

◆ format() [1/14]

◆ format() [2/14]

void PCB_WRITER_V9::format ( const FOOTPRINT * aFootprint) const
private

Definition at line 880 of file pcb_writer_v9.cpp.

References FOOTPRINT::AllowMissingCourtyard(), FOOTPRINT::AllowSolderMaskBridges(), KIID_PATH::AsString(), CTL_FOR_BOARD, CTL_OMIT_AT, CTL_OMIT_FOOTPRINT_VERSION, CTL_OMIT_INITIAL_COMMENTS, CTL_OMIT_LIBNAME, CTL_OMIT_PATH, CTL_OMIT_UUIDS, Format(), format(), FORMAT_VERSION, EDA_UNIT_UTILS::FormatAngle(), KICAD_FORMAT::LEGACY::FormatBool(), FormatDouble2Str(), KICAD_FORMAT::LEGACY::FormatEmbeddedFilesV9(), formatInternalUnits(), formatLayer(), KICAD_FORMAT::LEGACY::FormatLibId(), KICAD_FORMAT::LEGACY::FormatUuid(), FP_BOARD_ONLY, FP_DNP, FP_EXCLUDE_FROM_BOM, FP_EXCLUDE_FROM_POS_FILES, FP_SMD, FP_THROUGH_HOLE, EMBEDDED_FILES::GetAreFontsEmbedded(), FOOTPRINT::GetAttributes(), COMPONENT_CLASS::GetConstituentClasses(), FOOTPRINT::GetEmbeddedFiles(), FOOTPRINT::GetFields(), FOOTPRINT::GetFilters(), FOOTPRINT::GetFPID(), FOOTPRINT::GetInitialComments(), FOOTPRINT::GetKeywords(), FOOTPRINT::GetLayer(), FOOTPRINT::GetLibDescription(), LIB_ID::GetLibItemName(), FOOTPRINT::GetLocalClearance(), FOOTPRINT::GetLocalSolderMaskMargin(), FOOTPRINT::GetLocalSolderPasteMargin(), FOOTPRINT::GetLocalSolderPasteMarginRatio(), FOOTPRINT::GetLocalZoneConnection(), GetMajorMinorVersion(), FOOTPRINT::GetNetTiePadGroups(), FOOTPRINT::GetOrientation(), FOOTPRINT::GetPath(), FOOTPRINT::GetPosition(), FOOTPRINT::GetPrivateLayers(), FOOTPRINT::GetSheetfile(), FOOTPRINT::GetSheetname(), FOOTPRINT::GetStaticComponentClass(), FOOTPRINT::GraphicalItems(), group, FOOTPRINT::Groups(), INHERITED, EMBEDDED_FILES::IsEmpty(), FOOTPRINT::IsLocked(), FOOTPRINT::IsNetTie(), FOOTPRINT::IsPlaced(), EDA_ANGLE::IsZero(), m_ctl, m_out, EDA_ITEM::m_Uuid, FOOTPRINT::Models(), LSET::Name(), pad, FOOTPRINT::Pads(), FOOTPRINT::Reference(), LSET::Seq(), TO_UTF8, FOOTPRINT::Value(), and FOOTPRINT::Zones().

◆ format() [3/14]

void PCB_WRITER_V9::format ( const PAD * aPad) const
private

Definition at line 1205 of file pcb_writer_v9.cpp.

References _, ANGLE_45, ANGLE_90, ARC, B_Cu, BEZIER, BGA, CASTELLATED, CHAMFERED_RECT, CIRCLE, PADSTACK::Clearance(), CONN, CONVEXHULL, CTL_OMIT_PAD_NETS, LSET::CuStack(), CUSTOM, delta, F_Cu, FIDUCIAL_GLBL, FIDUCIAL_LOCAL, EDA_UNIT_UTILS::FormatAngle(), KICAD_FORMAT::LEGACY::FormatBool(), FormatDouble2Str(), formatInternalUnits(), formatLayers(), formatPolyPts(), formatTeardropParameters(), formatTenting(), KICAD_FORMAT::LEGACY::FormatUuid(), PADSTACK::FRONT_INNER_BACK, PAD::GetAnchorPadShape(), PAD::GetAttribute(), BOARD_ITEM::GetBoard(), PAD::GetChamferPositions(), PAD::GetChamferRectRatio(), BOARD::GetCopperLayerCount(), PAD::GetCustomShapeInZoneOpt(), PAD::GetDelta(), PAD::GetDrillShape(), PAD::GetDrillSize(), BOARD::GetEnabledLayers(), BOARD_ITEM::GetFPRelativePosition(), PAD::GetKeepTopBottom(), PAD::GetLayerSet(), PAD::GetLocalClearance(), PAD::GetLocalSolderMaskMargin(), PAD::GetLocalSolderPasteMargin(), PAD::GetLocalSolderPasteMarginRatio(), PAD::GetLocalThermalGapOverride(), PAD::GetLocalThermalSpokeWidthOverride(), PAD::GetLocalZoneConnection(), BOARD_CONNECTED_ITEM::GetNetCode(), BOARD_CONNECTED_ITEM::GetNetname(), PAD::GetNumber(), PAD::GetOffset(), PAD::GetOrientation(), PAD::GetPadToDieLength(), PAD::GetPinFunction(), PAD::GetPinType(), PAD::GetPrimitives(), PAD::GetProperty(), PAD::GetRemoveUnconnected(), PAD::GetRoundRectRadiusRatio(), PAD::GetShape(), PAD::GetSize(), BOARD_CONNECTED_ITEM::GetTeardropParams(), PAD::GetThermalSpokeAngle(), PAD::GetZoneLayerOverride(), HEATSINK, INHERITED, PADSTACK::INNER_LAYERS, isDefaultTeardropParameters(), EDA_ANGLE::IsZero(), m_ctl, m_mapping, m_out, EDA_ITEM::m_Uuid, MAX_CU_LAYERS, MECHANICAL, PADSTACK::Mode(), LSET::Name(), NONE, PADSTACK::NORMAL, NPTH, OBLONG, SHAPE_POLY_SET::Outline(), OVAL, PAD::Padstack(), POLY, PTH, RECT_CHAMFER_BOTTOM_LEFT, RECT_CHAMFER_BOTTOM_RIGHT, RECT_CHAMFER_TOP_LEFT, RECT_CHAMFER_TOP_RIGHT, RECTANGLE, ROUNDRECT, SEGMENT, SMD, TESTPOINT, PADSTACK::ThermalGap(), PADSTACK::ThermalSpokeAngle(), PADSTACK::ThermalSpokeWidth(), THROW_IO_ERROR, TRAPEZOID, NETINFO_LIST::UNCONNECTED, VECTOR2< T >::x, VECTOR2< T >::y, ZLO_FORCE_FLASHED, and PADSTACK::ZoneConnection().

◆ format() [4/14]

◆ format() [5/14]

◆ format() [6/14]

◆ format() [7/14]

◆ format() [8/14]

◆ format() [9/14]

◆ format() [10/14]

◆ format() [11/14]

◆ format() [12/14]

◆ format() [13/14]

◆ format() [14/14]

void PCB_WRITER_V9::format ( const ZONE * aZone) const
private

Definition at line 2165 of file pcb_writer_v9.cpp.

References _, ALWAYS, EDA_ANGLE::AsDegrees(), chain, ZONE_SETTINGS::CHAMFER, COMPONENT_CLASS, DIAGONAL_EDGE, DIAGONAL_FULL, ZONE_SETTINGS::FILLET, KICAD_FORMAT::LEGACY::FormatBool(), FormatDouble2Str(), formatInternalUnits(), formatLayer(), formatLayers(), formatPolyPts(), KICAD_FORMAT::LEGACY::FormatUuid(), FULL, ZONE::GetAssignedPriority(), BOARD_ITEM::GetBoard(), ZONE::GetBoardOutline(), ZONE::GetBorderHatchPitch(), ZONE::GetCornerRadius(), ZONE::GetCornerSmoothingType(), ZONE::GetDoNotAllowFootprints(), ZONE::GetDoNotAllowPads(), ZONE::GetDoNotAllowTracks(), ZONE::GetDoNotAllowVias(), ZONE::GetDoNotAllowZoneFills(), BOARD::GetEnabledLayers(), ZONE::GetFilledPolysList(), ZONE::GetFillMode(), ZONE::GetFirstLayer(), ZONE::GetHatchBorderAlgorithm(), ZONE::GetHatchGap(), ZONE::GetHatchHoleMinArea(), ZONE::GetHatchOrientation(), ZONE::GetHatchSmoothingLevel(), ZONE::GetHatchSmoothingValue(), ZONE::GetHatchStyle(), ZONE::GetHatchThickness(), ZONE::GetIslandRemovalMode(), ZONE::GetIsRuleArea(), ZONE::GetLayerSet(), ZONE::GetLocalClearance(), ZONE::GetMinIslandArea(), ZONE::GetMinThickness(), BOARD_CONNECTED_ITEM::GetNetCode(), BOARD_CONNECTED_ITEM::GetNetname(), ZONE::GetNumCorners(), ZONE::GetPadConnection(), ZONE::GetPlacementAreaEnabled(), ZONE::GetPlacementAreaSource(), ZONE::GetPlacementAreaSourceType(), ZONE::GetTeardropAreaType(), ZONE::GetThermalReliefGap(), ZONE::GetThermalReliefSpokeWidth(), ZONE::GetZoneName(), GROUP_PLACEMENT, HATCH_PATTERN, ZONE::IsFilled(), ZONE::IsIsland(), BOARD_ITEM::IsLocked(), ZONE::IsOnCopperLayer(), ZONE::IsTeardropArea(), m_mapping, m_out, EDA_ITEM::m_Uuid, LSET::Name(), NO_HATCH, ZONE_SETTINGS::NO_SMOOTHING, NONE, pcbIUScale, SHAPE_POLY_SET::Polygon(), LSET::Seq(), SHEETNAME, TD_VIAPAD, THERMAL, THROW_IO_ERROR, and THT_THERMAL.

◆ formatBoardLayers()

void PCB_WRITER_V9::formatBoardLayers ( const BOARD * aBoard) const
private

◆ formatGeneral()

◆ formatHeader()

void PCB_WRITER_V9::formatHeader ( const BOARD * aBoard) const
private

◆ formatLayer()

void PCB_WRITER_V9::formatLayer ( PCB_LAYER_ID aLayer,
bool aIsKnockout = false ) const
private

Definition at line 321 of file pcb_writer_v9.cpp.

References m_out, and LSET::Name().

Referenced by format(), format(), format(), format(), format(), format(), format(), format(), format(), and format().

◆ formatLayers()

void PCB_WRITER_V9::formatLayers ( LSET aLayerMask,
bool aEnumerateLayers ) const
private

◆ formatNetInformation()

void PCB_WRITER_V9::formatNetInformation ( const BOARD * aBoard) const
private

Definition at line 498 of file pcb_writer_v9.cpp.

References m_mapping, and m_out.

Referenced by formatHeader().

◆ formatPolyPts()

◆ formatProperties()

void PCB_WRITER_V9::formatProperties ( const BOARD * aBoard) const
private

Definition at line 511 of file pcb_writer_v9.cpp.

References BOARD::GetProperties(), and m_out.

Referenced by formatHeader().

◆ formatRenderCache()

◆ formatSetup()

◆ formatTeardropParameters()

◆ formatTenting()

void PCB_WRITER_V9::formatTenting ( const PADSTACK & aPadstack) const
private

◆ SaveBoard()

void PCB_WRITER_V9::SaveBoard ( const wxString & aFileName,
BOARD * aBoard )

◆ SaveFootprintFile()

Member Data Documentation

◆ FORMAT_VERSION

int PCB_WRITER_V9::FORMAT_VERSION = 20241229
staticconstexpr

◆ m_board

BOARD* PCB_WRITER_V9::m_board
private

Definition at line 145 of file pcb_writer_v9.h.

Referenced by formatBoardLayers(), formatLayers(), PCB_WRITER_V9(), and SaveBoard().

◆ m_ctl

int PCB_WRITER_V9::m_ctl
private

◆ m_mapping

NET_MAPPING_V9 PCB_WRITER_V9::m_mapping
private

Definition at line 148 of file pcb_writer_v9.h.

Referenced by format(), format(), format(), format(), formatNetInformation(), and SaveBoard().

◆ m_out


The documentation for this class was generated from the following files: