diff --git a/api/proto/board/board_types.proto b/api/proto/board/board_types.proto index f9c1744df7..fb533a9e41 100644 --- a/api/proto/board/board_types.proto +++ b/api/proto/board/board_types.proto @@ -620,6 +620,7 @@ enum PlacementRuleSourceType PRST_SHEET_NAME = 1; PRST_COMPONENT_CLASS = 2; PRST_GROUP = 3; + PRST_DESIGN_BLOCK = 4; } message RuleAreaSettings diff --git a/pcbnew/api/api_pcb_enums.cpp b/pcbnew/api/api_pcb_enums.cpp index 50b801fefd..3aeee0f302 100644 --- a/pcbnew/api/api_pcb_enums.cpp +++ b/pcbnew/api/api_pcb_enums.cpp @@ -405,6 +405,9 @@ types::PlacementRuleSourceType ToProtoEnum( PLACEMENT_SOURCE_T aValue ) case PLACEMENT_SOURCE_T::GROUP_PLACEMENT: return types::PlacementRuleSourceType::PRST_GROUP; + case PLACEMENT_SOURCE_T::DESIGN_BLOCK: + return types::PlacementRuleSourceType::PRST_DESIGN_BLOCK; + default: wxCHECK_MSG( false, types::PlacementRuleSourceType::PRST_UNKNOWN, "Unhandled case in ToProtoEnum"); @@ -427,6 +430,9 @@ PLACEMENT_SOURCE_T FromProtoEnum( types::PlacementRuleSourceType aValue ) case types::PlacementRuleSourceType::PRST_GROUP: return PLACEMENT_SOURCE_T::GROUP_PLACEMENT; + case types::PlacementRuleSourceType::PRST_DESIGN_BLOCK: + return PLACEMENT_SOURCE_T::DESIGN_BLOCK; + default: wxCHECK_MSG( false, PLACEMENT_SOURCE_T::SHEETNAME, "Unhandled case in FromProtoEnum" ); diff --git a/qa/tests/pcbnew/test_multichannel.cpp b/qa/tests/pcbnew/test_multichannel.cpp index 133f1dec57..95371b158c 100644 --- a/qa/tests/pcbnew/test_multichannel.cpp +++ b/qa/tests/pcbnew/test_multichannel.cpp @@ -85,7 +85,7 @@ BOOST_FIXTURE_TEST_CASE( MultichannelToolRegressions, MULTICHANNEL_TEST_FIXTURE //RULE_AREAS_DATA* raData = m_parentTool->GetData(); - mtTool->QuerySheetsAndComponentClasses(); + mtTool->GeneratePotentialRuleAreas(); auto ruleData = mtTool->GetData(); @@ -127,12 +127,12 @@ BOOST_FIXTURE_TEST_CASE( MultichannelToolRegressions, MULTICHANNEL_TEST_FIXTURE if( ra.m_ruleName.Contains( wxT( "io_drivers_fp" ) ) ) { n_areas_io++; - BOOST_CHECK_EQUAL( ra.m_raFootprints.size(), 31 ); + BOOST_CHECK_EQUAL( ra.m_components.size(), 31 ); } else if( ra.m_ruleName.Contains( wxT( "io_drivers_pp" ) ) ) { n_areas_pp++; - BOOST_CHECK_EQUAL( ra.m_raFootprints.size(), 11 ); + BOOST_CHECK_EQUAL( ra.m_components.size(), 11 ); } else { @@ -161,15 +161,15 @@ BOOST_FIXTURE_TEST_CASE( MultichannelToolRegressions, MULTICHANNEL_TEST_FIXTURE for( const RULE_AREA& targetArea : ruleData->m_areas ) { - if( targetArea.m_area == refArea.m_area ) + if( targetArea.m_zone == refArea.m_zone ) continue; if( !targetArea.m_ruleName.Contains( ruleName ) ) continue; - auto cgRef = CONNECTION_GRAPH::BuildFromFootprintSet( refArea.m_raFootprints ); + auto cgRef = CONNECTION_GRAPH::BuildFromFootprintSet( refArea.m_components ); auto cgTarget = - CONNECTION_GRAPH::BuildFromFootprintSet( targetArea.m_raFootprints ); + CONNECTION_GRAPH::BuildFromFootprintSet( targetArea.m_components ); TMATCH::COMPONENT_MATCHES result; @@ -179,9 +179,9 @@ BOOST_FIXTURE_TEST_CASE( MultichannelToolRegressions, MULTICHANNEL_TEST_FIXTURE BOOST_TEST_MESSAGE( wxString::Format( "topo match: '%s' [%d] -> '%s' [%d] result %d", refArea.m_ruleName.c_str().AsChar(), - static_cast( refArea.m_raFootprints.size() ), + static_cast( refArea.m_components.size() ), targetArea.m_ruleName.c_str().AsChar(), - static_cast( targetArea.m_raFootprints.size() ), status ) ); + static_cast( targetArea.m_components.size() ), status ) ); for( const auto& iter : result ) { @@ -214,7 +214,7 @@ BOOST_FIXTURE_TEST_CASE( MultichannelToolRegressions, MULTICHANNEL_TEST_FIXTURE ruleData->m_compatMap[targetRA].m_doCopy = true; } - int result = mtTool->RepeatLayout( TOOL_EVENT(), refArea->m_area ); + int result = mtTool->RepeatLayout( TOOL_EVENT(), refArea->m_zone ); BOOST_ASSERT( result >= 0 ); }