Ensure minimum outline size in tuning patterns.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16847
This commit is contained in:
parent
82312a0fae
commit
5e5effaf3a
|
@ -1608,16 +1608,30 @@ SHAPE_LINE_CHAIN PCB_TUNING_PATTERN::getOutline() const
|
||||||
{
|
{
|
||||||
if( m_baseLine )
|
if( m_baseLine )
|
||||||
{
|
{
|
||||||
bool singleSided = m_settings.m_singleSided;
|
int clampedMaxAmplitude = m_settings.m_maxAmplitude;
|
||||||
|
int minAllowedAmplitude = 0;
|
||||||
|
int baselineOffset = m_tuningMode == DIFF_PAIR ? ( m_diffPairGap + m_trackWidth ) / 2 : 0;
|
||||||
|
|
||||||
if( singleSided )
|
if( m_settings.m_cornerStyle == PNS::MEANDER_STYLE::MEANDER_STYLE_ROUND )
|
||||||
|
{
|
||||||
|
minAllowedAmplitude = baselineOffset + m_trackWidth;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int correction = m_trackWidth * tan( 1 - tan( DEG2RAD( 22.5 ) ) );
|
||||||
|
minAllowedAmplitude = baselineOffset + correction;
|
||||||
|
}
|
||||||
|
|
||||||
|
clampedMaxAmplitude = std::max( clampedMaxAmplitude, minAllowedAmplitude );
|
||||||
|
|
||||||
|
if( m_settings.m_singleSided )
|
||||||
{
|
{
|
||||||
SHAPE_LINE_CHAIN clBase = *m_baseLine;
|
SHAPE_LINE_CHAIN clBase = *m_baseLine;
|
||||||
SHAPE_LINE_CHAIN left, right;
|
SHAPE_LINE_CHAIN left, right;
|
||||||
|
|
||||||
if( m_tuningMode != DIFF_PAIR )
|
if( m_tuningMode != DIFF_PAIR )
|
||||||
{
|
{
|
||||||
int amplitude = m_settings.m_maxAmplitude + KiROUND( m_trackWidth / 2.0 );
|
int amplitude = clampedMaxAmplitude + KiROUND( m_trackWidth / 2.0 );
|
||||||
|
|
||||||
SHAPE_LINE_CHAIN chain;
|
SHAPE_LINE_CHAIN chain;
|
||||||
|
|
||||||
|
@ -1633,8 +1647,7 @@ SHAPE_LINE_CHAIN PCB_TUNING_PATTERN::getOutline() const
|
||||||
}
|
}
|
||||||
else if( m_tuningMode == DIFF_PAIR && m_baseLineCoupled )
|
else if( m_tuningMode == DIFF_PAIR && m_baseLineCoupled )
|
||||||
{
|
{
|
||||||
int amplitude =
|
int amplitude = clampedMaxAmplitude + m_trackWidth + KiROUND( m_diffPairGap / 2.0 );
|
||||||
m_settings.m_maxAmplitude + m_trackWidth + KiROUND( m_diffPairGap / 2.0 );
|
|
||||||
|
|
||||||
SHAPE_LINE_CHAIN clCoupled = *m_baseLineCoupled;
|
SHAPE_LINE_CHAIN clCoupled = *m_baseLineCoupled;
|
||||||
SHAPE_LINE_CHAIN chain1, chain2;
|
SHAPE_LINE_CHAIN chain1, chain2;
|
||||||
|
@ -1693,10 +1706,12 @@ SHAPE_LINE_CHAIN PCB_TUNING_PATTERN::getOutline() const
|
||||||
SHAPE_POLY_SET poly;
|
SHAPE_POLY_SET poly;
|
||||||
SHAPE_LINE_CHAIN cl = *m_baseLine;
|
SHAPE_LINE_CHAIN cl = *m_baseLine;
|
||||||
|
|
||||||
int amplitude = m_settings.m_maxAmplitude + KiROUND( m_trackWidth / 2.0 );
|
int amplitude = 0;
|
||||||
|
|
||||||
if( m_tuningMode == DIFF_PAIR )
|
if( m_tuningMode == DIFF_PAIR )
|
||||||
amplitude = m_settings.m_maxAmplitude + m_diffPairGap / 2 + KiROUND( m_trackWidth );
|
amplitude = clampedMaxAmplitude + m_diffPairGap / 2 + KiROUND( m_trackWidth );
|
||||||
|
else
|
||||||
|
amplitude = clampedMaxAmplitude + KiROUND( m_trackWidth / 2.0 );
|
||||||
|
|
||||||
poly.OffsetLineChain( *m_baseLine, amplitude, CORNER_STRATEGY::ROUND_ALL_CORNERS,
|
poly.OffsetLineChain( *m_baseLine, amplitude, CORNER_STRATEGY::ROUND_ALL_CORNERS,
|
||||||
ARC_LOW_DEF, false );
|
ARC_LOW_DEF, false );
|
||||||
|
|
Loading…
Reference in New Issue