83 std::map<std::string, DRILL_CHART_GROUP> byKey;
84 std::map<std::string, std::set<std::pair<int, int>>> sitesByKey;
91 if( !matchesFilter( op, aSpec.
m_Filter ) )
94 const std::string key =
m_profile.GroupKeyString( op );
95 auto [it, inserted] = byKey.try_emplace( key );
101 group.m_SymbolKey = key;
102 group.m_Diameter = op.m_Diameter;
103 group.m_SizeXY = op.m_SizeXY;
104 group.m_IsSlot = op.m_IsSlot;
105 group.m_NotPlated = op.m_NotPlated;
106 group.m_TopLayer = op.m_TopLayer;
107 group.m_BottomLayer = op.m_BottomLayer;
108 group.m_Kind = op.m_Kind;
109 group.m_Attribute = op.m_Attribute;
110 group.m_StubLength = op.m_StubLength;
111 group.m_Filled = op.m_Filled;
112 group.m_Capped = op.m_Capped;
113 group.m_TopCovered = op.m_TopCovered;
114 group.m_BottomCovered = op.m_BottomCovered;
115 group.m_TopPlugged = op.m_TopPlugged;
116 group.m_BottomPlugged = op.m_BottomPlugged;
117 group.m_TopTented = op.m_TopTented;
118 group.m_BottomTented = op.m_BottomTented;
119 group.m_FrontPostMachining = op.m_FrontPostMachining;
120 group.m_BackPostMachining = op.m_BackPostMachining;
123 group.m_OperationCount++;
128 group.m_Members.push_back( op.Id() );
129 sitesByKey[key].emplace( op.m_Position.x, op.m_Position.y );
142 collect( nonPlated );
145 std::set<std::pair<int, int>> allSites;
147 for(
auto& [key,
group] : byKey )
149 group.m_SiteCount =
static_cast<int>( sitesByKey[key].size() );
151 for(
const auto& [x, y] : sitesByKey[key] )
152 group.m_Sites.emplace_back( x, y );
154 allSites.insert( sitesByKey[key].begin(), sitesByKey[key].
end() );
159 m_totals.m_Sites =
static_cast<int>( allSites.size() );
165 if( a.m_NotPlated != b.m_NotPlated )
166 return !a.m_NotPlated;
168 if( a.m_Diameter != b.m_Diameter )
169 return a.m_Diameter < b.m_Diameter;
171 return a.m_Key < b.m_Key;
178 std::set<DRILL_SPAN> unique;
189 via->LayerPair( &
top, &bottom );
192 unique.emplace(
top, bottom,
false,
false );
200 if( aDrill.size.x <= 0 && aDrill.size.y <= 0 )
203 unique.emplace( aDrill.start, aDrill.end,
true,
false );
206 addBackdrill(
via->Padstack().SecondaryDrill() );
207 addBackdrill(
via->Padstack().TertiaryDrill() );
210 std::vector<DRILL_SPAN> spans;
211 spans.emplace_back(
F_Cu,
B_Cu,
false,
false );
216 spans.push_back( span );