mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 02:03:12 +02:00
Don't save UUIDs for teardrop zones.
They're really just a geometry cache. Also removes writing of filled_areas_thickness, which hasn't been supported in yonks. Also cleans up writing of island removal strategy (the limit is only needed in limit mode). Fixes https://gitlab.com/kicad/code/kicad/-/issues/20717
This commit is contained in:
parent
e75076ab41
commit
1ec47a053b
@ -172,7 +172,7 @@ void Prettify( std::string& aSource, bool aCompactSave )
|
|||||||
while( ++seek != aSource.end() && isalpha( *seek ) )
|
while( ++seek != aSource.end() && isalpha( *seek ) )
|
||||||
token += *seek;
|
token += *seek;
|
||||||
|
|
||||||
return token == "font" || token == "stroke" || token == "fill"
|
return token == "font" || token == "stroke" || token == "fill" || token == "teardrop"
|
||||||
|| token == "offset" || token == "rotate" || token == "scale";
|
|| token == "offset" || token == "rotate" || token == "scale";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2541,9 +2541,10 @@ void PCB_IO_KICAD_SEXPR::format( const ZONE* aZone ) const
|
|||||||
else
|
else
|
||||||
formatLayer( aZone->GetFirstLayer() );
|
formatLayer( aZone->GetFirstLayer() );
|
||||||
|
|
||||||
|
if( !aZone->IsTeardropArea() )
|
||||||
KICAD_FORMAT::FormatUuid( m_out, aZone->m_Uuid );
|
KICAD_FORMAT::FormatUuid( m_out, aZone->m_Uuid );
|
||||||
|
|
||||||
if( !aZone->GetZoneName().empty() )
|
if( !aZone->GetZoneName().empty() && !aZone->IsTeardropArea() )
|
||||||
m_out->Print( "(name %s)", m_out->Quotew( aZone->GetZoneName() ).c_str() );
|
m_out->Print( "(name %s)", m_out->Quotew( aZone->GetZoneName() ).c_str() );
|
||||||
|
|
||||||
// Save the outline aux info
|
// Save the outline aux info
|
||||||
@ -2565,12 +2566,11 @@ void PCB_IO_KICAD_SEXPR::format( const ZONE* aZone ) const
|
|||||||
if( aZone->GetAssignedPriority() > 0 )
|
if( aZone->GetAssignedPriority() > 0 )
|
||||||
m_out->Print( "(priority %d)", aZone->GetAssignedPriority() );
|
m_out->Print( "(priority %d)", aZone->GetAssignedPriority() );
|
||||||
|
|
||||||
// Add teardrop keywords in file: (attr (teardrop (type xxx)))where xxx is the teardrop type
|
// Add teardrop keywords in file: (attr (teardrop (type xxx))) where xxx is the teardrop type
|
||||||
if( aZone->IsTeardropArea() )
|
if( aZone->IsTeardropArea() )
|
||||||
{
|
{
|
||||||
m_out->Print( "(attr (teardrop (type %s)))",
|
m_out->Print( "(attr (teardrop (type %s)))",
|
||||||
aZone->GetTeardropAreaType() == TEARDROP_TYPE::TD_VIAPAD
|
aZone->GetTeardropAreaType() == TEARDROP_TYPE::TD_VIAPAD ? "padvia"
|
||||||
? "padvia"
|
|
||||||
: "track_end" );
|
: "track_end" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2603,9 +2603,6 @@ void PCB_IO_KICAD_SEXPR::format( const ZONE* aZone ) const
|
|||||||
m_out->Print( "(min_thickness %s)",
|
m_out->Print( "(min_thickness %s)",
|
||||||
formatInternalUnits( aZone->GetMinThickness() ).c_str() );
|
formatInternalUnits( aZone->GetMinThickness() ).c_str() );
|
||||||
|
|
||||||
// We continue to write this for 3rd-party parsers, but we no longer read it (as of V7).
|
|
||||||
m_out->Print( "(filled_areas_thickness no)" );
|
|
||||||
|
|
||||||
if( aZone->GetIsRuleArea() )
|
if( aZone->GetIsRuleArea() )
|
||||||
{
|
{
|
||||||
// Keepout settings
|
// Keepout settings
|
||||||
@ -2645,9 +2642,12 @@ void PCB_IO_KICAD_SEXPR::format( const ZONE* aZone ) const
|
|||||||
if( aZone->GetFillMode() == ZONE_FILL_MODE::HATCH_PATTERN )
|
if( aZone->GetFillMode() == ZONE_FILL_MODE::HATCH_PATTERN )
|
||||||
m_out->Print( "(mode hatch)" );
|
m_out->Print( "(mode hatch)" );
|
||||||
|
|
||||||
|
if( !aZone->IsTeardropArea() )
|
||||||
|
{
|
||||||
m_out->Print( "(thermal_gap %s) (thermal_bridge_width %s)",
|
m_out->Print( "(thermal_gap %s) (thermal_bridge_width %s)",
|
||||||
formatInternalUnits( aZone->GetThermalReliefGap() ).c_str(),
|
formatInternalUnits( aZone->GetThermalReliefGap() ).c_str(),
|
||||||
formatInternalUnits( aZone->GetThermalReliefSpokeWidth() ).c_str() );
|
formatInternalUnits( aZone->GetThermalReliefSpokeWidth() ).c_str() );
|
||||||
|
}
|
||||||
|
|
||||||
if( aZone->GetCornerSmoothingType() != ZONE_SETTINGS::SMOOTHING_NONE )
|
if( aZone->GetCornerSmoothingType() != ZONE_SETTINGS::SMOOTHING_NONE )
|
||||||
{
|
{
|
||||||
@ -2670,10 +2670,12 @@ void PCB_IO_KICAD_SEXPR::format( const ZONE* aZone ) const
|
|||||||
m_out->Print( "(radius %s)", formatInternalUnits( aZone->GetCornerRadius() ).c_str() );
|
m_out->Print( "(radius %s)", formatInternalUnits( aZone->GetCornerRadius() ).c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aZone->GetIslandRemovalMode() != ISLAND_REMOVAL_MODE::ALWAYS )
|
m_out->Print( "(island_removal_mode %d)",
|
||||||
|
static_cast<int>( aZone->GetIslandRemovalMode() ) );
|
||||||
|
|
||||||
|
if( aZone->GetIslandRemovalMode() == ISLAND_REMOVAL_MODE::AREA )
|
||||||
{
|
{
|
||||||
m_out->Print( "(island_removal_mode %d) (island_area_min %s)",
|
m_out->Print( "(island_area_min %s)",
|
||||||
static_cast<int>( aZone->GetIslandRemovalMode() ),
|
|
||||||
formatInternalUnits( aZone->GetMinIslandArea() / pcbIUScale.IU_PER_MM ).c_str() );
|
formatInternalUnits( aZone->GetMinIslandArea() / pcbIUScale.IU_PER_MM ).c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6872,7 +6872,10 @@ ZONE* PCB_IO_KICAD_SEXPR_PARSER::parseZONE( BOARD_ITEM_CONTAINER* aParent )
|
|||||||
std::map<PCB_LAYER_ID, std::vector<SEG>> legacySegs;
|
std::map<PCB_LAYER_ID, std::vector<SEG>> legacySegs;
|
||||||
PCB_LAYER_ID filledLayer;
|
PCB_LAYER_ID filledLayer;
|
||||||
bool addedFilledPolygons = false;
|
bool addedFilledPolygons = false;
|
||||||
bool isStrokedFill = true;
|
|
||||||
|
// This hasn't been supported since V6 or so, but we only stopped writing out the token
|
||||||
|
// in V10.
|
||||||
|
bool isStrokedFill = m_requiredVersion < 20250210;
|
||||||
|
|
||||||
std::unique_ptr<ZONE> zone = std::make_unique<ZONE>( aParent );
|
std::unique_ptr<ZONE> zone = std::make_unique<ZONE>( aParent );
|
||||||
|
|
||||||
@ -7473,9 +7476,8 @@ ZONE* PCB_IO_KICAD_SEXPR_PARSER::parseZONE( BOARD_ITEM_CONTAINER* aParent )
|
|||||||
{
|
{
|
||||||
if( m_showLegacy5ZoneWarning )
|
if( m_showLegacy5ZoneWarning )
|
||||||
{
|
{
|
||||||
wxLogWarning(
|
wxLogWarning( _( "Legacy zone fill strategy is not supported anymore.\n"
|
||||||
_( "Legacy zone fill strategy is not supported anymore.\nZone fills will "
|
"Zone fills will be converted on best-effort basis." ) );
|
||||||
"be converted on best-effort basis." ) );
|
|
||||||
|
|
||||||
m_showLegacy5ZoneWarning = false;
|
m_showLegacy5ZoneWarning = false;
|
||||||
}
|
}
|
||||||
|
@ -72,8 +72,6 @@ ZONE* TEARDROP_MANAGER::createTeardrop( TEARDROP_VARIANT aTeardropVariant,
|
|||||||
teardrop->SetMinThickness( pcbIUScale.mmToIU( 0.0254 ) ); // The minimum zone thickness
|
teardrop->SetMinThickness( pcbIUScale.mmToIU( 0.0254 ) ); // The minimum zone thickness
|
||||||
teardrop->SetPadConnection( ZONE_CONNECTION::FULL );
|
teardrop->SetPadConnection( ZONE_CONNECTION::FULL );
|
||||||
teardrop->SetIsFilled( false );
|
teardrop->SetIsFilled( false );
|
||||||
teardrop->SetZoneName( aTeardropVariant == TD_TYPE_PADVIA ? MAGIC_TEARDROP_PADVIA_NAME
|
|
||||||
: MAGIC_TEARDROP_TRACK_NAME );
|
|
||||||
teardrop->SetIslandRemovalMode( ISLAND_REMOVAL_MODE::NEVER );
|
teardrop->SetIslandRemovalMode( ISLAND_REMOVAL_MODE::NEVER );
|
||||||
teardrop->SetBorderDisplayStyle( ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL,
|
teardrop->SetBorderDisplayStyle( ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL,
|
||||||
pcbIUScale.mmToIU( 0.1 ), true );
|
pcbIUScale.mmToIU( 0.1 ), true );
|
||||||
|
@ -34,8 +34,6 @@
|
|||||||
#include <drc/drc_rtree.h>
|
#include <drc/drc_rtree.h>
|
||||||
#include "teardrop_parameters.h"
|
#include "teardrop_parameters.h"
|
||||||
|
|
||||||
#define MAGIC_TEARDROP_PADVIA_NAME "$teardrop_padvia$"
|
|
||||||
#define MAGIC_TEARDROP_TRACK_NAME "$teardrop_track$"
|
|
||||||
|
|
||||||
// A class to store tracks grouped by layer and netcode
|
// A class to store tracks grouped by layer and netcode
|
||||||
class TRACK_BUFFER
|
class TRACK_BUFFER
|
||||||
|
Loading…
x
Reference in New Issue
Block a user