KiCad PCB EDA Suite
Loading...
Searching...
No Matches
zone_utils.h File Reference
#include <memory>
#include <vector>

Go to the source code of this file.

Functions

std::vector< std::unique_ptr< ZONE > > MergeZonesWithSameOutline (std::vector< std::unique_ptr< ZONE > > &&aZones)
 Merges zones with identical outlines and nets on different layers into single multi-layer zones.
 
bool AutoAssignZonePriorities (BOARD *aBoard, PROGRESS_REPORTER *aReporter=nullptr)
 Automatically assign zone priorities based on connectivity analysis of overlapping regions.
 

Function Documentation

◆ AutoAssignZonePriorities()

bool AutoAssignZonePriorities ( BOARD * aBoard,
PROGRESS_REPORTER * aReporter = nullptr )

Automatically assign zone priorities based on connectivity analysis of overlapping regions.

For each pair of overlapping zones, counts pads and vias per-net in the intersection area. The zone whose net has more items in the overlap gets higher priority. When item counts are within 20% of the larger count, the smaller zone gets higher priority. Overlap analysis for each pair runs in parallel via the KiCad thread pool.

Parameters
aBoardthe board whose zone priorities will be reassigned
aReporteroptional progress reporter
Returns
true if any priorities were changed

Definition at line 501 of file zone_utils.cpp.

References assignPrioritiesFromGraph(), findOverlappingPairs(), GetKiCadThreadPool(), result, tp, ufFind(), ufUnion(), and BOARD::Zones().

Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), DIALOG_ZONE_MANAGER::OnAutoAssignClick(), and FABMASTER::orderZones().

◆ MergeZonesWithSameOutline()

std::vector< std::unique_ptr< ZONE > > MergeZonesWithSameOutline ( std::vector< std::unique_ptr< ZONE > > && aZones)

Merges zones with identical outlines and nets on different layers into single multi-layer zones.

Parameters
aZonesis the zones to merge. Ownership of all the zones is taken (some will be returned)
Returns
the merged zones. Ownership of all the returned zones is transferred to the caller.

Definition at line 55 of file zone_utils.cpp.

References SHAPE_LINE_CHAIN::BBox(), SHAPE_LINE_CHAIN::CompareGeometry(), SHAPE_POLY_SET::CPolygon(), ZONE::GetFill(), ZONE::GetLayerSet(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), SHAPE_LINE_CHAIN::PointCount(), RuleAreasHaveSameProps(), ZONE::SetFilledPolysList(), ZONE::SetIsFilled(), ZONE::SetLayerSet(), and ZONE::SetNeedRefill().

Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and ALLEGRO::BOARD_BUILDER::createZones().