router: fix a few more missing translations between pcbnew layers and router layers

This commit is contained in:
Tomasz Wlostowski 2024-10-31 00:15:35 +01:00
parent 4464490ad5
commit d9ae8e44c2
7 changed files with 23 additions and 15 deletions

View File

@ -128,13 +128,12 @@ void HOLE::Move( const VECTOR2I& delta )
}
HOLE* HOLE::MakeCircularHole( const VECTOR2I& pos, int radius )
HOLE* HOLE::MakeCircularHole( const VECTOR2I& pos, int radius, PNS_LAYER_RANGE aLayers )
{
SHAPE_CIRCLE* circle = new SHAPE_CIRCLE( pos, radius );
HOLE* hole = new HOLE( circle );
hole->SetLayers( PNS_LAYER_RANGE( F_Cu, B_Cu ) );
hole->SetLayers( aLayers );
return hole;
}
}; // namespace PNS
}; // namespace PNS

View File

@ -87,7 +87,7 @@ public:
void Move( const VECTOR2I& delta );
static HOLE* MakeCircularHole( const VECTOR2I& pos, int radius );
static HOLE* MakeCircularHole( const VECTOR2I& pos, int radius, PNS_LAYER_RANGE aLayers );
private:
@ -97,4 +97,4 @@ private:
}; // namespace PNS
#endif
#endif

View File

@ -1308,7 +1308,8 @@ std::vector<std::unique_ptr<PNS::VIA>> PNS_KICAD_IFACE_BASE::syncVia( PCB_VIA* a
via->SetIsFree( aVia->GetIsFree() );
via->SetHole( PNS::HOLE::MakeCircularHole( aVia->GetPosition(),
aVia->GetDrillValue() / 2 ) );
aVia->GetDrillValue() / 2,
SetLayersFromPCBNew( aVia->TopLayer(), aVia->BottomLayer() ) ) );
vias.emplace_back( std::move( via ) );
} );

View File

@ -72,8 +72,16 @@ void LINE_PLACER::setWorld( NODE* aWorld )
const VIA LINE_PLACER::makeVia( const VECTOR2I& aP )
{
const PNS_LAYER_RANGE layers( m_sizes.ViaType() == VIATYPE::THROUGH ? F_Cu : m_sizes.GetLayerTop(),
m_sizes.ViaType() == VIATYPE::THROUGH ? B_Cu : m_sizes.GetLayerBottom() );
// fixme: should belong to KICAD_IFACE
auto iface = Router()->GetInterface();
int start = m_sizes.ViaType() == VIATYPE::THROUGH ?iface->GetPNSLayerFromBoardLayer( F_Cu ) : m_sizes.GetLayerTop();
int end = m_sizes.ViaType() == VIATYPE::THROUGH ? iface->GetPNSLayerFromBoardLayer( B_Cu ) : m_sizes.GetLayerBottom();
const PNS_LAYER_RANGE layers(
start ,
end
);
return VIA( aP, layers, m_sizes.ViaDiameter(), m_sizes.ViaDrill(), nullptr, m_sizes.ViaType() );
}

View File

@ -1034,7 +1034,7 @@ const ITEM_SET MULTI_DRAGGER::Traces()
int MULTI_DRAGGER::CurrentLayer() const
{
// fixme: should we care?
return F_Cu;
return 0;
}

View File

@ -166,7 +166,7 @@ VIA* VIA::Clone() const
v->m_diameter = m_diameter;
v->m_drill = m_drill;
v->m_shape = SHAPE_CIRCLE( m_pos, m_diameter / 2 );
v->SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2 ) );
v->SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2, m_layers ) );
v->m_rank = m_rank;
v->m_marker = m_marker;
v->m_viaType = m_viaType;

View File

@ -66,7 +66,7 @@ public:
m_viaType = VIATYPE::THROUGH;
m_isFree = false;
m_isVirtual = false;
SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2 ) );
SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2, PNS_LAYER_RANGE() ) );
}
VIA( const VECTOR2I& aPos, const PNS_LAYER_RANGE& aLayers, int aDiameter, int aDrill,
@ -80,7 +80,7 @@ public:
m_diameter = aDiameter;
m_drill = aDrill;
m_shape = SHAPE_CIRCLE( aPos, aDiameter / 2 );
SetHole( HOLE::MakeCircularHole( m_pos, aDrill / 2 ) );
SetHole( HOLE::MakeCircularHole( m_pos, aDrill / 2, PNS_LAYER_RANGE() ) );
m_viaType = aViaType;
m_isFree = false;
m_isVirtual = false;
@ -96,7 +96,7 @@ public:
m_diameter = aB.m_diameter;
m_shape = SHAPE_CIRCLE( m_pos, m_diameter / 2 );
m_drill = aB.m_drill;
SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2 ) );
SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2, PNS_LAYER_RANGE() ) );
m_marker = aB.m_marker;
m_rank = aB.m_rank;
m_viaType = aB.m_viaType;
@ -118,7 +118,7 @@ public:
m_diameter = aB.m_diameter;
m_shape = SHAPE_CIRCLE( m_pos, m_diameter / 2 );
m_drill = aB.m_drill;
SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2 ) );
SetHole( HOLE::MakeCircularHole( m_pos, m_drill / 2, PNS_LAYER_RANGE() ) );
m_marker = aB.m_marker;
m_rank = aB.m_rank;
m_viaType = aB.m_viaType;