From d268ccea5bd5bff76263f4fa5715ad4d8f5d9182 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Wed, 12 Jul 2023 12:47:36 +0200 Subject: [PATCH] PCB_VIA::SetLayerSet( LSET aLayerSet ): fix bug: it must consider only copper layers. Its purpose is to initialize the top and the bottom copper layers connected by this via. So only copper layers in LSET must be analyzed. From Master branch --- pcbnew/pcb_track.cpp | 4 ++++ pcbnew/pcb_track.h | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/pcbnew/pcb_track.cpp b/pcbnew/pcb_track.cpp index 98b354ff82..84a9089919 100644 --- a/pcbnew/pcb_track.cpp +++ b/pcbnew/pcb_track.cpp @@ -534,6 +534,10 @@ void PCB_VIA::SetLayerSet( LSET aLayerSet ) for( PCB_LAYER_ID layer : aLayerSet.Seq() ) { + // m_layer and m_bottomLayer are copper layers, so consider only copper layers in aLayerSet + if( !IsCopperLayer( layer ) ) + continue; + if( first ) { m_layer = layer; diff --git a/pcbnew/pcb_track.h b/pcbnew/pcb_track.h index a0904e3830..d65e03443d 100644 --- a/pcbnew/pcb_track.h +++ b/pcbnew/pcb_track.h @@ -412,6 +412,11 @@ public: bool IsOnLayer( PCB_LAYER_ID aLayer ) const override; virtual LSET GetLayerSet() const override; + + /** + * Note SetLayerSet() initialize the first and last copper layers connected by the via. + * So currently SetLayerSet ignore non copper layers + */ virtual void SetLayerSet( LSET aLayers ) override; /**