diff --git a/pcbnew/pcb_parser.cpp b/pcbnew/pcb_parser.cpp index a2a4377f6d..e6177e6162 100644 --- a/pcbnew/pcb_parser.cpp +++ b/pcbnew/pcb_parser.cpp @@ -2694,11 +2694,13 @@ ZONE_CONTAINER* PCB_PARSER::parseZONE_CONTAINER() throw( IO_ERROR, PARSE_ERROR ) break; case T_chamfer: - zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_CHAMFER ); + if( !zone->GetIsKeepout() ) // smoothing has meaning only for filled zones + zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_CHAMFER ); break; case T_fillet: - zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_FILLET ); + if( !zone->GetIsKeepout() ) // smoothing has meaning only for filled zones + zone->SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_FILLET ); break; default: @@ -2708,7 +2710,9 @@ ZONE_CONTAINER* PCB_PARSER::parseZONE_CONTAINER() throw( IO_ERROR, PARSE_ERROR ) break; case T_radius: - zone->SetCornerRadius( parseBoardUnits( "corner radius" ) ); + tmp = parseBoardUnits( "corner radius" ); + if( !zone->GetIsKeepout() ) // smoothing has meaning only for filled zones + zone->SetCornerRadius( tmp ); NeedRIGHT(); break; diff --git a/pcbnew/zones_by_polygon.cpp b/pcbnew/zones_by_polygon.cpp index 4d5663b0de..cdbc1df08b 100644 --- a/pcbnew/zones_by_polygon.cpp +++ b/pcbnew/zones_by_polygon.cpp @@ -589,9 +589,12 @@ int PCB_EDIT_FRAME::Begin_Zone( wxDC* DC ) if( GetToolId() == ID_PCB_KEEPOUT_AREA_BUTT ) { zoneInfo.SetIsKeepout( true ); - // Netcode and netname are irrelevant, + // Netcode, netname and some other settings are irrelevant, // so ensure they are cleared zone->SetNetCode( NETINFO_LIST::UNCONNECTED ); + zoneInfo.SetCornerSmoothingType( ZONE_SETTINGS::SMOOTHING_NONE ); + zoneInfo.SetCornerRadius( 0 ); + edited = InvokeKeepoutAreaEditor( this, &zoneInfo ); } else