From a01bd52571783a33ffb72d43719ea945a0e926c2 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Fri, 12 Mar 2021 13:36:06 +0000 Subject: [PATCH] Use default line width when creating polygons. Fixes https://gitlab.com/kicad/code/kicad/issues/7876 --- pcbnew/tools/zone_create_helper.cpp | 41 ++++++++++++++++++----------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/pcbnew/tools/zone_create_helper.cpp b/pcbnew/tools/zone_create_helper.cpp index 61c8b7f345..bd535f0387 100644 --- a/pcbnew/tools/zone_create_helper.cpp +++ b/pcbnew/tools/zone_create_helper.cpp @@ -206,49 +206,58 @@ void ZONE_CREATE_HELPER::commitZone( std::unique_ptr aZone ) case ZONE_MODE::ADD: case ZONE_MODE::SIMILAR: { - BOARD_COMMIT bCommit( &m_tool ); + BOARD_COMMIT commit( &m_tool ); + BOARD* board = m_tool.getModel(); aZone->HatchBorder(); - bCommit.Add( aZone.get() ); + commit.Add( aZone.get() ); - BOARD* board = m_tool.getModel(); std::lock_guard lock( board->GetConnectivity()->GetLock() ); if( !m_params.m_keepout ) { - ZONE_FILLER filler( board, &bCommit ); + ZONE_FILLER filler( board, &commit ); std::vector toFill = { aZone.get() }; if( !filler.Fill( toFill ) ) { - bCommit.Revert(); + commit.Revert(); break; } } - bCommit.Push( _( "Add a zone" ) ); + commit.Push( _( "Add a zone" ) ); m_tool.GetManager()->RunAction( PCB_ACTIONS::selectItem, true, aZone.release() ); break; } case ZONE_MODE::GRAPHIC_POLYGON: { - BOARD_COMMIT bCommit( &m_tool ); - BOARD_ITEM_CONTAINER* parent = m_tool.m_frame->GetModel(); - LSET graphicPolygonsLayers = LSET::AllLayersMask(); + BOARD_COMMIT commit( &m_tool ); + BOARD* board = m_tool.getModel(); + PCB_LAYER_ID layer = m_params.m_layer; + PCB_SHAPE* poly; - graphicPolygonsLayers.reset( Edge_Cuts ).reset( F_CrtYd ).reset( B_CrtYd ); + if( m_tool.m_isFootprintEditor ) + poly = new FP_SHAPE( static_cast( m_tool.m_frame->GetModel() ) ); + else + poly = new PCB_SHAPE(); - auto poly = m_tool.m_isFootprintEditor ? new FP_SHAPE( (FOOTPRINT*) parent ) - : new PCB_SHAPE(); poly->SetShape( S_POLYGON ); - poly->SetFilled( graphicPolygonsLayers.Contains( m_params.m_layer ) ); - poly->SetLayer( m_params.m_layer ); + + if( layer == Edge_Cuts || layer == F_CrtYd || layer == B_CrtYd ) + poly->SetFilled( false ); + else + poly->SetFilled( true ); + + poly->SetWidth( board->GetDesignSettings().GetLineThickness( m_params.m_layer ) ); + poly->SetLayer( layer ); poly->SetPolyShape( *aZone->Outline() ); - bCommit.Add( poly ); + + commit.Add( poly ); m_tool.GetManager()->RunAction( PCB_ACTIONS::selectItem, true, poly ); - bCommit.Push( _( "Add a graphical polygon" ) ); + commit.Push( _( "Add a graphical polygon" ) ); break; }