From 676c6e81a4fb690c3a58a592c79a8a49bdb94ae9 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sun, 27 Aug 2023 20:42:09 +0100 Subject: [PATCH] Custom pads with round anchors in pre-7.0 files get 90 degree spokes. Fixes https://gitlab.com/kicad/code/kicad/-/issues/15518 --- pcbnew/plugins/kicad/pcb_parser.cpp | 11 ++++++++++- pcbnew/plugins/kicad/pcb_plugin.h | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pcbnew/plugins/kicad/pcb_parser.cpp b/pcbnew/plugins/kicad/pcb_parser.cpp index 50d83bda56..e63f0b9f55 100644 --- a/pcbnew/plugins/kicad/pcb_parser.cpp +++ b/pcbnew/plugins/kicad/pcb_parser.cpp @@ -4256,11 +4256,20 @@ PAD* PCB_PARSER::parsePAD( FOOTPRINT* aParent ) } if( pad->GetShape() == PAD_SHAPE::CIRCLE ) + { pad->SetThermalSpokeAngle( ANGLE_45 ); + } else if( pad->GetShape() == PAD_SHAPE::CUSTOM && pad->GetAnchorPadShape() == PAD_SHAPE::CIRCLE ) - pad->SetThermalSpokeAngle( ANGLE_45 ); + { + if( m_requiredVersion < 20211226 ) + pad->SetThermalSpokeAngle( ANGLE_90 ); + else + pad->SetThermalSpokeAngle( ANGLE_45 ); + } else + { pad->SetThermalSpokeAngle( ANGLE_90 ); + } for( token = NextTok(); token != T_RIGHT; token = NextTok() ) { diff --git a/pcbnew/plugins/kicad/pcb_plugin.h b/pcbnew/plugins/kicad/pcb_plugin.h index 8330710aee..21e1eeecb6 100644 --- a/pcbnew/plugins/kicad/pcb_plugin.h +++ b/pcbnew/plugins/kicad/pcb_plugin.h @@ -59,6 +59,7 @@ class PCB_PLUGIN; // forward decl //#define SEXPR_BOARD_FILE_VERSION 3 // first s-expression format, used legacy cu stack //#define SEXPR_BOARD_FILE_VERSION 4 // reversed cu stack, changed Inner* to In* in reverse order // // went to 32 Cu layers from 16. +//----------------- Start of 5.0 development ----------------- //#define SEXPR_BOARD_FILE_VERSION 20160815 // differential pair settings per net class //#define SEXPR_BOARD_FILE_VERSION 20170123 // EDA_TEXT refactor, moved 'hide' //#define SEXPR_BOARD_FILE_VERSION 20170920 // long pad names and custom pad shape @@ -66,6 +67,7 @@ class PCB_PLUGIN; // forward decl //#define SEXPR_BOARD_FILE_VERSION 20171114 // Save 3D model offset in mm, instead of inches //#define SEXPR_BOARD_FILE_VERSION 20171125 // Locked/unlocked FP_TEXT //#define SEXPR_BOARD_FILE_VERSION 20171130 // 3D model offset written using "offset" parameter +//----------------- Start of 6.0 development ----------------- //#define SEXPR_BOARD_FILE_VERSION 20190331 // hatched zones and chamfered round rect pads //#define SEXPR_BOARD_FILE_VERSION 20190421 // curves in custom pads //#define SEXPR_BOARD_FILE_VERSION 20190516 // Remove segment count from zones @@ -110,6 +112,7 @@ class PCB_PLUGIN; // forward decl //#define SEXPR_BOARD_FILE_VERSION 20210824 // Opacity in 3D colors //#define SEXPR_BOARD_FILE_VERSION 20210925 // Locked flag for fp_text //#define SEXPR_BOARD_FILE_VERSION 20211014 // Arc formatting +//----------------- Start of 7.0 development ----------------- //#define SEXPR_BOARD_FILE_VERSION 20211226 // Add radial dimension //#define SEXPR_BOARD_FILE_VERSION 20211227 // Add thermal relief spoke angle overrides //#define SEXPR_BOARD_FILE_VERSION 20211228 // Add allow_soldermask_bridges footprint attribute @@ -130,6 +133,7 @@ class PCB_PLUGIN; // forward decl //#define SEXPR_BOARD_FILE_VERSION 20220818 // First-class storage for net-ties //#define SEXPR_BOARD_FILE_VERSION 20220914 // Number boxes for custom-shape pads //#define SEXPR_BOARD_FILE_VERSION 20221018 // Via & pad zone-layer-connections +//----------------- Start of 8.0 development ----------------- //#define SEXPR_BOARD_FILE_VERSION 20230410 // DNP attribute propagated from schematic to attr //#define SEXPR_BOARD_FILE_VERSION 20230517 // Teardrop parameters for pads and vias //#define SEXPR_BOARD_FILE_VERSION 20230620 // PCB Fields