|
KiCad PCB EDA Suite
|
#include <zone_filler.h>
Public Member Functions | |
| ZONE_FILLER (BOARD *aBoard, COMMIT *aCommit) | |
| ~ZONE_FILLER () | |
| void | SetProgressReporter (PROGRESS_REPORTER *aReporter) |
| PROGRESS_REPORTER * | GetProgressReporter () const |
| bool | Fill (const std::vector< ZONE * > &aZones, bool aCheck=false, wxWindow *aParent=nullptr) |
| Fills the given list of zones. | |
| bool | IsDebug () const |
Private Member Functions | |
| void | addKnockout (BOARD_ITEM *aItem, PCB_LAYER_ID aLayer, int aGap, SHAPE_POLY_SET &aHoles) |
| Add a knockout for a pad or via. | |
| void | addKnockout (BOARD_ITEM *aItem, PCB_LAYER_ID aLayer, int aGap, bool aIgnoreLineWidth, SHAPE_POLY_SET &aHoles) |
| Add a knockout for a graphic item. | |
| void | addHoleKnockout (PAD *aPad, int aGap, SHAPE_POLY_SET &aHoles) |
| Add a knockout for a pad's hole. | |
| void | knockoutThermalReliefs (const ZONE *aZone, PCB_LAYER_ID aLayer, SHAPE_POLY_SET &aFill, std::vector< BOARD_ITEM * > &aThermalConnectionPads, std::vector< PAD * > &aNoConnectionPads) |
| Removes thermal reliefs from the shape for any pads connected to the zone. | |
| void | buildCopperItemClearances (const ZONE *aZone, PCB_LAYER_ID aLayer, const std::vector< PAD * > &aNoConnectionPads, SHAPE_POLY_SET &aHoles, bool aIncludeZoneClearances=true) |
| Removes clearance from the shape for copper items which share the zone's layer but are not connected to it. | |
| void | buildDifferentNetZoneClearances (const ZONE *aZone, PCB_LAYER_ID aLayer, SHAPE_POLY_SET &aHoles) |
| Build clearance knockout holes for higher-priority zones on different nets. | |
| void | subtractHigherPriorityZones (const ZONE *aZone, PCB_LAYER_ID aLayer, SHAPE_POLY_SET &aRawFill) |
| Removes the outlines of higher-proirity zones with the same net. | |
| bool | fillCopperZone (const ZONE *aZone, PCB_LAYER_ID aLayer, PCB_LAYER_ID aDebugLayer, const SHAPE_POLY_SET &aSmoothedOutline, const SHAPE_POLY_SET &aMaxExtents, SHAPE_POLY_SET &aFillPolys) |
| Function fillCopperZone Add non copper areas polygons (pads and tracks with clearance) to a filled copper area used in BuildFilledSolidAreasPolygons when calculating filled areas in a zone Non copper areas are pads and track and their clearance area The filled copper area must be computed before BuildFilledSolidAreasPolygons() call this function just after creating the filled copper area polygon (without clearance areas. | |
| bool | fillNonCopperZone (const ZONE *candidate, PCB_LAYER_ID aLayer, const SHAPE_POLY_SET &aSmoothedOutline, SHAPE_POLY_SET &aFillPolys) |
| void | buildThermalSpokes (const ZONE *box, PCB_LAYER_ID aLayer, const std::vector< BOARD_ITEM * > &aSpokedPadsList, std::deque< SHAPE_LINE_CHAIN > &aSpokes) |
| Function buildThermalSpokes Constructs a list of all thermal spokes for the given zone. | |
| void | buildHatchZoneThermalRings (const ZONE *aZone, PCB_LAYER_ID aLayer, const SHAPE_POLY_SET &aSmoothedOutline, const std::vector< BOARD_ITEM * > &aThermalConnectionPads, SHAPE_POLY_SET &aFillPolys, SHAPE_POLY_SET &aThermalRings) |
| Build thermal rings for pads in hatch zones. | |
| void | connect_nearby_polys (SHAPE_POLY_SET &aPolys, double aDistance) |
| Create strands of zero-width between elements of SHAPE_POLY_SET that are within aDistance of each other. | |
| bool | fillSingleZone (ZONE *aZone, PCB_LAYER_ID aLayer, SHAPE_POLY_SET &aFillPolys) |
| Build the filled solid areas polygons from zone outlines (stored in m_Poly) The solid areas can be more than one on copper layers, and do not have holes ( holes are linked by overlapping segments to the main outline) in order to have drawable (and plottable) filled polygons. | |
| bool | addHatchFillTypeOnZone (const ZONE *aZone, PCB_LAYER_ID aLayer, PCB_LAYER_ID aDebugLayer, SHAPE_POLY_SET &aFillPolys, const SHAPE_POLY_SET &aThermalRings) |
| for zones having the ZONE_FILL_MODE::ZONE_FILL_MODE::HATCH_PATTERN, create a grid pattern in filled areas of aZone, giving to the filled polygons a fill style like a grid | |
| bool | refillZoneFromCache (ZONE *aZone, PCB_LAYER_ID aLayer, SHAPE_POLY_SET &aFillPolys) |
| Refill a zone from cached pre-knockout fill. | |
Private Attributes | |
| BOARD * | m_board |
| SHAPE_POLY_SET | m_boardOutline |
| bool | m_brdOutlinesValid |
| COMMIT * | m_commit |
| PROGRESS_REPORTER * | m_progressReporter |
| int | m_maxError |
| int | m_worstClearance |
| bool | m_debugZoneFiller |
| std::map< std::pair< const ZONE *, PCB_LAYER_ID >, SHAPE_POLY_SET > | m_preKnockoutFillCache |
| std::mutex | m_cacheMutex |
Definition at line 41 of file zone_filler.h.
Definition at line 307 of file zone_filler.cpp.
References ADVANCED_CFG::GetCfg(), BOARD::GetDesignSettings(), m_board, m_brdOutlinesValid, m_commit, ADVANCED_CFG::m_DebugZoneFiller, m_debugZoneFiller, m_maxError, m_progressReporter, and m_worstClearance.
| ZONE_FILLER::~ZONE_FILLER | ( | ) |
Definition at line 321 of file zone_filler.cpp.
|
private |
for zones having the ZONE_FILL_MODE::ZONE_FILL_MODE::HATCH_PATTERN, create a grid pattern in filled areas of aZone, giving to the filled polygons a fill style like a grid
| aZone | is the zone to modify |
| aFillPolys | A reference to a SHAPE_POLY_SET buffer containing the initial filled areas, and after adding the grid pattern, the modified filled areas with holes |
| aThermalRings | Thermal ring geometry used to drop hatch holes that would isolate thermal reliefs from the zone fill. |
Definition at line 3552 of file zone_filler.cpp.
References SHAPE_POLY_SET::AddOutline(), SHAPE_LINE_CHAIN::Append(), SHAPE_LINE_CHAIN::Area(), SHAPE_LINE_CHAIN::BBox(), SHAPE_POLY_SET::BBox(), SHAPE_POLY_SET::BooleanIntersection(), SHAPE_POLY_SET::BooleanSubtract(), BOX2< Vec >::Centre(), SHAPE_POLY_SET::Chamfer(), CHAMFER_ALL_CORNERS, SHAPE_POLY_SET::ClearArcs(), SHAPE_POLY_SET::CloneDropTriangulation(), BOX2< Vec >::Contains(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_POLY_SET::Deflate(), SHAPE_POLY_SET::DeletePolygon(), DUMP_POLYS_TO_COPPER_LAYER, SHAPE_POLY_SET::Fillet(), BOX2< Vec >::GetBottom(), ZONE::GetHatchGap(), ZONE::GetHatchHoleMinArea(), ZONE::GetHatchOrientation(), ZONE::GetHatchSmoothingLevel(), ZONE::GetHatchSmoothingValue(), ZONE::GetHatchThickness(), ZONE::GetMinThickness(), BOX2< Vec >::GetRight(), BOX2< Vec >::GetX(), BOX2< Vec >::GetY(), In10_Cu, In11_Cu, In12_Cu, In14_Cu, SHAPE_LINE_CHAIN::Intersect(), BOX2< Vec >::Intersects(), EDA_ANGLE::IsZero(), KiROUND(), ZONE::LayerProperties(), m_board, SHAPE_LINE_CHAIN::Move(), SHAPE_POLY_SET::Outline(), ZONE::Outline(), SHAPE_POLY_SET::OutlineCount(), pcbIUScale, SHAPE_LINE_CHAIN::PointCount(), SHAPE_LINE_CHAIN_BASE::PointInside(), SHAPE_LINE_CHAIN::Rotate(), SHAPE_POLY_SET::Rotate(), SHAPE_LINE_CHAIN::SetClosed(), SMOOTH_MIN_VAL_MM, SMOOTH_SMALL_VAL_MM, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by fillCopperZone(), and fillNonCopperZone().
|
private |
Add a knockout for a pad's hole.
Definition at line 1486 of file zone_filler.cpp.
References ERROR_OUTSIDE, m_maxError, and PAD::TransformHoleToPolygon().
Referenced by buildCopperItemClearances(), and fillCopperZone().
|
private |
Add a knockout for a graphic item.
The knockout is 'aGap' larger than the item (which might be either the electrical clearance or the board edge clearance).
Definition at line 1518 of file zone_filler.cpp.
References ERROR_INSIDE, ERROR_OUTSIDE, PCB_BARCODE::GetBoundingHull(), m_maxError, PCB_BARCODE_T, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_DIM_RADIAL_T, PCB_FIELD_T, PCB_SHAPE_T, PCB_TABLE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TEXTBOX_T, BOARD_ITEM::SetIsKnockout(), text, BOARD_ITEM::TransformShapeToPolygon(), PCB_DIMENSION_BASE::TransformShapeToPolygon(), PCB_TEXT::TransformTextToPolySet(), and EDA_ITEM::Type().
|
private |
Add a knockout for a pad or via.
The knockout is 'aGap' larger than the pad (which might be either the thermal clearance or the electrical clearance).
Definition at line 1452 of file zone_filler.cpp.
References SHAPE_POLY_SET::Append(), BuildConvexHull(), CONVEXHULL, CUSTOM, ERROR_OUTSIDE, PAD::GetShape(), m_maxError, SHAPE_POLY_SET::NewOutline(), pad, PCB_PAD_T, BOARD_ITEM::TransformShapeToPolygon(), and EDA_ITEM::Type().
Referenced by buildCopperItemClearances(), fillNonCopperZone(), and knockoutThermalReliefs().
|
private |
Removes clearance from the shape for copper items which share the zone's layer but are not connected to it.
Definition at line 1863 of file zone_filler.cpp.
References addHoleKnockout(), addKnockout(), SHAPE_POLY_SET::Append(), CIRCLE, clearance, CLEARANCE_CONSTRAINT, CUSTOM, EDGE_CLEARANCE_CONSTRAINT, Edge_Cuts, PADSTACK::DRILL_PROPS::end, ERROR_OUTSIDE, DRC_ENGINE::EvalRules(), ZONE::GetBoundingBox(), ADVANCED_CFG::GetCfg(), BOARD_CONNECTED_ITEM::GetNetCode(), DRC_CONSTRAINT::GetValue(), HOLE_CLEARANCE_CONSTRAINT, BOX2< Vec >::Inflate(), SHAPE_POLY_SET::Inflate(), BOX2< Vec >::Intersects(), DRC_CONSTRAINT::IsNull(), ZONE::IsTeardropArea(), m_board, BOARD_DESIGN_SETTINGS::m_DRCEngine, m_maxError, m_progressReporter, m_worstClearance, Margin, MINOPTMAX< T >::Min(), PADSTACK::POST_MACHINING_PROPS::mode, NOT_POST_MACHINED, NPTH, pad, PCB_SHAPE_T, PCB_VIA_T, pcbIUScale, PHYSICAL_CLEARANCE_CONSTRAINT, PHYSICAL_HOLE_CLEARANCE_CONSTRAINT, PTH, radius, ROUND_ALL_CORNERS, SHAPE_POLY_SET::Simplify(), PADSTACK::DRILL_PROPS::size, PADSTACK::POST_MACHINING_PROPS::size, PADSTACK::DRILL_PROPS::start, TransformCircleToPolygon(), UNDEFINED_LAYER, UNKNOWN, via, VECTOR2< T >::x, VECTOR2< T >::y, and ZLO_FORCE_NO_ZONE_CONNECTION.
Referenced by fillCopperZone().
|
private |
Build clearance knockout holes for higher-priority zones on different nets.
Builds clearance knockout holes for higher-priority zones on different nets.
Separated from buildCopperItemClearances to allow caching before zone knockouts.
This is separated from buildCopperItemClearances to allow caching before zone knockouts.
Definition at line 2368 of file zone_filler.cpp.
References SHAPE_POLY_SET::Append(), CLEARANCE_CONSTRAINT, ERROR_OUTSIDE, DRC_ENGINE::EvalRules(), ZONE::GetBoundingBox(), ADVANCED_CFG::GetCfg(), DRC_CONSTRAINT::GetValue(), BOX2< Vec >::Inflate(), DRC_CONSTRAINT::IsNull(), ZONE::IsTeardropArea(), m_board, BOARD_DESIGN_SETTINGS::m_DRCEngine, m_maxError, m_worstClearance, MINOPTMAX< T >::Min(), pcbIUScale, PHYSICAL_CLEARANCE_CONSTRAINT, and SHAPE_POLY_SET::Simplify().
Referenced by fillCopperZone().
|
private |
Build thermal rings for pads in hatch zones.
For circular pads, creates an arc ring; for other shapes, creates an inflated ring. Rings are clipped to the zone boundary.
| aThermalRings | Output parameter to collect the thermal ring geometry. Used later to drop hatch holes that would isolate the thermal relief. |
Definition at line 3439 of file zone_filler.cpp.
References SHAPE_POLY_SET::BooleanAdd(), SHAPE_POLY_SET::BooleanIntersection(), SHAPE_POLY_SET::BooleanSubtract(), CIRCLE, ERROR_OUTSIDE, DRC_ENGINE::EvalRules(), DRC_CONSTRAINT::GetValue(), m_board, BOARD_DESIGN_SETTINGS::m_DRCEngine, m_maxError, MINOPTMAX< T >::Min(), MINOPTMAX< T >::Opt(), OVAL, pad, PCB_PAD_T, PCB_VIA_T, THERMAL_RELIEF_GAP_CONSTRAINT, THERMAL_SPOKE_WIDTH_CONSTRAINT, TransformRingToPolygon(), via, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by fillCopperZone().
|
private |
Function buildThermalSpokes Constructs a list of all thermal spokes for the given zone.
Function buildThermalSpokes.
Definition at line 3064 of file zone_filler.cpp.
References SEG::A, std::abs(), ANGLE_0, ANGLE_90, SHAPE_LINE_CHAIN::Append(), SEG::B, center, CIRCLE, EDA_ANGLE::Cos(), CUSTOM, DEGREES_T, epsilon, ERROR_OUTSIDE, DRC_ENGINE::EvalRules(), BOARD_DESIGN_SETTINGS::GetBiggestClearanceValue(), PAD::GetBoundingBox(), PCB_VIA::GetBoundingBox(), ZONE::GetBoundingBox(), BOX2< Vec >::GetCenter(), ZONE::GetFillMode(), ZONE::GetHatchThickness(), BOX2< Vec >::GetHeight(), ZONE::GetLocalClearance(), ZONE::GetMinThickness(), DRC_CONSTRAINT::GetValue(), BOX2< Vec >::GetWidth(), HATCH_PATTERN, BOX2< Vec >::Inflate(), SHAPE_LINE_CHAIN::Intersect(), BOX2< Vec >::Intersects(), KiROUND(), m_board, BOARD_DESIGN_SETTINGS::m_DRCEngine, BOARD_DESIGN_SETTINGS::m_MaxError, m_maxError, MINOPTMAX< T >::Max(), MINOPTMAX< T >::Min(), MINOPTMAX< T >::Opt(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), OVAL, pad, PCB_PAD_T, PCB_VIA_T, VECTOR2< T >::Perpendicular(), VECTOR2< T >::Resize(), SEG::Reverse(), RotatePoint(), SEGMENT, SHAPE_LINE_CHAIN::SetClosed(), PAD::SetOffset(), PAD::SetOrientation(), PAD::SetPosition(), PCB_VIA::SetPosition(), EDA_ANGLE::Sin(), THERMAL_RELIEF_GAP_CONSTRAINT, THERMAL_SPOKE_WIDTH_CONSTRAINT, DRC_CONSTRAINT::Value(), via, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by fillCopperZone().
|
private |
Create strands of zero-width between elements of SHAPE_POLY_SET that are within aDistance of each other.
When we inflate these strands, they will create minimum width bands
Definition at line 2518 of file zone_filler.cpp.
References SHAPE_LINE_CHAIN::Append(), SHAPE_POLY_SET::BBoxFromCaches(), SHAPE_LINE_CHAIN::Clear(), SHAPE_LINE_CHAIN::CPoint(), VERTEX_CONNECTOR::FindResults(), VERTEX_CONNECTOR::GetResults(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), SHAPE_LINE_CHAIN::PointCount(), and result.
Referenced by fillCopperZone().
| bool ZONE_FILLER::Fill | ( | const std::vector< ZONE * > & | aZones, |
| bool | aCheck = false, | ||
| wxWindow * | aParent = nullptr ) |
Fills the given list of zones.
NB: Invalidates connectivity - it is up to the caller to obtain a lock on the connectivity data before calling Fill to prevent access to stale data by other coroutines (for example, ratsnest redraw). This will generally be required if a UI-based progress reporter has been installed.
Caller is also responsible for re-building connectivity afterwards.
Definition at line 343 of file zone_filler.cpp.
References _, SHAPE_POLY_SET::AddOutline(), LSET::AllCuMask(), ALWAYS, AREA, SHAPE_LINE_CHAIN::Area(), SHAPE_POLY_SET::Area(), SHAPE_POLY_SET::BooleanIntersection(), ZONE::CacheTriangulation(), center, SHAPE_POLY_SET::Collide(), KIDIALOG::DoNotShowCheckbox(), PADSTACK::Drill(), PADSTACK::DRILL_PROPS::end, ERROR_OUTSIDE, fillSingleZone(), BOARD_ITEM::GetBoard(), BOX2< Vec >::GetBottom(), ZONE::GetBoundingBox(), ADVANCED_CFG::GetCfg(), BOARD::GetCopperLayerCount(), GetKiCadThreadPool(), ZONE::GetLock(), BOARD_CONNECTED_ITEM::GetNetCode(), BOARD_CONNECTED_ITEM::GetNetname(), BOX2< Vec >::GetRight(), BOX2< Vec >::GetX(), BOX2< Vec >::GetY(), ZONE::HigherPriority(), BOX2< Vec >::Inflate(), LSET::InternalCuMask(), BOX2< Vec >::Intersects(), m_board, m_boardOutline, m_brdOutlinesValid, m_commit, m_debugZoneFiller, m_preKnockoutFillCache, m_progressReporter, m_worstClearance, ADVANCED_CFG::m_ZoneFillIterativeRefill, PROF_TIMER::msecs(), ZONE::Outline(), SHAPE_POLY_SET::OutlineCount(), pad, PCB_VIA_T, refillZoneFromCache(), ZONE::SetFilledPolysList(), ZONE::SetFillFlag(), KIDIALOG::SetOKCancelLabels(), KIDIALOG::ShowModal(), PADSTACK::DRILL_PROPS::start, START_END_ONLY, tp, traceZoneFiller, PADSTACK::UnconnectedLayerMode(), via, ZLO_FORCE_FLASHED, and ZLO_FORCE_NO_ZONE_CONNECTION.
Referenced by KI_TEST::FillZones(), and DIALOG_GLOBAL_EDIT_TEARDROPS::TransferDataFromWindow().
|
private |
Function fillCopperZone Add non copper areas polygons (pads and tracks with clearance) to a filled copper area used in BuildFilledSolidAreasPolygons when calculating filled areas in a zone Non copper areas are pads and track and their clearance area The filled copper area must be computed before BuildFilledSolidAreasPolygons() call this function just after creating the filled copper area polygon (without clearance areas.
| aPcb | the current board |
Definition at line 2603 of file zone_filler.cpp.
References addHatchFillTypeOnZone(), addHoleKnockout(), SHAPE_POLY_SET::AddOutline(), SHAPE_POLY_SET::Area(), SHAPE_POLY_SET::BBox(), SHAPE_POLY_SET::BooleanAdd(), SHAPE_POLY_SET::BooleanIntersection(), SHAPE_POLY_SET::BooleanSubtract(), SHAPE_POLY_SET::BuildBBoxCaches(), buildCopperItemClearances(), buildDifferentNetZoneClearances(), buildHatchZoneThermalRings(), buildThermalSpokes(), CHAMFER_ALL_CORNERS, SHAPE_POLY_SET::CloneDropTriangulation(), connect_nearby_polys(), SHAPE_POLY_SET::Contains(), SHAPE_POLY_SET::Deflate(), SHAPE_POLY_SET::DeletePolygon(), DUMP_POLYS_TO_COPPER_LAYER, epsilon, SHAPE_POLY_SET::Fracture(), BOX2< Vec >::GetBottom(), ADVANCED_CFG::GetCfg(), ZONE::GetFillMode(), ZONE::GetMinThickness(), BOARD_CONNECTED_ITEM::GetNetname(), BOX2< Vec >::GetRight(), BOX2< Vec >::GetSizeMax(), BOX2< Vec >::GetX(), BOX2< Vec >::GetY(), HATCH_PATTERN, In10_Cu, In15_Cu, In16_Cu, In17_Cu, In18_Cu, In1_Cu, In2_Cu, In3_Cu, In4_Cu, In5_Cu, In6_Cu, In7_Cu, In8_Cu, In9_Cu, SHAPE_POLY_SET::Inflate(), knockoutThermalReliefs(), m_board, m_cacheMutex, m_debugZoneFiller, m_maxError, m_preKnockoutFillCache, m_progressReporter, ADVANCED_CFG::m_ZoneFillIterativeRefill, BOX2< Vec >::Merge(), SHAPE_POLY_SET::OutlineCount(), PCB_PAD_T, pcbIUScale, SHAPE_POLY_SET::Polygon(), ROUND_ALL_CORNERS, subtractHigherPriorityZones(), and traceZoneFiller.
Referenced by fillSingleZone().
|
private |
Definition at line 2905 of file zone_filler.cpp.
References addHatchFillTypeOnZone(), addKnockout(), SHAPE_POLY_SET::BooleanSubtract(), CHAMFER_ALL_CORNERS, SHAPE_POLY_SET::ClearArcs(), SHAPE_POLY_SET::Deflate(), epsilon, SHAPE_POLY_SET::Fracture(), ZONE::GetBoundingBox(), ZONE::GetFillMode(), ZONE::GetMinThickness(), HATCH_PATTERN, SHAPE_POLY_SET::Inflate(), m_board, m_maxError, m_progressReporter, pcbIUScale, and ROUND_ALL_CORNERS.
Referenced by fillSingleZone().
|
private |
Build the filled solid areas polygons from zone outlines (stored in m_Poly) The solid areas can be more than one on copper layers, and do not have holes ( holes are linked by overlapping segments to the main outline) in order to have drawable (and plottable) filled polygons.
| aZone | is the zone to fill |
| aFillPolys | A reference to a SHAPE_POLY_SET buffer to store polygons with no holes (holes are linked to main outline by overlapping segments, and these polygons are shrunk by aZone->GetMinThickness() / 2 to be drawn with a outline thickness = aZone->GetMinThickness() aFillPolys are polygons that will be drawn on screen and plotted |
Definition at line 3027 of file zone_filler.cpp.
References ZONE::BuildSmoothedPoly(), F_Cu, fillCopperZone(), fillNonCopperZone(), LSET::InternalCuMask(), ZONE::IsOnCopperLayer(), m_boardOutline, m_brdOutlinesValid, m_debugZoneFiller, m_progressReporter, ZONE::SetNeedRefill(), and UNDEFINED_LAYER.
Referenced by Fill().
|
inline |
Definition at line 48 of file zone_filler.h.
References m_progressReporter.
|
inline |
Definition at line 62 of file zone_filler.h.
References m_debugZoneFiller.
|
private |
Removes thermal reliefs from the shape for any pads connected to the zone.
Does NOT add in spokes, which must be done later.
Definition at line 1584 of file zone_filler.cpp.
References addKnockout(), ALWAYS_FLASHED, SHAPE_POLY_SET::BooleanSubtract(), CIRCLE, clearance, SHAPE_POLY_SET::Collide(), CUSTOM, PADSTACK::DRILL_PROPS::end, ERROR_OUTSIDE, DRC_ENGINE::EvalRules(), DRC_ENGINE::EvalZoneConnection(), FULL, ZONE::GetBoundingBox(), ZONE::GetFillMode(), ZONE::GetLocalClearance(), BOARD_CONNECTED_ITEM::GetNetCode(), DRC_CONSTRAINT::GetValue(), HATCH_PATTERN, BOX2< Vec >::Inflate(), BOX2< Vec >::Intersects(), ZONE::IsTeardropArea(), m_board, BOARD_DESIGN_SETTINGS::m_DRCEngine, m_maxError, m_worstClearance, DRC_CONSTRAINT::m_ZoneConnection, MINOPTMAX< T >::Min(), PADSTACK::POST_MACHINING_PROPS::mode, NONE, NOT_POST_MACHINED, pad, PCB_VIA_T, PHYSICAL_CLEARANCE_CONSTRAINT, PHYSICAL_HOLE_CLEARANCE_CONSTRAINT, PADSTACK::DRILL_PROPS::size, PADSTACK::POST_MACHINING_PROPS::size, PADSTACK::DRILL_PROPS::start, START_END_ONLY, THERMAL, THERMAL_RELIEF_GAP_CONSTRAINT, TransformCircleToPolygon(), UNDEFINED_LAYER, UNKNOWN, via, VECTOR2< T >::x, VECTOR2< T >::y, and ZLO_FORCE_NO_ZONE_CONNECTION.
Referenced by fillCopperZone().
|
private |
Refill a zone from cached pre-knockout fill.
Used during iterative refill to avoid recomputing thermal reliefs and copper clearances. Only re-applies the higher-priority zone knockout with updated fills.
Definition at line 3782 of file zone_filler.cpp.
References SHAPE_POLY_SET::BooleanSubtract(), clearance, SHAPE_POLY_SET::ClearArcs(), SHAPE_POLY_SET::Fracture(), ZONE::GetBoundingBox(), ZONE::GetLocalClearance(), BOARD_CONNECTED_ITEM::GetNetname(), SHAPE_POLY_SET::Inflate(), m_board, m_cacheMutex, m_maxError, m_preKnockoutFillCache, ROUND_ALL_CORNERS, and traceZoneFiller.
Referenced by Fill().
| void ZONE_FILLER::SetProgressReporter | ( | PROGRESS_REPORTER * | aReporter | ) |
Definition at line 326 of file zone_filler.cpp.
References m_commit, and m_progressReporter.
Referenced by DIALOG_GLOBAL_EDIT_TEARDROPS::TransferDataFromWindow().
|
private |
Removes the outlines of higher-proirity zones with the same net.
These zones should be in charge of the fill parameters within their own outlines.
Definition at line 2466 of file zone_filler.cpp.
References SHAPE_POLY_SET::BooleanSubtract(), SHAPE_POLY_SET::ClearArcs(), ZONE::GetAssignedPriority(), ZONE::GetBoundingBox(), m_board, and SHAPE_POLY_SET::Outline().
Referenced by fillCopperZone().
|
private |
Definition at line 172 of file zone_filler.h.
Referenced by addHatchFillTypeOnZone(), buildCopperItemClearances(), buildDifferentNetZoneClearances(), buildHatchZoneThermalRings(), buildThermalSpokes(), Fill(), fillCopperZone(), fillNonCopperZone(), knockoutThermalReliefs(), refillZoneFromCache(), subtractHigherPriorityZones(), and ZONE_FILLER().
|
private |
Definition at line 173 of file zone_filler.h.
Referenced by Fill(), and fillSingleZone().
|
private |
Definition at line 174 of file zone_filler.h.
Referenced by Fill(), fillSingleZone(), and ZONE_FILLER().
|
mutableprivate |
Definition at line 186 of file zone_filler.h.
Referenced by fillCopperZone(), and refillZoneFromCache().
|
private |
Definition at line 175 of file zone_filler.h.
Referenced by Fill(), SetProgressReporter(), and ZONE_FILLER().
|
private |
Definition at line 181 of file zone_filler.h.
Referenced by Fill(), fillCopperZone(), fillSingleZone(), IsDebug(), and ZONE_FILLER().
|
private |
Definition at line 178 of file zone_filler.h.
Referenced by addHoleKnockout(), addKnockout(), addKnockout(), buildCopperItemClearances(), buildDifferentNetZoneClearances(), buildHatchZoneThermalRings(), buildThermalSpokes(), fillCopperZone(), fillNonCopperZone(), knockoutThermalReliefs(), refillZoneFromCache(), and ZONE_FILLER().
|
private |
Definition at line 185 of file zone_filler.h.
Referenced by Fill(), fillCopperZone(), and refillZoneFromCache().
|
private |
Definition at line 176 of file zone_filler.h.
Referenced by buildCopperItemClearances(), Fill(), fillCopperZone(), fillNonCopperZone(), fillSingleZone(), GetProgressReporter(), SetProgressReporter(), and ZONE_FILLER().
|
private |
Definition at line 179 of file zone_filler.h.
Referenced by buildCopperItemClearances(), buildDifferentNetZoneClearances(), Fill(), knockoutThermalReliefs(), and ZONE_FILLER().