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; /**